diff --git a/app/Arquivo.php b/app/Arquivo.php index 4954ed7dfc4ff43c5f3db7799b6d712336c8f0eb..803bd7eefc4b64bb9130653ac47e3ec9718da95b 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 7c326d33bee5722ff300e5b1e297fbde0d2d20dc..36b4b88462107f41a598bf9ba83b47cb6d38ab6f 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 fcaa741441ea243a54fdb72a9136d0b480cae1b1..8e165fbaebcbc9ebd6a7d7dc733776a85948da12 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 02d7bc7ae3151f7aa4feb0d8897c7e3ec0cdf463..f086f18f624612e54f87a7a08370dc4e5ac41702 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 69221db5916e54655fd79a51fbe622917e09ce08..ec365264bccb53b2a1d931a27d66f7ef98055416 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 21d9ffc7fe3e46c3ee8c3692ac30020633e205de..62e390261928693bf0f74d120887a03619317ca5 100644 --- a/resources/views/projeto/editar.blade.php +++ b/resources/views/projeto/editar.blade.php @@ -262,131 +262,275 @@ @enderror @endif -