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 @@