diff --git a/app/Avaliador.php b/app/Avaliador.php index dc141e35faccb86457a313c3e15e169cff9a42c7..85794fc0449dbb6d8decc8e4dd8c2dc44a5c9bc5 100644 --- a/app/Avaliador.php +++ b/app/Avaliador.php @@ -3,9 +3,11 @@ namespace App; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Avaliador extends Model { + use SoftDeletes; protected $fillable = [ 'status', 'parecer', @@ -16,7 +18,7 @@ class Avaliador extends Model return $this->belongsTo('App\User'); } public function trabalhos(){ - return $this->belongsToMany('App\Trabalho')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao'); + return $this->belongsToMany('App\Trabalho')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at'); } public function eventos(){ return $this->belongsToMany('App\Evento'); diff --git a/app/Http/Controllers/AdministradorController.php b/app/Http/Controllers/AdministradorController.php index 36e340d7f0b09f6524028209d1e332c9d19e8517..fafa2359ad629785943b808d6c19c2e4e1e8f62e 100644 --- a/app/Http/Controllers/AdministradorController.php +++ b/app/Http/Controllers/AdministradorController.php @@ -392,4 +392,8 @@ class AdministradorController extends Controller return redirect()->back(); } + // public function baixarAnexo(Request $request) { + // return Storage::download($request->anexo); + // } + } diff --git a/app/Http/Controllers/AvaliadorController.php b/app/Http/Controllers/AvaliadorController.php index 8c7425fb4c40660c395860f4c3e7da17676bd853..e652cc2d396ac3515e415035baad62543eb21142 100644 --- a/app/Http/Controllers/AvaliadorController.php +++ b/app/Http/Controllers/AvaliadorController.php @@ -9,6 +9,8 @@ use App\Evento; use App\Recomendacao; use App\User; use App\Avaliador; +use Carbon\Carbon; +use Illuminate\Support\Facades\Storage; class AvaliadorController extends Controller { @@ -17,7 +19,7 @@ class AvaliadorController extends Controller return view('avaliador.index'); } - public function editais(){ + public function editais(Request $request){ $user = User::find(Auth::user()->id); $eventos = $user->avaliadors->where('user_id',$user->id)->first()->eventos; @@ -30,7 +32,7 @@ class AvaliadorController extends Controller $user = User::find(Auth::user()->id); $evento = Evento::where('id', $request->evento_id)->first(); - $trabalhos = $user->avaliadors->where('user_id',$user->id)->first()->trabalhos; + $trabalhos = $user->avaliadors->where('user_id',$user->id)->first()->trabalhos->where('evento_id', $request->evento_id); //dd(); @@ -55,17 +57,25 @@ class AvaliadorController extends Controller $evento = Evento::find($request->evento_id); - $trabalhos = $user->avaliadors->where('user_id',$user->id)->first()->trabalhos; - $avaliador = $user->avaliadors->where('user_id',$user->id)->first(); - $trabalho = $avaliador->trabalhos->find($request->trabalho_id); + $trabalhos = $user->avaliadors->where('user_id',$user->id)->first()->trabalhos->where('evento_id', $request->evento_id); + $avaliador = $user->avaliadors->where('user_id',$user->id)->first(); + $trabalho = $avaliador->trabalhos->find($request->trabalho_id); + $trabalho->status = 'Avaliado'; + $trabalho->save(); + $data = Carbon::now('America/Recife'); if($request->anexoParecer == ''){ - $avaliador - ->trabalhos() - ->updateExistingPivot($trabalho->id,['status'=> 1,'parecer'=>$request->textParecer, 'recomendacao'=>$request->recomendacao]); + + $avaliador->trabalhos() + ->updateExistingPivot($trabalho->id,['status'=> 1,'parecer'=>$request->textParecer, 'recomendacao'=>$request->recomendacao, 'created_at' => $data]); }else{ - $avaliador - ->trabalhos() - ->updateExistingPivot($trabalho->id,['status'=> 1,'parecer'=>$request->textParecer,'AnexoParecer'=> $request->anexoParecer, 'recomendacao'=>$request->recomendacao]); + $anexoParecer = $request->anexoParecer; + $path = 'anexoParecer/' . $avaliador->id . $trabalho->id . '/'; + $nome = "parecer.pdf"; + Storage::putFileAs($path, $anexoParecer, $nome); + $anexoParecer = $path . $nome; + + $avaliador->trabalhos() + ->updateExistingPivot($trabalho->id,['status'=> 1,'parecer'=>$request->textParecer,'AnexoParecer'=> $anexoParecer, 'recomendacao'=>$request->recomendacao, 'created_at' => $data]); } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index ffcb60c79abf068b0e5fd0d8e799b109a9981c2f..25a05d6d442a871d6e1234af5f92731f944b8894 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Auth; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Storage; class HomeController extends Controller { @@ -51,6 +52,6 @@ class HomeController extends Controller } public function downloadArquivo(Request $request){ - return response()->download(storage_path('app/'.$request->file)); + return Storage::download($request->file); } } diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php index e219498790443401d1e83e57ee7b68f67714c61f..18abebdd84e5c1dbf7e00ae504c2f9180662c97d 100644 --- a/app/Http/Controllers/TrabalhoController.php +++ b/app/Http/Controllers/TrabalhoController.php @@ -79,7 +79,7 @@ class TrabalhoController extends Controller //Relaciona o projeto criado com o proponente que criou o projeto $proponente = Proponente::where('user_id', Auth::user()->id)->first(); //$trabalho->proponentes()->save($proponente); - //dd($coordenador); + //dd($coordenador->id); $trabalho = "trabalho"; if($evento->inicioSubmissao > $mytime){ if($mytime >= $evento->fimSubmissao){ @@ -104,7 +104,8 @@ class TrabalhoController extends Controller 'funcaoParticipante.*' => ['required', 'string'], 'nomePlanoTrabalho.*' => ['required', 'string'], 'anexoProjeto' => ['required', 'file', 'mimes:pdf', 'max:2000000'], - //'anexoCONSU' => ['required', 'file', 'mimes:pdf', 'max:2000000'], + 'anexoCONSU' => ['required', 'file', 'mimes:pdf', 'max:2000000'], + 'anexoComiteEtica' => ['required', 'file', 'mimes:pdf', 'max:2000000'], 'anexoLatterCoordenador' => ['required', 'file', 'mimes:pdf', 'max:2000000'], 'anexoPlanilha' => ['required', 'file', 'mimes:pdf', 'max:2000000'], 'anexoPlanoTrabalho.*' => ['required', 'file', 'mimes:pdf', 'max:2000000'], @@ -123,9 +124,10 @@ class TrabalhoController extends Controller 'data' => $mytime, 'evento_id' => $request->editalId, 'avaliado' => 0, + 'status' => 'Submetido' , 'proponente_id' => $proponente->id, //Anexos - 'anexoDecisaoCONSU' => $request->anexoCONSU, + 'anexoCONSU' => $request->anexoCONSU, 'anexoProjeto' => $request->anexoProjeto, 'anexoAutorizacaoComiteEtica' => $request->anexoComiteEtica, 'justificativaAutorizacaoEtica' => $request->justificativaAutorizacaoEtica, @@ -166,6 +168,7 @@ class TrabalhoController extends Controller 'data' => $mytime, 'evento_id' => $request->editalId, 'avaliado' => 0, + 'status' => 'Submetido' , 'proponente_id' => $proponente->id, //Anexos 'anexoProjeto' => $request->anexoProjeto, @@ -287,6 +290,8 @@ class TrabalhoController extends Controller $subareas = Subarea::all(); $funcaoParticipantes = FuncaoParticipantes::all(); $participantes = Participante::where('trabalho_id', $id)->get(); + $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get(); + $users = User::whereIn('id', $participantesUsersIds)->get(); $arquivos = Arquivo::where('trabalhoId', $id)->get(); return view('projeto.editar')->with(['projeto' => $projeto, @@ -294,6 +299,7 @@ class TrabalhoController extends Controller 'areas' => $areas, 'subAreas' => $subareas, 'edital' => $edital, + 'users' => $users, 'funcaoParticipantes' => $funcaoParticipantes, 'participantes' => $participantes, 'arquivos' => $arquivos,]); @@ -401,10 +407,11 @@ class TrabalhoController extends Controller $trabalho->update(); // criando novos participantes que podem ter sido adicionados - $participantes = Participante::where('trabalho_id', $trabalho->id)->get(); + $participantesUsersIds = Participante::where('trabalho_id', '=', $trabalho->id)->select('user_id')->get(); + $users = User::whereIn('id', $participantesUsersIds)->get(); $emailParticipantes = []; - foreach ($participantes as $participante) { - array_push($emailParticipantes, $participante->user->email); + foreach ($users as $user) { + array_push($emailParticipantes, $user->email); } foreach ($request->emailParticipante as $key => $value) { @@ -443,7 +450,7 @@ class TrabalhoController extends Controller //atualizando os participantes que já estão no projeto e planos de trabalho se enviados if (in_array($request->emailParticipante[$key], $emailParticipantes, false)) { $user = User::where('email', $request->emailParticipante[$key])->first(); - $participante::where([['user_id', '=', $user->id], ['trabalho_id', '=', $trabalho->id]]); + $participante = Participante::where([['user_id', '=', $user->id], ['trabalho_id', '=', $trabalho->id]])->first(); $user->name = $request->nomeParticipante[$key]; $user->update(); @@ -451,34 +458,37 @@ class TrabalhoController extends Controller $participante->funcao_participante_id = $request->funcaoParticipante[$key]; $participante->update(); - // //atualizando planos de trabalho incompleto - // dd($request); - // if (!(is_null($request->anexoPlanoTrabalho[1]))) { - // $arquivo = Arquivo::where('participanteId', $participante->id)->first(); - // Storage::delete($arquivo->nome); - // $arquivo->delete(); - - // $path = 'trabalhos/' . $request->editalId . '/' . $trabalho->id .'/'; - // $nome = $request->nomePlanoTrabalho[$key] .".pdf"; - // $file = $request->anexoPlanoTrabalho[$key]; - // Storage::putFileAs($path, $file, $nome); - - // $arquivo = new Arquivo(); - // $arquivo->nome = $path . $nome; - // $arquivo->trabalhoId = $trabalho->id; - // $arquivo->data = $mytime; - // $arquivo->participanteId = $participante->id; - // $arquivo->versaoFinal = true; - // $arquivo->save(); - // } + //atualizando planos de trabalho + if (array_key_exists($key, $request->anexoPlanoTrabalho)) { + if (!(is_null($request->anexoPlanoTrabalho[$key]))) { + $arquivo = Arquivo::where('participanteId', $participante->id)->first(); + Storage::delete($arquivo->nome); + $arquivo->delete(); + + $path = 'trabalhos/' . $request->editalId . '/' . $trabalho->id .'/'; + $nome = $request->nomePlanoTrabalho[$key] .".pdf"; + $file = $request->anexoPlanoTrabalho[$key]; + Storage::putFileAs($path, $file, $nome); + + $arquivo = new Arquivo(); + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $trabalho->id; + $arquivo->data = $mytime; + $arquivo->participanteId = $participante->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + } + } } } // Atualizando possiveis usuários removidos - $participantes = Participante::where('trabalho_id', $trabalho->id)->get(); + $participantesUsersIds = Participante::where('trabalho_id', '=', $trabalho->id)->select('user_id')->get(); + $users = User::whereIn('id', $participantesUsersIds)->get(); - foreach ($participantes as $participante) { - if (!(in_array($participante->user->email, $request->emailParticipante, false))) { + foreach ($users as $user) { + if (!(in_array($user->email, $request->emailParticipante, false))) { + $participante = Participante::where([['user_id', '=', $user->id], ['trabalho_id', '=', $trabalho->id]])->first(); $arquivo = Arquivo::where('participanteId', $participante->id); Storage::delete($arquivo->nome); $arquivo->delete(); @@ -495,9 +505,12 @@ class TrabalhoController extends Controller * @param \App\Trabalho $trabalho * @return \Illuminate\Http\Response */ - public function destroy(Trabalho $trabalho) + public function destroy(Request $request) { - // + $trabalho = Trabalho::find($request->id); + //dd($trabalho); + $trabalho->delete(); + return redirect()->back(); } public function novaVersao(Request $request){ diff --git a/app/Trabalho.php b/app/Trabalho.php index 42dc83f80a5d467d7296b3b259a2429d4eb153a4..a8efdcb80f839d204a039290f112aba0b6a95cbd 100644 --- a/app/Trabalho.php +++ b/app/Trabalho.php @@ -3,9 +3,12 @@ namespace App; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class Trabalho extends Model { + + use SoftDeletes; /** * The attributes that are mass assignable. * @@ -15,6 +18,7 @@ class Trabalho extends Model 'titulo', 'data', 'aprovado', + 'status', 'decisaoCONSU', 'pontuacaoPlanilha', 'linkGrupoPesquisa', @@ -37,6 +41,8 @@ class Trabalho extends Model 'pivot', ]; + + public function recurso(){ return $this->hasMany('App\Recurso', 'trabalhoId'); } @@ -85,6 +91,6 @@ class Trabalho extends Model return $this->belongsTo('App\CoordenadorComissao'); } public function avaliadors(){ - return $this->belongsToMany('App\Avaliador')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao'); + return $this->belongsToMany('App\Avaliador')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at'); } } diff --git a/composer.lock b/composer.lock index 3c89259638b85f00e2bbf2de86e92bbd5b952a39..321d82aba5f4a905480e52b555d28dbbb59f500f 100644 --- a/composer.lock +++ b/composer.lock @@ -1215,16 +1215,16 @@ }, { "name": "opis/closure", - "version": "3.5.3", + "version": "3.5.4", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "cac47092144043d5d676e2e7cf8d0d2f83fc89ca" + "reference": "1d0deef692f66dae5d70663caee2867d0971306b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/cac47092144043d5d676e2e7cf8d0d2f83fc89ca", - "reference": "cac47092144043d5d676e2e7cf8d0d2f83fc89ca", + "url": "https://api.github.com/repos/opis/closure/zipball/1d0deef692f66dae5d70663caee2867d0971306b", + "reference": "1d0deef692f66dae5d70663caee2867d0971306b", "shasum": "" }, "require": { @@ -1272,7 +1272,7 @@ "serialization", "serialize" ], - "time": "2020-05-25T09:32:45+00:00" + "time": "2020-06-07T11:41:29+00:00" }, { "name": "paragonie/random_compat", @@ -1321,16 +1321,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.7.3", + "version": "1.7.4", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" + "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3", + "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3", "shasum": "" }, "require": { @@ -1372,7 +1372,7 @@ "php", "type" ], - "time": "2020-03-21T18:07:53+00:00" + "time": "2020-06-07T10:40:07+00:00" }, { "name": "psr/container", @@ -3316,27 +3316,27 @@ }, { "name": "vlucas/phpdotenv", - "version": "v3.6.5", + "version": "v3.6.6", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "8b64814b356b96a90d2bc942b152c80d8888b8d4" + "reference": "4669484ccbc38fe7c4e0c50456778f2010566aad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8b64814b356b96a90d2bc942b152c80d8888b8d4", - "reference": "8b64814b356b96a90d2bc942b152c80d8888b8d4", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/4669484ccbc38fe7c4e0c50456778f2010566aad", + "reference": "4669484ccbc38fe7c4e0c50456778f2010566aad", "shasum": "" }, "require": { "php": "^5.4 || ^7.0 || ^8.0", - "phpoption/phpoption": "^1.5", - "symfony/polyfill-ctype": "^1.9" + "phpoption/phpoption": "^1.5.2", + "symfony/polyfill-ctype": "^1.16" }, "require-dev": { "ext-filter": "*", "ext-pcre": "*", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0" }, "suggest": { "ext-filter": "Required to use the boolean validator.", @@ -3375,7 +3375,7 @@ "env", "environment" ], - "time": "2020-05-23T09:42:03+00:00" + "time": "2020-06-02T14:08:54+00:00" } ], "packages-dev": [ diff --git a/database/migrations/2020_02_05_123048_create_trabalhos_table.php b/database/migrations/2020_02_05_123048_create_trabalhos_table.php index 23c64fa98c5154eb9ea4334034e32f6b9764a2c9..c31232c176b3f60c4a353e157cf43443be4702da 100644 --- a/database/migrations/2020_02_05_123048_create_trabalhos_table.php +++ b/database/migrations/2020_02_05_123048_create_trabalhos_table.php @@ -16,7 +16,8 @@ class CreateTrabalhosTable extends Migration Schema::create('trabalhos', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('titulo'); - $table->boolean('aprovado')->nullable(); + $table->string('status')->nullable(); + $table->string('aprovado')->nullable(); $table->string('linkGrupoPesquisa'); $table->string('linkLattesEstudante'); $table->string('pontuacaoPlanilha'); @@ -35,6 +36,7 @@ class CreateTrabalhosTable extends Migration $table->unsignedBigInteger('evento_id'); $table->unsignedBigInteger('coordenador_id'); $table->unsignedBigInteger('proponente_id'); + $table->softDeletes(); $table->timestamps(); }); diff --git a/database/migrations/2020_05_23_054805_create_avaliadors_table.php b/database/migrations/2020_05_23_054805_create_avaliadors_table.php index 516f282b34484918807954dc504eec3ab23d34d3..849ca938f02b5a29fe5a8adf69f08f982bfafe76 100644 --- a/database/migrations/2020_05_23_054805_create_avaliadors_table.php +++ b/database/migrations/2020_05_23_054805_create_avaliadors_table.php @@ -16,6 +16,7 @@ class CreateAvaliadorsTable extends Migration Schema::create('avaliadors', function (Blueprint $table) { $table->bigIncrements('id'); $table->timestamps(); + $table->softDeletes(); $table->unsignedBigInteger('user_id')->nullable(); $table->foreign('user_id')->references('id')->on('users'); diff --git a/database/migrations/2020_05_26_223341_create_avaliadors_trabalhos_table.php b/database/migrations/2020_05_26_223341_create_avaliadors_trabalhos_table.php index 215b2c9c9589db1a41e64e5ef7990075434b6383..dbba43959f9a1aae7c74911dd51bf06b028b55ca 100644 --- a/database/migrations/2020_05_26_223341_create_avaliadors_trabalhos_table.php +++ b/database/migrations/2020_05_26_223341_create_avaliadors_trabalhos_table.php @@ -21,6 +21,7 @@ class CreateAvaliadorsTrabalhosTable extends Migration $table->string('AnexoParecer')->nullable(); $table->boolean('status')->nullable(); $table->string('recomendacao')->nullable(); + $table->softDeletes(); $table->unsignedBigInteger('trabalho_id'); $table->unsignedBigInteger('avaliador_id'); diff --git a/database/seeds/RecomendacaoSeeder.php b/database/seeds/RecomendacaoSeeder.php index 5636313d596866ff618e2b2cc937428d2395e64c..95edd41e4919c023563e6d5e5740998f700d78c1 100644 --- a/database/seeds/RecomendacaoSeeder.php +++ b/database/seeds/RecomendacaoSeeder.php @@ -12,13 +12,19 @@ class RecomendacaoSeeder extends Seeder public function run() { DB::table('recomendacaos')->insert([ - 'nome' => 'Aceitacao Forte', + 'nome' => 'Recomendação Forte', ]); DB::table('recomendacaos')->insert([ - 'nome' => 'Aceitacao Média', + 'nome' => 'Recomendação Fraca', ]); DB::table('recomendacaos')->insert([ - 'nome' => 'Aceitacao Fraca', + 'nome' => 'Neutro', + ]); + DB::table('recomendacaos')->insert([ + 'nome' => 'Rejeição Fraca', + ]); + DB::table('recomendacaos')->insert([ + 'nome' => 'Rejeição Forte', ]); } } diff --git a/database/seeds/TrabalhoSeeder.php b/database/seeds/TrabalhoSeeder.php index af818c2454ae99f7d35a55a152e524c530c8b279..1427fd8b96f8feb1a385ea430a88ec54a6f579e0 100644 --- a/database/seeds/TrabalhoSeeder.php +++ b/database/seeds/TrabalhoSeeder.php @@ -34,7 +34,7 @@ class TrabalhoSeeder extends Seeder 'linkGrupoPesquisa' =>'link', 'linkLattesEstudante' =>'link', 'pontuacaoPlanilha' =>'link', - 'aprovado' =>0, + 'status' =>'Submetido', 'data' =>'2020-01-01', 'anexoProjeto' =>'Álgebra', 'anexoDecisaoCONSU' =>'Álgebra', @@ -55,7 +55,7 @@ class TrabalhoSeeder extends Seeder 'linkGrupoPesquisa' =>'link', 'linkLattesEstudante' =>'link', 'pontuacaoPlanilha' =>'link', - 'aprovado' =>0, + 'status' =>'Submetido', 'data' =>'2020-01-01', 'anexoProjeto' =>'Álgebra', 'anexoDecisaoCONSU' =>'Álgebra', diff --git a/resources/views/administrador/index.blade.php b/resources/views/administrador/index.blade.php index 17f67e4b97b5ef398d9e263560f199e7d7722b06..365296953b179e12fdeb06ed397b157d52b59758 100644 --- a/resources/views/administrador/index.blade.php +++ b/resources/views/administrador/index.blade.php @@ -26,7 +26,18 @@ - + + +
+