diff --git a/app/AreaTematica.php b/app/AreaTematica.php new file mode 100644 index 0000000000000000000000000000000000000000..21d71b48569cdf0aaefdb383cdcdeb7024121323 --- /dev/null +++ b/app/AreaTematica.php @@ -0,0 +1,17 @@ +hasMany('App\Trabalho', 'area_tematica_id'); + } + +} diff --git a/app/Arquivo.php b/app/Arquivo.php index cfb7b7a13c275250ffd075d7d70a2a26696f15a0..197c57f01c16b128b19004a5e1993c10762b2ed4 100755 --- a/app/Arquivo.php +++ b/app/Arquivo.php @@ -32,4 +32,8 @@ class Arquivo extends Model public function avaliadors(){ return $this->belongsToMany('App\Avaliador', 'avaliadors_plano_trabalho')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at'); } + + public function avaliacao_relatorios(){ + return $this->hasMany('App\AvaliacaoRelatorio', 'arquivo_id'); + } } diff --git a/app/AvaliacaoRelatorio.php b/app/AvaliacaoRelatorio.php new file mode 100644 index 0000000000000000000000000000000000000000..780195604a9f83b37607a419a8fbf394fc4badc7 --- /dev/null +++ b/app/AvaliacaoRelatorio.php @@ -0,0 +1,19 @@ +belongsTo(Arquivo::class, 'arquivo_id', 'id'); + } + public function user(){ + return $this->belongsTo(User::class, 'user_id', 'id'); + } +} diff --git a/app/Http/Controllers/AdministradorController.php b/app/Http/Controllers/AdministradorController.php index 2b206b8c18d61abaaac41099f49af46fe727ff96..6a284a9b7518fd181a3fb8536f397d1ce8f5c250 100755 --- a/app/Http/Controllers/AdministradorController.php +++ b/app/Http/Controllers/AdministradorController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\AvaliacaoRelatorio; use App\Notificacao; use App\Substituicao; use Illuminate\Http\Request; @@ -111,7 +112,21 @@ class AdministradorController extends Controller $avalSelecionadosId = $trabalho->avaliadors->pluck('id'); $avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get(); $trabalho->aval = $avalProjeto; - + // Usuarios que possuem avaliações de relatório + //$avaliacoesRelatorio = [];->join('users','users.id','=','candidatos.user_id') + $AvalRelatParcial = []; + $AvalRelatFinal = []; + foreach($trabalho->participantes as $participante) { + $avals = AvaliacaoRelatorio::where('arquivo_id', $participante->planoTrabalho->id)->get(); + foreach($avals as $aval){ + if($aval->tipo == "Parcial"){ + array_push($AvalRelatParcial,$aval); + }else{ + array_push($AvalRelatFinal,$aval); + } + } + } + // $grandeAreas = GrandeArea::orderBy('nome')->get(); $hoje = Carbon::today('America/Recife'); @@ -124,7 +139,10 @@ class AdministradorController extends Controller 'substituicoesPendentes' => $substituicoesPendentes, 'substituicoesProjeto' => $substituicoesProjeto, 'grandeAreas' => $grandeAreas, + 'AvalRelatParcial' => $AvalRelatParcial, + 'AvalRelatFinal' => $AvalRelatFinal, 'hoje' => $hoje,]); + } public function showProjetos(Request $request){ diff --git a/app/Http/Controllers/AreaTematicaController.php b/app/Http/Controllers/AreaTematicaController.php new file mode 100644 index 0000000000000000000000000000000000000000..5e8e8c6a98f9949e55dd2a3eec459399fdb152c8 --- /dev/null +++ b/app/Http/Controllers/AreaTematicaController.php @@ -0,0 +1,51 @@ +delete(); + + return redirect( route('grandearea.index') )->with(['mensagem' => 'Área Tematica excluida com sucesso']); + } + + public function update(Request $request, $id) + { + $areaTematica = AreaTematica::find($id); + $areaTematica->nome = $request->nome; + $areaTematica->update(); + + return redirect( route('grandearea.index') )->with(['mensagem' => 'Área Tematica editada com sucesso']); + } + + public function edit($id) + { + $areaTematica = AreaTematica::find($id); + return view('areaTematica.editar')->with(['areaTematica' => $areaTematica]); + } + + public function create() + { + return view('areaTematica.create'); + } + + public function store(Request $request) + { + $validatedData = $request->validate([ + 'nome' => 'required', + ]); + + $areaTematica = new AreaTematica(); + $areaTematica->nome = $request->nome; + $areaTematica->save(); + + return redirect( route('grandearea.index') )->with(['mensagem' => 'Área Tematica cadastrada com sucesso']); + } +} diff --git a/app/Http/Controllers/AvaliacaoRelatorioController.php b/app/Http/Controllers/AvaliacaoRelatorioController.php new file mode 100644 index 0000000000000000000000000000000000000000..655018180852756509514f5d7e1b796b88d3d3da --- /dev/null +++ b/app/Http/Controllers/AvaliacaoRelatorioController.php @@ -0,0 +1,137 @@ +trabalho_id)->get(); + $avaliacoes = AvaliacaoRelatorio::where('user_id',$request->user_id)->get(); + $trabalho = Trabalho::find($request->trabalho_id); + $evento = $trabalho->evento; + $hoje = \Carbon\Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); + if($evento->dt_fimRelatorioParcial < $hoje && $hoje<$evento->dt_inicioRelatorioFinal){ + $tipoRelatorio="Parcial"; + }else{ + $tipoRelatorio="Final"; + } + + return view('avaliacaoRelatorio.listar', ["avaliacoes"=>$avaliacoes,"trabalho"=>$trabalho,"planos"=>$planos,"evento"=>$evento,"tipoRelatorio"=>$tipoRelatorio]); + } + + public function index(Request $request){ + + $avaliacoes = AvaliacaoRelatorio::where('user_id',Auth::user()->id)->get(); + $hoje = \Carbon\Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); + + return view('avaliacaoRelatorio.index', ["avaliacoes"=>$avaliacoes,"hoje"=>$hoje]); + } + + public function listarProjeto(Request $request){ + + $planos = Arquivo::where('trabalhoId',$request->trabalho_id)->get(); + $avaliacoes = AvaliacaoRelatorio::where('user_id',$request->user_id)->get(); + $trabalho = Trabalho::find($request->trabalho_id); + + return view('avaliacaoRelatorio.listar', ["avaliacoes"=>$avaliacoes,"trabalho"=>$trabalho,"planos"=>$planos]); + } + + public function listarGeral(Request $request){ + + $planos = Arquivo::all(); + $avaliacoes = AvaliacaoRelatorio::where('user_id',$request->user_id)->get(); + + return view('avaliacaoRelatorio.listar', ["avaliacoes"=>$avaliacoes,"planos"=>$planos]); + } + + + + public function criar(Request $request){ + $validatedData = $request->validate([ + 'nota' => ['required', 'integer',], + 'comentario' => ['required'], + ]); + $avaliacao = AvaliacaoRelatorio::find($request->avaliacao_id); + + if($request->arquivo !=null){ + $pasta = 'planoTrabalho/' . $request->plano_id . 'avaliacao/' . $request->avaliacao_id; + $avaliacao->arquivoAvaliacao = Storage::putFileAs($pasta, $request->arquivo, "AvaliacaoRelatorio.pdf"); + + } + $plano = Arquivo::find($request->plano_id); + $avaliacao->nota = $request->nota; + $avaliacao->comentario = $request->comentario; + $avaliacao->update(); + + $planos = Arquivo::where('trabalhoId',$request->trabalho_id)->get(); + $avaliacoes = AvaliacaoRelatorio::where('user_id',$request->user_id)->get(); + $trabalho = Trabalho::find($request->trabalho_id); + $evento = $trabalho->evento; + $hoje = \Carbon\Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); + if($evento->dt_fimRelatorioParcial < $hoje && $hoje<$evento->dt_inicioRelatorioFinal){ + $tipoRelatorio="Parcial"; + }else{ + $tipoRelatorio="Final"; + } + + return view('avaliacaoRelatorio.listar', ["avaliacoes"=>$avaliacoes,"trabalho"=>$trabalho,"planos"=>$planos,"evento"=>$evento,"tipoRelatorio"=>$tipoRelatorio, + 'sucesso' => 'Avaliação do relatório '.$tipoRelatorio." do plano ".$plano->titulo.' realizada com sucesso.']); + } + + public function atribuicaoAvaliador(Request $request){ + + $trabalho = Trabalho::find($request->trabalho_id); + foreach ($trabalho->participantes as $participante){ + $avaliadoresId= $request->input('avaliadores_'.$participante->planoTrabalho->id.'_id'); + // utilizado desta forma pois a versão do PHP 7.2 é preciso que o $array usado na função count($array) não pode ser um valor NULL. + $numeroDeItens = is_countable( $avaliadoresId ) ? count( $avaliadoresId ) : 0; + + for ($i = 0; $i < $numeroDeItens; $i++){ + $avaliacao = AvaliacaoRelatorio::create([ + 'tipo'=>$request->tipo_relatorio, + 'comentario'=>'', + 'nota'=>null, + 'user_id'=>$avaliadoresId[$i], + 'arquivo_id'=>$participante->planoTrabalho->id, + ]); + $avaliacao->save(); + if(Avaliador::where('user_id',$avaliadoresId[$i])->get()->count()==0){ + $userTemp = User::find($avaliadoresId[$i]); + if($userTemp->instituicao==null || $userTemp->instituicao == "UFAPE" || $userTemp->instituicao == "Universidade Federal do Agreste de Pernambuco"){ + $tipoAvaliador = "Interno"; + }else{ + $tipoAvaliador = "Externo"; + } + $avaliador = new Avaliador(); + $avaliador->tipo = $tipoAvaliador; + $avaliador->user_id = $avaliadoresId[$i]; + $avaliador->save(); + } + } + } + return redirect()->back(); + } + +} diff --git a/app/Http/Controllers/GrandeAreaController.php b/app/Http/Controllers/GrandeAreaController.php index 66126253066503b0e95d2f50273bb59f6eb5b45f..13ba68a57b994ad9c5b03787b00d2724e8a3deba 100755 --- a/app/Http/Controllers/GrandeAreaController.php +++ b/app/Http/Controllers/GrandeAreaController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\AreaTematica; use Illuminate\Http\Request; use App\GrandeArea; use App\Area; @@ -16,7 +17,8 @@ class GrandeAreaController extends Controller public function index() { $grandesAreas = GrandeArea::orderBy('nome')->get(); - return view('naturezas.grandeArea.index')->with(['grandesAreas' => $grandesAreas]); + $areasTematicas = AreaTematica::orderBy('nome')->get(); + return view('naturezas.grandeArea.index')->with(['grandesAreas' => $grandesAreas, 'areasTematicas' => $areasTematicas]); } /** diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php index a6913985e4514dcab17bee2a9f93d9169dec07df..2b07f9be8d9b4d360da7cc127765eb76cf83fbd8 100755 --- a/app/Http/Controllers/TrabalhoController.php +++ b/app/Http/Controllers/TrabalhoController.php @@ -9,6 +9,7 @@ use Auth; use App\Area; use App\User; use App\Evento; +use App\AreaTematica; use App\Arquivo; use App\Coautor; use App\Revisor; @@ -88,6 +89,7 @@ class TrabalhoController extends Controller { $edital = Evento::find($id); $grandeAreas = GrandeArea::orderBy('nome')->get(); + $areaTematicas = AreaTematica::orderBy('nome')->get(); $funcaoParticipantes = FuncaoParticipantes::orderBy('nome')->get(); $proponente = Proponente::where('user_id', Auth::user()->id)->first(); @@ -108,6 +110,7 @@ class TrabalhoController extends Controller 'rascunho' => $rascunho, 'enum_turno' => Participante::ENUM_TURNO, 'estados' => $this->estados, + 'areaTematicas' => $areaTematicas, ]); } @@ -398,6 +401,7 @@ class TrabalhoController extends Controller } $edital = Evento::find($projeto->evento_id); $grandeAreas = GrandeArea::all(); + $areaTematicas = AreaTematica::orderBy('nome')->get(); $areas = Area::all(); $subareas = Subarea::all(); $funcaoParticipantes = FuncaoParticipantes::all(); @@ -420,6 +424,7 @@ class TrabalhoController extends Controller 'arquivos' => $arquivos, 'enum_turno' => Participante::ENUM_TURNO, 'estados' => $this->estados, + 'areaTematicas' => $areaTematicas, ]); } diff --git a/app/Trabalho.php b/app/Trabalho.php index 15092d67f88c8db8377296d1420cdd7b720e882b..4cf04c391a08b09853c3a1947837e96029661799 100755 --- a/app/Trabalho.php +++ b/app/Trabalho.php @@ -38,6 +38,7 @@ class Trabalho extends Model 'coordenador_id', 'proponente_id', 'pivot', + 'area_tematica_id', ]; @@ -64,6 +65,10 @@ class Trabalho extends Model return $this->belongsTo('App\SubArea'); } + public function areaTematica(){ + return $this->belongsTo('App\AreaTematica'); + } + public function autor(){ return $this->belongsTo('App\User', 'autorId'); } diff --git a/database/migrations/2022_05_02_184435_avaliacao_relatorio.php b/database/migrations/2022_05_02_184435_avaliacao_relatorio.php new file mode 100644 index 0000000000000000000000000000000000000000..51be064403be0d0732033492869bd6e2d48975a6 --- /dev/null +++ b/database/migrations/2022_05_02_184435_avaliacao_relatorio.php @@ -0,0 +1,42 @@ +bigIncrements('id'); + + $table->integer('user_id'); + $table->integer('arquivo_id'); + $table->integer('nota')->nullable(); + $table->text('comentario')->nullable(); + $table->string('arquivoAvaliacao')->nullable(); + $table->enum('tipo', ['Parcial', 'Final']); + + + $table->foreign('user_id')->references('id')->on('users'); + $table->foreign('arquivo_id')->references('id')->on('arquivos'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('avaliacao_relatorios'); + } +} diff --git a/database/migrations/2022_05_18_055323_create_area_tematicas_table.php b/database/migrations/2022_05_18_055323_create_area_tematicas_table.php new file mode 100644 index 0000000000000000000000000000000000000000..2610eaf20a379a12cc460af394714ffbd3daeb13 --- /dev/null +++ b/database/migrations/2022_05_18_055323_create_area_tematicas_table.php @@ -0,0 +1,33 @@ +bigIncrements('id'); + $table->string('nome'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('area_tematicas'); + } +} diff --git a/database/migrations/2022_05_18_055612_add_area_tematica_to_trabalhos_table.php b/database/migrations/2022_05_18_055612_add_area_tematica_to_trabalhos_table.php new file mode 100644 index 0000000000000000000000000000000000000000..7d70abcceba31e529b486065f1db808a070ec0f5 --- /dev/null +++ b/database/migrations/2022_05_18_055612_add_area_tematica_to_trabalhos_table.php @@ -0,0 +1,33 @@ +integer('area_tematica_id')->nullable(); + $table->foreign('area_tematica_id')->references('id')->on('area_tematicas'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('trabalhos', function (Blueprint $table) { + // + }); + } +} diff --git a/database/seeds/AreaTematicaSeeder.php b/database/seeds/AreaTematicaSeeder.php new file mode 100644 index 0000000000000000000000000000000000000000..b5baef1bf60fb59c10e5b5211ecd5f7311831121 --- /dev/null +++ b/database/seeds/AreaTematicaSeeder.php @@ -0,0 +1,30 @@ +insert([ + 'nome' => 'Erradicação da Pobreza' + ]); + DB::table('area_tematicas')->insert([ + 'nome' => 'Fome zero e agricultura sustentável' + ]); + DB::table('area_tematicas')->insert([ + 'nome' => 'Saúde e bem-estar' + ]); + DB::table('area_tematicas')->insert([ + 'nome' => 'Educação de qualidade' + ]); + DB::table('area_tematicas')->insert([ + 'nome' => 'Igualdade de gênero' + ]); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index d0e7420a808c153796763be7e37bdfe0f7e7bf37..0cee7d7ccd6bc8c5bf1edf2cba2310af8cdab5f6 100755 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -25,6 +25,7 @@ class DatabaseSeeder extends Seeder $this->call(NaturezaSeeder::class); $this->call(RecomendacaoSeeder::class); $this->call(AvaliadorSeeder::class); + $this->call(AreaTematicaSeeder::class); // $this->call(UsersTableSeeder::class); diff --git a/resources/views/administrador/analisarProposta.blade.php b/resources/views/administrador/analisarProposta.blade.php index b1241ace6f9643cb5cb1723b5c5ceba326888a9d..66a85d6c2a40af7ec1f9d51d1f0b7544143d9bef 100644 --- a/resources/views/administrador/analisarProposta.blade.php +++ b/resources/views/administrador/analisarProposta.blade.php @@ -3,6 +3,8 @@ @section('content') @php $grandesAreas = \App\GrandeArea::all(); + $hoje = \Carbon\Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); @endphp
@@ -24,7 +26,9 @@
{{$trabalho->titulo}}
-
{{$evento->nome}}
+
{{$evento->nome}}
+
@@ -36,11 +40,13 @@
-
Área de Ensino
+
Área de Ensino
+
{{App\GrandeArea::where('id', $trabalho->grande_area_id)->first()->nome}} > {{App\Area::where('id', $trabalho->area_id)->first()->nome}} - @if(App\SubArea::where('id', $trabalho->sub_area_id)->first() != null)> {{App\SubArea::where('id', $trabalho->sub_area_id)->first()->nome}}@endif + @if(App\SubArea::where('id', $trabalho->sub_area_id)->first() != null) + > {{App\SubArea::where('id', $trabalho->sub_area_id)->first()->nome}}@endif
@@ -57,36 +63,39 @@
-
Informações do Proponente
+
Informações do + Proponente

-

Nome: {{ App\Proponente::find($trabalho->proponente_id)->user->name }}

+

+ Nome: {{ App\Proponente::find($trabalho->proponente_id)->user->name }}

Lattes: @if(App\Proponente::where('id', $trabalho->proponente_id)->first()->linkLattes != null) - {{ App\Proponente::where('id', $trabalho->proponente_id)->first()->linkLattes }} @endif
@if($evento->tipo != "PIBEX") -
-
- Grupo de Pesquisa: - {{ $trabalho->linkGrupoPesquisa }} -
+
+
+ Grupo de Pesquisa: + {{ $trabalho->linkGrupoPesquisa }} +
-
-
- Valor da Planilha de Pontuação: - {{$trabalho->pontuacaoPlanilha}} -
+
+
+ Valor da Planilha de Pontuação: + {{$trabalho->pontuacaoPlanilha}} +
@endif @if($trabalho->modalidade != null)
@@ -101,7 +110,6 @@
-
@@ -110,9 +118,10 @@
Discentes
-
+
@if($substituicoesPendentes->count() > 0) - Substituições Pendentes + Substituições + Pendentes @else Substituições/Desligamentos @@ -129,28 +138,33 @@
{{$participante->user->name}}
- Informações + Informações
- + Remover
-