From 72f53e8f2a8a69e68b6352f080b4b09806862114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9?= Date: Thu, 20 May 2021 17:57:46 -0300 Subject: [PATCH] editar projeto --- app/Arquivo.php | 6 +- app/Http/Controllers/TrabalhoController.php | 283 ++++++- app/Participante.php | 4 + app/Trabalho.php | 2 +- ...20_02_05_123048_create_trabalhos_table.php | 8 +- resources/views/projeto/editar.blade.php | 715 +++++++++++++----- routes/web.php | 2 +- 7 files changed, 805 insertions(+), 215 deletions(-) diff --git a/app/Arquivo.php b/app/Arquivo.php index 4954ed7..803bd7e 100644 --- a/app/Arquivo.php +++ b/app/Arquivo.php @@ -12,10 +12,14 @@ class Arquivo extends Model * @var array */ protected $fillable = [ - 'nome', 'versao', 'versaoFinal', 'data', 'trabalhoId', + 'nome', 'versao', 'versaoFinal', 'data', 'trabalhoId', 'participanteId' ]; public function trabalho(){ return $this->belongsTo('App\Trabalho', 'trabalhoId'); } + + public function participante() { + return $this->belongsTo('App\Participante', 'participanteId'); + } } diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php index 7c326d3..36b4b88 100644 --- a/app/Http/Controllers/TrabalhoController.php +++ b/app/Http/Controllers/TrabalhoController.php @@ -397,6 +397,68 @@ class TrabalhoController extends Controller public function armazenarAnexosFinais($request, $pasta, $trabalho, $evento){ + // Checando se é um novo trabalho ou uma edição + + if ($trabalho->anexoProjeto != null) { + // Anexo Projeto + if(isset($request->anexoProjeto)){ + if(Storage::disk()->exists($trabalho->anexoProjeto)) { + Storage::delete($trabalho->anexoProjeto); + } + $trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf'); + } + + //Anexo Decisão CONSU + if( $evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') { + if(isset($request->anexoCONSU)){ + if(Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) { + Storage::delete($trabalho->anexoDecisaoCONSU); + } + $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoCONSU, 'CONSU.pdf'); + } + } + + //Autorização ou Justificativa + if( isset($request->anexoComiteEtica)){ + if(Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) { + Storage::delete($trabalho->anexoAutorizacaoComiteEtica); + } + $trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, 'Comite_de_etica.pdf'); + + } elseif( isset($request->justificativaAutorizacaoEtica)){ + if(Storage::disk()->exists($trabalho->justificativaAutorizacaoEtica)) { + Storage::delete($trabalho->justificativaAutorizacaoEtica); + } + $trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf'); + } + + //Anexo Lattes + if( isset($request->anexoLattesCoordenador)){ + if(Storage::disk()->exists($trabalho->anexoLattesCoordenador)) { + Storage::delete($trabalho->anexoLattesCoordenador); + } + $trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf'); + } + + //Anexo Planilha + if( isset($request->anexoPlanilha)){ + if(Storage::disk()->exists($trabalho->anexoPlanilhaPontuacao)) { + Storage::delete($trabalho->anexoPlanilhaPontuacao); + } + $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilha, "Planilha.". $request->file('anexoPlanilha')->extension()); + } + + // Anexo grupo pesquisa + if(isset($request->grupoPesquisa)){ + if(Storage::disk()->exists($trabalho->anexoGrupoPesquisa)) { + Storage::delete($trabalho->anexoGrupoPesquisa); + } + $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoPlanilha, "Grupo_de_pesquisa.". $request->file('grupoPesquisa')->extension()); + } + + return $trabalho; + } + // Anexo Projeto if(isset($request->anexoProjeto)){ $trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf'); @@ -432,8 +494,6 @@ class TrabalhoController extends Controller $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoPlanilha, "Grupo_de_pesquisa.". $request->file('grupoPesquisa')->extension()); } - $trabalho->update(); - return $trabalho; } /** @@ -495,7 +555,9 @@ class TrabalhoController extends Controller 'users' => $users, 'funcaoParticipantes' => $funcaoParticipantes, 'participantes' => $participantes, - 'arquivos' => $arquivos,]); + 'arquivos' => $arquivos, + 'enum_turno' => Participante::ENUM_TURNO, + ]); } /** @@ -989,23 +1051,22 @@ class TrabalhoController extends Controller $projeto = $this->atribuirDados($request, $edital); $projeto->save(); - // Salvando anexos no storage - - $pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id; - - $projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital); + // Email de submissão $subject = "Submissão de Trabalho"; $proponente = Auth()->user(); Mail::to($proponente->email)->send(new SubmissaoTrabalho($proponente, $subject, $edital, $projeto)); - + // Salvando participantes $this->salvarParticipantes($request, $edital, $projeto); dd("foi"); } - public function atribuirDados(Request $request, $edital) { - $projeto = new Trabalho(); + public function atribuirDados(Request $request, $edital, Trabalho $projeto = null) { + if ($projeto == null) { + $projeto = new Trabalho(); + } + $proponente = User::find(auth()->user()->id)->proponentes; $hoje = now(); @@ -1021,21 +1082,182 @@ class TrabalhoController extends Controller $projeto->evento_id = $request->editalId; $projeto->status = 'Submetido'; $projeto->proponente_id = $proponente->id; - //Anexos - $projeto->anexoProjeto = $request->anexoProjeto; - $projeto->anexoAutorizacaoComiteEtica = $request->anexoComiteEtica; - $projeto->justificativaAutorizacaoEtica = $request->justificativaAutorizacaoEtica; - $projeto->anexoLattesCoordenador = $request->anexoLattesCoordenador; - $projeto->anexoPlanilhaPontuacao = $request->anexoPlanilha; - if($edital->tipo == 'PIBIC' || $edital->tipo == 'PIBIC-EM'){ - $projeto->anexoDecisaoCONSU = $request->anexoCONSU; - } + // Salvando anexos no storage + $pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id; + + $projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital); + return $projeto; } - public function salvarParticipantes(Request $request, $edital, $projeto) { + public function salvarParticipantes(Request $request, $edital, $projeto, $edicao = false) { + if ($edicao) { + + $participantes = $projeto->participantes; + $participantesPermanecem = collect(); + + foreach ($request->participante_id as $key => $id) { + // Novo participante + if ($id == 0) { + $userParticipante = User::where('email', $request->emailParticipante[$key])->first(); + + $participante = new Participante(); + + if($userParticipante == null){ + $passwordTemporario = Str::random(8); + + $usuario = new User(); + $usuario->email = $request->emailParticipante[$key]; + $usuario->password = bcrypt($passwordTemporario); + $usuario->usuarioTemp = false; + $usuario->name = $request->nomeParticipante[$key]; + $usuario->tipo = 'participante'; + $usuario->instituicao = $request->universidade[$key]; + $usuario->cpf = $request->cpf[$key]; + $usuario->celular = $request->celular[$key]; + + $endereco = new Endereco(); + $endereco->rua = $request->rua[$key]; + $endereco->numero = $request->numero[$key]; + $endereco->bairro = $request->bairro[$key]; + $endereco->cidade = $request->cidade[$key]; + $endereco->uf = $request->uf[$key]; + $endereco->cep = $request->cep[$key]; + $endereco->complemento = $request->complemento[$key]; + $endereco->save(); + + $usuario->enderecoId = $endereco->id; + + $usuario->save(); + + $participante->user_id = $usuario->id; + $participante->trabalho_id = $projeto->id; + $participante->funcao_participante_id = $request->funcaoParticipante[$key]; + $participante->confirmacao_convite = true; + $participante->rg = $request->rg[$key]; + $participante->data_de_nascimento = $request->data_de_nascimento[$key]; + $participante->curso = $request->curso[$key]; + $participante->turno = $request->turno[$key]; + $participante->ordem_prioridade = $request->ordem_prioridade[$key]; + $participante->periodo_atual = $request->periodo_cursado[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + $participante->media_do_curso = $request->media_geral_curso[$key]; + $participante->save(); + + + $subject = "Participante de Projeto"; + Mail::to($request->emailParticipante[$key])->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject)); + } else { + + $participante->user_id = $userParticipante->id; + $participante->trabalho_id = $projeto->id; + $participante->funcao_participante_id = $request->funcaoParticipante[$key]; + $participante->confirmacao_convite = true; + $participante->rg = $request->rg[$key]; + $participante->data_de_nascimento = $request->data_de_nascimento[$key]; + $participante->curso = $request->curso[$key]; + $participante->turno = $request->turno[$key]; + $participante->ordem_prioridade = $request->ordem_prioridade[$key]; + $participante->periodo_atual = $request->periodo_cursado[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + $participante->media_do_curso = $request->media_geral_curso[$key]; + $participante->save(); + + $subject = "Participante de Projeto"; + Mail::to($request->emailParticipante[$key]) + ->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto)); + + } + + if($request->nomePlanoTrabalho[$key] != null){ + $usuario = User::where('email', $request->emailParticipante[$key])->first(); + $participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first(); + + $path = 'trabalhos/' . $edital->id . '/' . $projeto->id .'/'; + $nome = $request->nomePlanoTrabalho[$key] .".pdf"; + $file = $request->anexoPlanoTrabalho[$key]; + Storage::putFileAs($path, $file, $nome); + + $agora = now(); + $arquivo = new Arquivo(); + $arquivo->titulo = $request->nomePlanoTrabalho[$key]; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $projeto->id; + $arquivo->data = $agora; + $arquivo->participanteId = $participante->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + + } + // Editado + } elseif ($id > 0) { + // Removo dos cantidatos excluidos + $participante = Participante::find($id); + $participantesPermanecem->push($participante); + $usuario = $participante->user; + $endereco = $usuario->endereco; + + $usuario->usuarioTemp = false; + $usuario->name = $request->nomeParticipante[$key]; + $usuario->tipo = 'participante'; + $usuario->instituicao = $request->universidade[$key]; + $usuario->cpf = $request->cpf[$key]; + $usuario->celular = $request->celular[$key]; + + $usuario->update(); + + $endereco->rua = $request->rua[$key]; + $endereco->numero = $request->numero[$key]; + $endereco->bairro = $request->bairro[$key]; + $endereco->cidade = $request->cidade[$key]; + $endereco->uf = $request->uf[$key]; + $endereco->cep = $request->cep[$key]; + $endereco->complemento = $request->complemento[$key]; + $endereco->update(); + + $participante->rg = $request->rg[$key]; + $participante->data_de_nascimento = $request->data_de_nascimento[$key]; + $participante->curso = $request->curso[$key]; + $participante->turno = $request->turno[$key]; + $participante->ordem_prioridade = $request->ordem_prioridade[$key]; + $participante->periodo_atual = $request->periodo_cursado[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + $participante->media_do_curso = $request->media_geral_curso[$key]; + $participante->update(); + + if($request->anexoPlanoTrabalho != null && array_key_exists($key, $request->anexoPlanoTrabalho) && $request->anexoPlanoTrabalho[$key] != null){ + + $planoAtual = $participante->planoTrabalho; + if(Storage::disk()->exists($planoAtual->nome)) { + Storage::delete($planoAtual->nome); + } + $planoAtual->delete(); + + $path = 'trabalhos/' . $edital->id . '/' . $projeto->id .'/'; + $nome = $request->nomePlanoTrabalho[$key] .".pdf"; + $file = $request->anexoPlanoTrabalho[$key]; + Storage::putFileAs($path, $file, $nome); + + $agora = now(); + $arquivo = new Arquivo(); + $arquivo->titulo = $request->nomePlanoTrabalho[$key]; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $projeto->id; + $arquivo->data = $agora; + $arquivo->participanteId = $participante->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + } + } + } + // Excluidos + $participantesExcluidos = $participantes->diff($participantesPermanecem); + foreach ($participantesExcluidos as $participante) { + $participante->delete(); + } + } if($request->emailParticipante != null) { foreach ($request->emailParticipante as $key => $email) { $userParticipante = User::where('email', $email)->first(); @@ -1130,4 +1352,23 @@ class TrabalhoController extends Controller } } } + + public function atualizar(Request $request, $id) { + $edital = Evento::find($request->editalId); + $hoje = now(); + + $projeto = Trabalho::find($id); + + if (!($edital->inicioSubmissao < $hoje && $edital->fimSubmissao >= $hoje)) { + return redirect()->route('inicial')->with(['error'=> 0, 'mensagem' => 'As submissões para o edital '. $edital->titulo .' foram encerradas.']); + } + + $projeto = $this->atribuirDados($request, $edital, $projeto); + $projeto->update(); + + // Salvando participantes + $this->salvarParticipantes($request, $edital, $projeto, true); + + dd("foi"); + } } \ No newline at end of file diff --git a/app/Participante.php b/app/Participante.php index fcaa741..8e165fb 100644 --- a/app/Participante.php +++ b/app/Participante.php @@ -18,4 +18,8 @@ class Participante extends Model public function trabalhos(){ return $this->belongsToMany('App\Trabalho', 'trabalho_participante'); } + + public function planoTrabalho() { + return $this->hasOne('App\Arquivo', 'participanteId'); + } } diff --git a/app/Trabalho.php b/app/Trabalho.php index 02d7bc7..f086f18 100644 --- a/app/Trabalho.php +++ b/app/Trabalho.php @@ -83,7 +83,7 @@ class Trabalho extends Model return $this->hasMany('App\PlanoTrabalho'); } public function participantes(){ - return $this->belongsToMany('App\Participante', 'trabalho_participante'); + return $this->hasMany('App\Participante', 'trabalho_id'); } public function proponente(){ return $this->belongsTo('App\Proponente'); 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 69221db..ec36526 100644 --- a/database/migrations/2020_02_05_123048_create_trabalhos_table.php +++ b/database/migrations/2020_02_05_123048_create_trabalhos_table.php @@ -23,11 +23,11 @@ class CreateTrabalhosTable extends Migration $table->string('pontuacaoPlanilha'); $table->date('data')->nullable(); //Anexos - $table->string('anexoProjeto'); + $table->string('anexoProjeto')->nullable(); $table->string('anexoDecisaoCONSU')->nullable(); - $table->string('anexoPlanilhaPontuacao'); - $table->string('anexoLattesCoordenador'); - $table->string('anexoGrupoPesquisa'); + $table->string('anexoPlanilhaPontuacao')->nullable(); + $table->string('anexoLattesCoordenador')->nullable(); + $table->string('anexoGrupoPesquisa')->nullable(); $table->string('anexoAutorizacaoComiteEtica')->nullable(); $table->string('justificativaAutorizacaoEtica')->nullable(); //chaves estrangeiras diff --git a/resources/views/projeto/editar.blade.php b/resources/views/projeto/editar.blade.php index 21d9ffc..62e3902 100644 --- a/resources/views/projeto/editar.blade.php +++ b/resources/views/projeto/editar.blade.php @@ -262,131 +262,275 @@ @enderror @endif -

Participantes

- + {{-- Participantes --}}
@foreach($participantes as $participante) - @foreach($users as $user) - @if($participante->user_id === $user->id) -
-
-

Dados do participante

-
-
- - - @error('nomeParticipante') +
+
+

Dados do participante

+
Dados pessoais
+ +
+
+ + + @error('nomeParticipante.'.$projeto->id) + + {{ $message }} + + @enderror +
+
+ + + @error('emailParticipante.'.$projeto->id) + + {{ $message }} + + @enderror +
+
+ + + @error('funcaoParticipante') {{ $message }} - @enderror + @enderror +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
-
- - - @error('emailParticipante') - - {{ $message }} - - @enderror +
+
+
+
+ + +
+
+
+
+
+
+
Endereço do participante
+
-
- - +
+
+ + +
-
-
-
Possui plano de trabalho?
- - - +
+
+
+ + +
+
+ + +
+
+ + +
-
- - - +
+
+
+
+ + +
+
+ + +
+
+ + +
-
- @foreach ($arquivos as $arquivo) - @if($arquivo->participanteId === $participante->id) - -
Dados do plano de trabalho
- Plano de trabalho atual +
-
-
-
-
- - - - @error('nomePlanoTrabalho') - - {{ $message }} - - @enderror -
- {{-- Arquivo --}} -
- -
-
- Selecione um arquivo: -
-
- - -
-
- @error('anexoPlanoTrabalho') - - {{ $message }} - - @enderror +
+
Dados do curso do participante
+
+
+
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
Possui plano de trabalho?
+ {{dd($participantes[1]->user->email)}} + + + +
+
Dados do plano de trabalho
+
+
+
+
+
+ + + + + @error('nomePlanoTrabalho') + + {{ $message }} + + @enderror +
+ {{-- Arquivo --}} +
+ plano de trabalho atual +
+
+ Selecione um arquivo:
-
- - - +
+ +
+ @error('anexoPlanoTrabalho') + + {{ $message }} + + @enderror
- @endif - @endforeach +
+
+
+ +
- @endif - @endforeach @endforeach
- Participantes + +
@@ -418,18 +562,38 @@ @endsection diff --git a/routes/web.php b/routes/web.php index d28093d..6a39069 100644 --- a/routes/web.php +++ b/routes/web.php @@ -102,7 +102,7 @@ Route::prefix('avaliador')->name('avaliador.')->group(function(){ Route::get( '/edital/{id}/projetos', 'TrabalhoController@projetosDoEdital' )->name('projetos.edital'); Route::get( '/projeto/{id}/visualizar', 'TrabalhoController@show' )->name('trabalho.show'); Route::get( '/projeto/{id}/editar', 'TrabalhoController@edit' )->name('trabalho.editar'); - Route::post( '/projeto/{id}/atualizar', 'TrabalhoController@update' )->name('trabalho.update'); + Route::post( '/projeto/{id}/atualizar', 'TrabalhoController@atualizar' )->name('trabalho.update'); Route::get( '/projeto/{id}/excluir', 'TrabalhoController@destroy' )->name('trabalho.destroy'); Route::get( '/projeto/{id}/excluirParticipante','TrabalhoController@excluirParticipante')->name('trabalho.excluirParticipante'); -- GitLab