From 3d0b79750b2847fe7e069673b2acf626e6ebb8b4 Mon Sep 17 00:00:00 2001 From: Yuri Resende Date: Sat, 29 Apr 2023 22:59:04 -0300 Subject: [PATCH] =?UTF-8?q?Vinculando=20a=20adi=C3=A7=C3=A3o=20de=20integr?= =?UTF-8?q?ante=20a=20de=20um=20discente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/TrabalhoController.php | 4101 +++++++++-------- app/Http/Requests/StoreTrabalho.php | 10 +- .../administrador/analisarProposta.blade.php | 2 +- .../evento/formulario/finalizar.blade.php | 3 + .../evento/formulario/integrantes.blade.php | 28 +- .../evento/formulario/participantes.blade.php | 60 +- .../views/evento/submeterTrabalho.blade.php | 9 +- 7 files changed, 2120 insertions(+), 2093 deletions(-) diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php index b6a4afb..39f3b6e 100755 --- a/app/Http/Controllers/TrabalhoController.php +++ b/app/Http/Controllers/TrabalhoController.php @@ -1,2050 +1,2053 @@ - 'Acre', - 'AL' => 'Alagoas', - 'AP' => 'Amapá', - 'AM' => 'Amazonas', - 'BA' => 'Bahia', - 'CE' => 'Ceará', - 'DF' => 'Distrito Federal', - 'ES' => 'Espirito Santo', - 'GO' => 'Goiás', - 'MA' => 'Maranhão', - 'MS' => 'Mato Grosso do Sul', - 'MT' => 'Mato Grosso', - 'MG' => 'Minas Gerais', - 'PA' => 'Pará', - 'PB' => 'Paraíba', - 'PR' => 'Paraná', - 'PE' => 'Pernambuco', - 'PI' => 'Piauí', - 'RJ' => 'Rio de Janeiro', - 'RN' => 'Rio Grande do Norte', - 'RS' => 'Rio Grande do Sul', - 'RO' => 'Rondônia', - 'RR' => 'Roraima', - 'SC' => 'Santa Catarina', - 'SP' => 'São Paulo', - 'SE' => 'Sergipe', - 'TO' => 'Tocantins', - ); - - public function index($id) - { - $edital = Evento::find($id); - $grandeAreas = GrandeArea::orderBy('nome')->get(); - $areaTematicas = AreaTematica::orderBy('nome')->get(); - $ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get(); - $funcaoParticipantes = FuncaoParticipantes::orderBy('nome')->get(); - $proponente = Proponente::where('user_id', Auth::user()->id)->first(); - - if($proponente == null){ - return view('proponente.cadastro')->with(['mensagem' => 'Você não possui perfil de Proponente, para submeter algum projeto preencha o formulário.']);; - } - - $rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$edital->id)->where('status', 'Rascunho') - ->orderByDesc('updated_at')->first(); - - // dd($estados); - - return view('evento.submeterTrabalho',[ - // return view('evento.backupForm',[ - 'edital' => $edital, - 'grandeAreas' => $grandeAreas, - 'funcaoParticipantes'=> $funcaoParticipantes, - 'rascunho' => $rascunho, - 'enum_turno' => Participante::ENUM_TURNO, - 'estados' => $this->estados, - 'areaTematicas' => $areaTematicas, - 'ods' =>$ODS, - ]); - } - - public function arquivar(Request $request){ - - $trabalho = Trabalho::find($request->trabalho_id); - $arquivos = Arquivo::where('trabalhoId',$trabalho->id)->get(); - if($request->arquivar_tipo == 1 ){ - $trabalho->arquivado = true; - foreach ($arquivos as $arquivo){ - $arquivo->arquivado = true; - $arquivo->update(); - } - $message = "Projeto ".$trabalho->titulo." arquivado"; - }else{ - $trabalho->arquivado = false; - foreach ($arquivos as $arquivo){ - $arquivo->arquivado = false; - $arquivo->update(); - } - $message = "Projeto ".$trabalho->titulo." desarquivado"; - } - $trabalho->update(); - return redirect()->back()->with(['sucesso'=>$message ]); - } - - public function storeParcial(Request $request){ - $mytime = Carbon::now('America/Recife'); - $mytime = $mytime->toDateString(); - $evento = Evento::find($request->editalId); - $coordenador = CoordenadorComissao::find($evento->coordenadorId); - - //Relaciona o projeto criado com o proponente que criou o projeto - $proponente = Proponente::where('user_id', Auth::user()->id)->first(); - - $trabalho = "trabalho"; - if ($evento->inicioSubmissao > $mytime) { - if ($mytime >= $evento->fimSubmissao) { - return redirect()->route('home'); - } - } - - //--Salvando os dados da submissão temporariamente - $this->armazenarInfoTemp($request, $proponente); - - return redirect()->route('projetos.edital', ['id' => $request->editalId]); - } - - //Armazena temporariamente dados da submissão, no banco de dados e no storage - public function armazenarInfoTemp(Request $request, $proponente) - { - - //---Dados do Projeto - $trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$request->editalId)->where('status', 'Rascunho') - ->orderByDesc('updated_at')->first(); - //dd($trabalho); - if($trabalho == null){ - $trabalho = new Trabalho(); - $trabalho->proponente_id = $proponente->id; - $trabalho->evento_id = $request->editalId; - $trabalho->status = 'Rascunho'; - - $stringKeys = ['titulo','linkGrupoPesquisa', 'linkLattesEstudante','pontuacaoPlanilha','anexoProjeto', - 'anexoPlanilhaPontuacao', 'anexoLattesCoordenador', 'conflitosInteresse']; - $intKeys = ['grande_area_id','area_id','sub_area_id','coordenador_id']; - - $trabalho->fill( - array_fill_keys($stringKeys, "") + array_fill_keys($intKeys, 1) - )->save(); - //dd($trabalho); - } - - if(!(is_null($request->nomeProjeto)) ) { - $trabalho->titulo = $request->nomeProjeto; - } - if(!(is_null($request->grandeArea))){ - $trabalho->grande_area_id = $request->grandeArea; - } - if(!(is_null($request->area))){ - $trabalho->area_id = $request->area; - } - if(!(is_null($request->subArea))){ - $trabalho->sub_area_id = $request->subArea; - } - if(!(is_null($request->pontuacaoPlanilha))){ - $trabalho->pontuacaoPlanilha = $request->pontuacaoPlanilha; - } - if(!(is_null($request->linkGrupo))){ - $trabalho->linkGrupoPesquisa = $request->linkGrupo; - } - if(!(is_null($request->conflitosInteresse))){ - $trabalho->conflitosInteresse = $request->conflitosInteresse; - } - - //Anexos do projeto - - $pasta = 'trabalhos/' . $request->editalId . '/' . $trabalho->id; - - if(!(is_null($request->anexoDecisaoCONSU)) ) { - $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, "CONSU.pdf"); - } - if (!(is_null($request->anexoComiteEtica))) { - $trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, "Comite_de_etica.pdf"); - } - if (!(is_null($request->justificativaAutorizacaoEtica))) { - $trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, "Justificativa.pdf"); - } - if (!(is_null($request->anexoProjeto))) { - $trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, "Projeto.pdf"); - } - if (!(is_null($request->anexoLattesCoordenador))) { - $trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, "Lattes_Coordenador.pdf"); - } - if (!(is_null($request->anexoPlanilhaPontuacao))) { - $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha.". $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension()); - } - - $trabalho->update(); - - //---Anexos planos de trabalho - - //dd($trabalho); - - return $trabalho; - } - - public function validarAnexosRascunho(Request $request, $trabalho){ - $validator = Validator::make($trabalho->getAttributes(),[ - 'anexoPlanilhaPontuacao' => $request->anexoPlanilhaPontuacao==null?['planilha']:[], - ]); - - if ($validator->fails()) { - //dd('asdf'); - return back()->withErrors($validator)->withInput(); - } - return 1; - } - - 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->anexoDecisaoCONSU)) { - if (Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) { - Storage::delete($trabalho->anexoDecisaoCONSU); - } - $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf'); - } - // } - - //Autorização ou Justificativa - if (isset($request->anexoAutorizacaoComiteEtica)) { - if (Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) { - Storage::delete($trabalho->anexoAutorizacaoComiteEtica); - } - $trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf'); - $trabalho->justificativaAutorizacaoEtica = null; - - } elseif (isset($request->justificativaAutorizacaoEtica)) { - if (Storage::disk()->exists($trabalho->justificativaAutorizacaoEtica)) { - Storage::delete($trabalho->justificativaAutorizacaoEtica); - } - $trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf'); - $trabalho->anexoAutorizacaoComiteEtica = null; - } - - //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->anexoPlanilhaPontuacao)) { - if (Storage::disk()->exists($trabalho->anexoPlanilhaPontuacao)) { - Storage::delete($trabalho->anexoPlanilhaPontuacao); - } - - $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension()); - } - - // Anexo grupo pesquisa - if (isset($request->anexoGrupoPesquisa)) { - if (Storage::disk()->exists($trabalho->anexoGrupoPesquisa)) { - Storage::delete($trabalho->anexoGrupoPesquisa); - } - $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension()); - } - - //Anexo documentro extra - if (isset($request->anexo_docExtra)) { - if (Storage::disk()->exists($trabalho->anexo_docExtra)) { - Storage::delete($trabalho->anexo_docExtra); - } - $trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension()); - } - - $trabalho->save(); - return $trabalho; - } - - // Anexo Projeto - if (isset($request->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->anexoDecisaoCONSU)) { - $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf'); - } - //} - - //Autorização ou Justificativa - if (isset($request->anexoAutorizacaoComiteEtica)) { - $trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf'); - $trabalho->justificativaAutorizacaoEtica = null; - - } elseif (isset($request->justificativaAutorizacaoEtica)) { - $trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf'); - $trabalho->anexoAutorizacaoComiteEtica = null; - - } - - //Anexo Lattes - if (isset($request->anexoLattesCoordenador)) { - $trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf'); - } - - //Anexo Planilha - if (isset($request->anexoPlanilhaPontuacao)) { - $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension()); - } - - // Anexo grupo pesquisa - if (isset($request->anexoGrupoPesquisa)) { - $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension()); - } - - // Anexo documento extra - if (isset($request->anexo_docExtra)) { - $trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension()); - } - - //Anexo SIPAC - if (isset($request->anexo_SIPAC)) { - if (Storage::disk()->exists($trabalho->anexo_SIPAC)) { - Storage::delete($trabalho->anexo_SIPAC); - } - $trabalho->anexo_SIPAC = Storage::putFileAs($pasta, $request->anexo_SIPAC, "Anexo_SIPAC." . $request->file('anexo_SIPAC')->extension()); - } - - return $trabalho; - } - - public function show($id) - { - $projeto = Trabalho::find($id); - if(Auth::user()->id != $projeto->proponente->user->id){ - return redirect()->back(); - } - $edital = Evento::find($projeto->evento_id); - $grandeAreas = GrandeArea::all(); - $areas = Area::all(); - $subareas = Subarea::all(); - $areasTematicas = AreaTematica::all(); - $funcaoParticipantes = FuncaoParticipantes::all(); - $participantes = $projeto->participantes; - $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get(); - $users = User::whereIn('id', $participantesUsersIds)->get(); - $arquivos = Arquivo::where('trabalhoId', $id)->get(); - $proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first(); - - // Verficação de pendencia de substituição - $aux = count(Substituicao::where('status','Em Aguardo')->whereIn('participanteSubstituido_id',$projeto->participantes->pluck('id'))->get()); - $flagSubstituicao = 1; - if($aux != 0){ - $flagSubstituicao = -1; - } - - $trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get(); - - $avals_projeto = []; - $AvalRelatParcial = []; - $AvalRelatFinal = []; - - if (isset($arquivos)) { - foreach ($arquivos as $arquivo) { - array_push($avals_projeto, AvaliacaoRelatorio::where('arquivo_id', $arquivo->id)->get()); - } - } - - foreach ($avals_projeto as $avals) { - foreach ($avals as $aval){ - if ($aval->tipo == 'Parcial') { - array_push($AvalRelatParcial, $aval); - } else { - array_push($AvalRelatFinal, $aval); - } - } - } - - - - return view('projeto.visualizar')->with(['projeto' => $projeto, - 'grandeAreas' => $grandeAreas, - 'areas' => $areas, - 'subAreas' => $subareas, - 'edital' => $edital, - 'users' => $users, - 'funcaoParticipantes' => $funcaoParticipantes, - 'participantes' => $participantes, - 'arquivos' => $arquivos, - 'estados' => $this->estados, - 'visualizar' => true, - 'enum_turno' => Participante::ENUM_TURNO, - 'areasTematicas' => $areasTematicas, - 'flagSubstituicao' =>$flagSubstituicao, - 'trabalhos_user' => $trabalhos_user, - 'AvalRelatParcial' => $AvalRelatParcial, - 'AvalRelatFinal' => $AvalRelatFinal, - 'proponente' => $proponente - ]); - } - - public function exportProjeto($id) - { - $projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first(); - if (!$projeto) { - return back()->withErrors(['Proposta não encontrada!']); - } - $edital = Evento::find($projeto->evento_id); - $grandeAreas = GrandeArea::all(); - $areas = Area::all(); - $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(); - $enum_turno = Participante::ENUM_TURNO; - view()->share('projeto.visualizar', [$projeto, $grandeAreas, $areas, $subAreas, $edital, $users, $funcaoParticipantes, $participantes, $arquivos, $enum_turno]); - - $pdf = PDF::loadView('projeto.visualizar', compact('projeto', 'grandeAreas', 'areas', 'subAreas', 'edital', 'users', 'funcaoParticipantes', 'participantes', 'arquivos', 'enum_turno'))->setOptions(['defaultFont' => 'sans-serif']); - - // download PDF file with download method - return $pdf->download('pdf_file.pdf'); - } - - public function edit($id) - { - if(Auth::user()->tipo=='administrador'){ - $projeto = Trabalho::find($id); - }else{ - $projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first(); - } - - $proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first(); - if (!$projeto) { - return back()->withErrors(['Proposta não encontrada!']); - } - $edital = Evento::find($projeto->evento_id); - $grandeAreas = GrandeArea::all(); - $areaTematicas = AreaTematica::orderBy('nome')->get(); - $areas = Area::all(); - $subareas = Subarea::all(); - $ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get(); - $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(); - //dd(Participante::all()); - $rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $edital->id)->where('status', 'Rascunho') - ->orderByDesc('updated_at')->first(); - - $trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get(); - - return view('projeto.editar')->with(['projeto' => $projeto, - 'grandeAreas' => $grandeAreas, - 'areas' => $areas, - 'subAreas' => $subareas, - 'edital' => $edital, - 'users' => $users, - 'funcaoParticipantes' => $funcaoParticipantes, - 'participantes' => $participantes, - 'arquivos' => $arquivos, - 'enum_turno' => Participante::ENUM_TURNO, - 'estados' => $this->estados, - 'areaTematicas' => $areaTematicas, - 'listaOds' => $ODS, - 'trabalhos_user' => $trabalhos_user, - 'proponente' => $proponente - ]); - } - - public function destroy(Request $request) - { - $projeto = Trabalho::find($request->id); - //dd($trabalho); - Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id); - - $participantes = $projeto->participantes; - foreach ($participantes as $participante) { - $plano = $participante->planoTrabalho; - if ($plano) - $plano->delete(); - $participante->delete(); - } - - $projeto->delete(); - return redirect()->back()->with(['mensagem' => 'Projeto deletado com sucesso!']); - } - - public function excluirParticipante($id) - { - $participante = Participante::where('id', $id)->first(); - //$participante = Participante::where('user_id', Auth()->user()->id) - // ->where('trabalho_id', $id)->first(); - - //$participante->trabalhos()->detach($id); - $participante->delete(); - - return redirect()->back(); - } - - public function solicitarCertificado(Trabalho $trabalho, Request $request) - { - $users = User::find($request->users); - $coord = $trabalho->coordenador; - $SolicitacaoCertificado = SolicitacaoCertificado::create(); - Notificacao::create([ - 'remetente_id' => auth()->user()->id, - 'destinatario_id' => $coord->user_id, - 'solicitacao_certificado_id' => $SolicitacaoCertificado->id, - 'trabalho_id' => $trabalho->id, - 'lido' => false, - 'tipo' => 6 - ]); - foreach ($users as $user) { - SolicitacaoParticipante::create([ - 'user_id' => $user->id, - 'solicitacao_certificado_id' => $SolicitacaoCertificado->id, - ]); - } - $admins = Administrador::all(); - foreach ($admins as $admin) { - $userTemp = User::find($admin->user_id); - Notificacao::create([ - 'remetente_id' => auth()->user()->id, - 'destinatario_id' => $admin->user_id, - 'solicitacao_certificado_id' => $SolicitacaoCertificado->id, - 'trabalho_id' => $trabalho->id, - 'lido' => false, - 'tipo' => 6, - ]); - } - $destinatarios = $admins->map(function($admin) {return $admin->user;})->push($coord->user); - Notification::send($destinatarios, new SolicitacaoCertificadoNotification($trabalho->proponente, $trabalho, $userTemp, $users)); - return redirect()->route('trabalho.show', ['id' => $trabalho->id])->with('sucesso', 'Solicitação de certificado/declaração efetuada com sucesso!'); - } - - - public function novaVersao(Request $request) - { - $mytime = Carbon::now('America/Recife'); - $mytime = $mytime->toDateString(); - $evento = Evento::find($request->eventoId); - if ($evento->inicioSubmissao > $mytime) { - if ($mytime >= $evento->fimSubmissao) { - return redirect()->route('home'); - } - } - $validatedData = $request->validate([ - 'arquivo' => ['required', 'file', 'mimes:pdf'], - 'eventoId' => ['required', 'integer'], - 'trabalhoId' => ['required', 'integer'], - ]); - - $trabalho = Trabalho::find($request->trabalhoId); - - if (Auth::user()->id != $trabalho->autorId) { - return redirect()->route('home'); - } - - $arquivos = $trabalho->arquivo; - $count = 1; - foreach ($arquivos as $key) { - $key->versaoFinal = false; - $key->save(); - $count++; - } - - $file = $request->arquivo; - $path = 'trabalhos/' . $request->eventoId . '/' . $trabalho->id . '/'; - $nome = $count . ".pdf"; - Storage::putFileAs($path, $file, $nome); - - $arquivo = Arquivo::create([ - 'nome' => $path . $nome, - 'trabalhoId' => $trabalho->id, - 'versaoFinal' => true, - ]); - - return redirect()->route('evento.visualizar', ['id' => $request->eventoId]); - } - - public function detalhesAjax(Request $request) - { - $validatedData = $request->validate([ - 'trabalhoId' => ['required', 'integer'] - ]); - - $trabalho = Trabalho::find($request->trabalhoId); - $revisores = Atribuicao::where('trabalhoId', $request->trabalhoId)->get(); - $revisoresAux = []; - foreach ($revisores as $key) { - if ($key->revisor->user->name != null) { - array_push($revisoresAux, [ - 'id' => $key->revisor->id, - 'nomeOuEmail' => $key->revisor->user->name - ]); - } else { - array_push($revisoresAux, [ - 'id' => $key->revisor->id, - 'nomeOuEmail' => $key->revisor->user->email - ]); - } - } - $revisoresDisponeis = Revisor::where('eventoId', $trabalho->eventoId)->where('areaId', $trabalho->areaId)->get(); - $revisoresAux1 = []; - foreach ($revisoresDisponeis as $key) { - //verificar se ja é um revisor deste trabalhos - $revisorNaoExiste = true; - foreach ($revisoresAux as $key1) { - if ($key->id == $key1['id']) { - $revisorNaoExiste = false; - } - } - // - if ($revisorNaoExiste) { - if ($key->user->name != null) { - array_push($revisoresAux1, [ - 'id' => $key->id, - 'nomeOuEmail' => $key->user->name - ]); - } else { - array_push($revisoresAux1, [ - 'id' => $key->id, - 'nomeOuEmail' => $key->user->email - ]); - } - } - } - return response()->json([ - 'titulo' => $trabalho->titulo, - 'resumo' => $trabalho->resumo, - 'revisores' => $revisoresAux, - 'revisoresDisponiveis' => $revisoresAux1 - ], 200); - } - - public function atribuirAvaliadorTrabalho(Request $request) - { - - $request->trabalho_id; - $trabalho = Trabalho::find($request->trabalho_id); - - $avaliadores = Avaliador::all(); - - - return view('coordenadorComissao.gerenciarEdital.atribuirAvaliadorTrabalho', ['avaliadores' => $avaliadores, 'trabalho' => $trabalho, 'evento' => $trabalho->evento]); - - } - - public function atribuir(Request $request) - { - - $trabalho = Trabalho::find($request->trabalho_id); - - $todosAvaliadores = Avaliador::all(); - - $avaliadores = Avaliador::whereIn('id', $request->avaliadores)->with('user')->get(); - - $trabalho->avaliadors()->sync($request->avaliadores); - - foreach ($avaliadores as $key => $avaliador) { - - $user = $avaliador->user; - $subject = "Trabalho atribuido"; - Mail::to($user->email) - ->send(new EventoCriado($user, $subject)); - } - - return view('coordenadorComissao.detalhesEdital', ['evento' => $trabalho->evento]); - } - - public function projetosDoEdital($id) - { - $edital = Evento::find($id); - $projetos = Trabalho::where('evento_id', '=', $id)->get(); - $hoje = Carbon::today('America/Recife'); - $hoje = $hoje->toDateString(); - - return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje' => $hoje]); - } - - public function baixarAnexoProjeto($id) - { - $projeto = Trabalho::find($id); - //dd($projeto); - if (Storage::disk()->exists($projeto->anexoProjeto)) { - ob_end_clean(); - return Storage::download($projeto->anexoProjeto); - } - return abort(404); - } - - public function baixarAnexoGrupoPesquisa($id) - { - $projeto = Trabalho::find($id); - if (Storage::disk()->exists($projeto->anexoGrupoPesquisa)) { - ob_end_clean(); - return Storage::download($projeto->anexoGrupoPesquisa); - } - return abort(404); - } - - public function baixarAnexoConsu($id) - { - $projeto = Trabalho::find($id); - - if (Storage::disk()->exists($projeto->anexoDecisaoCONSU)) { - ob_end_clean(); - return Storage::download($projeto->anexoDecisaoCONSU); - } - return abort(404); - } - - public function baixarAnexoComite($id) - { - $projeto = Trabalho::find($id); - - if (Storage::disk()->exists($projeto->anexoAutorizacaoComiteEtica)) { - ob_end_clean(); - return Storage::download($projeto->anexoAutorizacaoComiteEtica); - } - return abort(404); - } - - public function baixarAnexoLattes($id) - { - $projeto = Trabalho::find($id); - - if (Storage::disk()->exists($projeto->anexoLattesCoordenador)) { - ob_end_clean(); - return Storage::download($projeto->anexoLattesCoordenador); - } - return abort(404); - } - - public function baixarAnexoPlanilha($id) - { - $projeto = Trabalho::find($id); - - if (Storage::disk()->exists($projeto->anexoPlanilhaPontuacao)) { - ob_end_clean(); - $file = $projeto->anexoPlanilhaPontuacao; - $ext = explode(".", $file); - - switch ($ext[1]) { - case 'xlsx': - $hearder = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; - break; - case 'xls': - $hearder = 'application/vnd.ms-excel'; - break; - case 'ods': - $hearder = 'application/vnd.oasis.opendocument.spreadsheet'; - break; - - default: - $hearder = 'application/vnd.ms-excel'; - break; - } - - $headers = array( - "Content-type: {$hearder}", - ); - - - return Storage::download($projeto->anexoPlanilhaPontuacao, "Planilha.{$ext[1]}", $headers); - } - return abort(404); - } - - public function baixarAnexoJustificativa($id) - { - $projeto = Trabalho::find($id); - - if (Storage::disk()->exists($projeto->justificativaAutorizacaoEtica)) { - ob_end_clean(); - return Storage::download($projeto->justificativaAutorizacaoEtica); - } - - return abort(404); - } - - public function baixarAnexoDocExtra($id) - { - $projeto = Trabalho::find($id); - if (Storage::disk()->exists($projeto->anexo_docExtra)) { - ob_end_clean(); - return Storage::download($projeto->anexo_docExtra); - } - return abort(404); - } - - public function baixarAnexoSIPAC($id) - { - $projeto = Trabalho::find($id); - if (Storage::disk()->exists($projeto->anexo_SIPAC)) { - ob_end_clean(); - return Storage::download($projeto->anexo_SIPAC); - } - return abort(404); - } - - public function baixarAnexoTemp($eventoId, $nomeAnexo) - { - $proponente = Proponente::where('user_id', Auth::user()->id)->first(); - - $trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $eventoId)->where('status', 'Rascunho') - ->orderByDesc('updated_at')->first(); - - if (Storage::disk()->exists($trabalho->$nomeAnexo)) { - ob_end_clean(); - return Storage::download($trabalho->$nomeAnexo); - } - return abort(404); - } - - public function baixarEventoTemp($nomeAnexo) - { - $eventoTemp = Evento::where('criador_id', Auth::user()->id)->where('anexosStatus', 'temporario') - ->orderByDesc('updated_at')->first(); - - if (Storage::disk()->exists($eventoTemp->$nomeAnexo)) { - ob_end_clean(); - return Storage::download($eventoTemp->$nomeAnexo); - } - return abort(404); - } -//xxfa - - public function update(UpdateTrabalho $request, $id) - { - try { - if (!$request->has('rascunho')) { - $request->merge([ - 'status' => 'submetido' - ]); - } else { - $request->merge([ - 'status' => 'rascunho' - ]); - } - $evento = Evento::find($request->editalId); - $request->merge([ - 'coordenador_id' => $evento->coordenadorComissao->id - ]); - $trabalho = Trabalho::find($id); - $trabalho->ods()->sync($request->ods); - $proponente = Proponente::where('user_id', Auth::user()->id)->first(); - - DB::beginTransaction(); - if (!$trabalho) { - return back()->withErrors(['Proposta não encontrada']); - } - - if($evento->tipo=="PIBEX"){ - $trabalho->update($request->except([ - 'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra' - ])); - }else{ - $trabalho->update($request->except([ - 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', - 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', - 'justificativaAutorizacaoEtica','modalidade','anexo_docExtra' - ])); - } - - $pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id; - - $trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento); - $trabalho->save(); - - - if($request->integrantesExistentes == null){ - $request->integrantesExistentes = []; - } - $usuariosRemovidos = TrabalhoUser::where('trabalho_id', $trabalho->id)->whereNotIn('user_id', $request->integrantesExistentes)->get(); - - if($usuariosRemovidos->first() != null) { - foreach($usuariosRemovidos as $usuarioRemovido){ - $usuarioRemovido->delete(); - } - } - - if($evento->natureza_id == 3 && $request->integrantes != null){ - foreach($request->integrantes as $integrante){ - $integrante = explode(',', $integrante); - $trabalho_user = new TrabalhoUser(); - $trabalho_user->user_id = $integrante[0]; - $trabalho_user->funcao_participante_id = $integrante[1]; - $trabalho_user->trabalho_id = $trabalho->id; - $trabalho_user->save(); - } - } - - if ($evento->numParticipantes != 0) { - if ($request->marcado == null) { - $idExcluido = $trabalho->participantes->pluck('id'); - - } else { - $idExcluido = []; - } - - foreach ($request->participante_id as $key => $value) { - if ($request->marcado != null && array_search($key, $request->marcado) === false) { - if ($value !== null) - array_push($idExcluido, $value); - } - } - - - foreach ($idExcluido as $key => $value) { - $trabalho->participantes()->find($value)->delete(); - } - $trabalho->refresh(); - } - - if ($request->has('marcado')) { - foreach ($request->marcado as $key => $part) { - $part = intval($part); - $passwordTemporario = Str::random(8); - $data['name'] = $request->name[$part]; - $data['email'] = $request->email[$part]; - $data['password'] = bcrypt($passwordTemporario); - $data['data_de_nascimento'] = $request->data_de_nascimento[$part]; - $data['cpf'] = $request->cpf[$part]; - $data['tipo'] = 'participante'; - $data['funcao_participante_id'] = 4; - $data['rg'] = $request->rg[$part]; - $data['celular'] = $request->celular[$part]; - $data['cep'] = $request->cep[$part]; - $data['uf'] = $request->uf[$part]; - $data['cidade'] = $request->cidade[$part]; - $data['rua'] = $request->rua[$part]; - $data['numero'] = $request->numero[$part]; - $data['bairro'] = $request->bairro[$part]; - $data['complemento'] = $request->complemento[$part]; - - if ($request->instituicao[$part] != "Outra") { - $data['instituicao'] = $request->instituicao[$part]; - } else { - $data['instituicao'] = $request->outrainstituicao[$part]; - } - - $data['total_periodos'] = $request->total_periodos[$part]; - - if ($request->curso[$part] != "Outro") { - $data['curso'] = $request->curso[$part]; - } else { - $data['curso'] = $request->outrocurso[$part]; - } - - $data['turno'] = $request->turno[$part]; - $data['periodo_atual'] = $request->periodo_atual[$part]; - $data['ordem_prioridade'] = $request->ordem_prioridade[$part]; - if($evento->tipo!="PIBEX") { - $data['media_do_curso'] = $request->media_do_curso[$part]; - } - $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part]; - - if($request->participante_id[$part] != null){ - $participante = Participante::find($request->participante_id[$part]); - $user = User::where('email', $participante->user->email)->first(); - }else{ - $user = User::where('email', $data['email'])->first(); - } - - - - - if ($user == null) { - $data['usuarioTemp'] = true; - $user = User::create($data); - $endereco = Endereco::create($data); - $endereco->user()->save($user); - $participante = Participante::create($data); - $participante->data_entrada = $participante->created_at; - $user->participantes()->save($participante); - $trabalho->participantes()->save($participante); - $participante->trabalho_id = $trabalho->id; - $participante->save(); - - } else { - // $user = $participante->user; - $user->update($data); - if( $user->endereco == null){ - $endereco = Endereco::create($data); - $endereco->user()->save($user); - }else{ - $endereco = $user->endereco; - $endereco->update($data); - } - $participante = $user->participantes->where('trabalho_id', $trabalho->id)->where('id', $request->participante_id[$part])->first(); - // dd($participante); - if ($participante == null) { - // dd('part null'); - $participante = Participante::create($data); - $user->participantes()->save($participante); - $trabalho->participantes()->save($participante); - } else { - // dd('part update'); - $participante->update($data); - } - - } - - if ($request->has('anexoPlanoTrabalho') && array_key_exists($part, $request->anexoPlanoTrabalho) && $request->nomePlanoTrabalho[$part] != null) { - if (Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->count()) { - $arquivo = Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->first(); - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; - $nome = $data['nomePlanoTrabalho'] . ".pdf"; - $titulo = $data['nomePlanoTrabalho']; - $file = $request->anexoPlanoTrabalho[$part]; - Storage::putFileAs($path, $file, $nome); - $arquivo->update([ - 'titulo' => $titulo, - 'nome' => $path . $nome, - 'data' => now(), - ]); - } else { - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; - $nome = $data['nomePlanoTrabalho'] . ".pdf"; - $file = $request->anexoPlanoTrabalho[$part]; - Storage::putFileAs($path, $file, $nome); - $arquivo = new Arquivo(); - $arquivo->titulo = $data['nomePlanoTrabalho']; - $arquivo->nome = $path . $nome; - $arquivo->trabalhoId = $trabalho->id; - $arquivo->data = now(); - $arquivo->participanteId = $participante->id; - $arquivo->versaoFinal = true; - $arquivo->save(); - - } - - } - - } - - } else { - $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho; - - if (Arquivo::where('proponenteId', $proponente->id)->where('trabalhoId', $trabalho->id)->count()) { - $arquivo = Arquivo::where('proponenteId', $proponente->id)->where('trabalhoId', $trabalho->id)->first(); - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; - $nome = $data['nomePlanoTrabalho'] . ".pdf"; - $titulo = $data['nomePlanoTrabalho']; - if ($request->has('anexoPlanoTrabalho')) { - $file = $request->anexoPlanoTrabalho; - Storage::putFileAs($path, $file, $nome); - } else { - if($arquivo->nome != $path.$nome) { - Storage::rename( $arquivo->nome, $path.$nome ); - } - } - $arquivo->update([ - 'titulo' => $titulo, - 'nome' => $path . $nome, - 'data' => now(), - ]); - } else { - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; - $nome = $data['nomePlanoTrabalho'] . ".pdf"; - $file = $request->anexoPlanoTrabalho; - Storage::putFileAs($path, $file, $nome); - $arquivo = new Arquivo(); - $arquivo->titulo = $data['nomePlanoTrabalho']; - $arquivo->nome = $path . $nome; - $arquivo->trabalhoId = $trabalho->id; - $arquivo->data = now(); - $arquivo->proponenteId = $proponente->id; - $arquivo->versaoFinal = true; - $arquivo->save(); - } - } - - DB::commit(); - - if(Auth::user()->tipo == 'administrador'){ - return redirect(route('admin.analisarProposta',['id'=>$trabalho->id])); - } - - if (!$request->has('rascunho')) { - Notification::send($trabalho->proponente->user, new SubmissaoNotification($trabalho)); - } - - return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta atualizada!']); - - } catch (\Throwable $th) { - DB::rollback(); - return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]); - } - - } - - public function buscarUsuario(Request $request) { - $usuario = User::where('cpf', $request->cpf_consulta)->first(); - $funcao = FuncaoParticipantes::where('id', $request->funcao)->first(); - if($usuario){ - return json_encode([$usuario, $funcao]); - } - - return json_encode('inexistente'); - } - - - public function salvar(StoreTrabalho $request) - { - try { - if (!$request->has('rascunho')) { - $request->merge([ - 'status' => 'submetido' - ]); - } - $evento = Evento::find($request->editalId); - $proponente = Proponente::where('user_id', Auth::user()->id)->first(); - $request->merge([ - 'coordenador_id' => $evento->coordenadorComissao->id - ]); - - DB::beginTransaction(); - - if($evento->tipo=="PIBEX"){ - $trabalho = Auth::user()->proponentes->trabalhos() - ->create($request->except([ - 'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra', 'anexo_SIPAC' - ])); - }else if($evento->tipo=="CONTINUO"){ - $trabalho = Auth::user()->proponentes->trabalhos() - ->create($request->except([ - 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', - 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', - 'justificativaAutorizacaoEtica','modalidade','anexo_docExtra', - ])); - } else { - $trabalho = Auth::user()->proponentes->trabalhos() - ->create($request->except([ - 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', - 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', - 'justificativaAutorizacaoEtica','modalidade','anexo_docExtra', 'anexo_SIPAC' - ])); - } - - - if ($request->has('marcado')) { - foreach ($request->marcado as $key => $part) { - $part = intval($part); - - $passwordTemporario = Str::random(8); - $data['name'] = $request->name[$part]; - $data['email'] = $request->email[$part]; - $data['password'] = bcrypt($passwordTemporario); - $data['data_de_nascimento'] = $request->data_de_nascimento[$part]; - $data['cpf'] = $request->cpf[$part]; - $data['tipo'] = 'participante'; - $data['funcao_participante_id'] = 4; - $data['rg'] = $request->rg[$part]; - $data['celular'] = $request->celular[$part]; - $data['cep'] = $request->cep[$part]; - $data['uf'] = $request->uf[$part]; - $data['cidade'] = $request->cidade[$part]; - $data['rua'] = $request->rua[$part]; - $data['numero'] = $request->numero[$part]; - $data['bairro'] = $request->bairro[$part]; - $data['complemento'] = $request->complemento[$part]; - - if ($request->instituicao[$part] != "Outra") { - $data['instituicao'] = $request->instituicao[$part]; - } else { - $data['instituicao'] = $request->outrainstituicao[$part]; - } - - $data['total_periodos'] = $request->total_periodos[$part]; - - if ($request->curso[$part] != "Outro") { - $data['curso'] = $request->curso[$part]; - } else { - $data['curso'] = $request->outrocurso[$part]; - } - - $data['turno'] = $request->turno[$part]; - $data['periodo_atual'] = $request->periodo_atual[$part]; - $data['ordem_prioridade'] = $request->ordem_prioridade[$part]; - if($evento->tipo!="PIBEX") { - $data['media_do_curso'] = $request->media_do_curso[$part]; - } - $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part]; - - $user = User::where('email', $data['email'])->first(); - if ($user == null) { - $data['usuarioTemp'] = true; - $user = User::create($data); - $endereco = Endereco::create($data); - $endereco->user()->save($user); - } - // $participante = $user->participantes->where('trabalho_id', $trabalho->id)->first(); - // if ($participante == null){ - // $participante = Participante::create($data); - // } - $participante = Participante::create($data); - $participante->data_entrada = $participante->created_at; - $user->participantes()->save($participante); - - $participante->trabalho_id = $trabalho->id; - $participante->save(); - - if ($request->has('anexoPlanoTrabalho')) { - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; - $nome = $data['nomePlanoTrabalho'] . ".pdf"; - $file = $request->anexoPlanoTrabalho[$part]; - Storage::putFileAs($path, $file, $nome); - $arquivo = new Arquivo(); - $arquivo->titulo = $data['nomePlanoTrabalho']; - $arquivo->nome = $path . $nome; - $arquivo->trabalhoId = $trabalho->id; - $arquivo->data = now(); - $arquivo->participanteId = $participante->id; - $arquivo->versaoFinal = true; - $arquivo->save(); - - } - - } - } else { - $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho; - if ($request->has('anexoPlanoTrabalho')) { - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; - $nome = $data['nomePlanoTrabalho'] . ".pdf"; - $file = $request->anexoPlanoTrabalho; - Storage::putFileAs($path, $file, $nome); - $arquivo = new Arquivo(); - $arquivo->titulo = $data['nomePlanoTrabalho']; - $arquivo->nome = $path . $nome; - $arquivo->trabalhoId = $trabalho->id; - $arquivo->data = now(); - $arquivo->proponenteId = $proponente->id; - $arquivo->versaoFinal = true; - $arquivo->save(); - - } - } - - $evento->trabalhos()->save($trabalho); - - $pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id; - $trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento); - $trabalho->modalidade = $request->modalidade; - $trabalho->save(); - - - if($evento->natureza_id == 3){ - foreach($request->integrantes as $integrante){ - $integrante = explode(',', $integrante); - - $trabalho_user = new TrabalhoUser(); - $trabalho_user->user_id = $integrante[0]; - $trabalho_user->funcao_participante_id = $integrante[1]; - $trabalho_user->trabalho_id = $trabalho->id; - $trabalho_user->save(); - } - } - - $trabalho->ods()->sync($request->ods); - DB::commit(); - if (!$request->has('rascunho')) { - //Notificações - //Coordenador - $userTemp = User::find($evento->coordenadorComissao->user_id); - $notificacao = App\Notificacao::create([ - 'remetente_id' => Auth::user()->id, - 'destinatario_id' => $evento->coordenadorComissao->user_id, - 'trabalho_id' => $trabalho->id, - 'lido' => false, - 'tipo' => 1, - ]); - $notificacao->save(); - // SubmissaoRecebidaNotification.php - Notification::send($userTemp, new SubmissaoRecebidaNotification($trabalho->id,$trabalho->titulo,$userTemp)); - //Proponente - $notificacao = App\Notificacao::create([ - 'remetente_id' => Auth::user()->id, - 'destinatario_id' => Auth::user()->id, - 'trabalho_id' => $trabalho->id, - 'lido' => false, - 'tipo' => 1, - ]); - $notificacao->save(); - // submissao e notificação.php $trabalho->id,$trabalho->titulo - Notification::send(Auth::user(), new SubmissaoNotification($trabalho)); - - - return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta submetida!']); - } else { - return redirect(route('proponente.projetos'))->with(['mensagem' => 'Rascunho salvo!']); - - } - } catch (\Throwable $th) { - DB::rollback(); - return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]); - } - - - } - - public function atribuirDados(Request $request, $edital, Trabalho $projeto = null) - { - if ($projeto == null) { - $projeto = new Trabalho(); - } - - $proponente = User::find(auth()->user()->id)->proponentes; - $hoje = now(); - - $projeto->titulo = $request->nomeProjeto; - $projeto->coordenador_id = $edital->coordenadorComissao->id; - $projeto->grande_area_id = $request->grandeArea; - $projeto->area_id = $request->area; - $projeto->sub_area_id = $request->subArea; - $projeto->pontuacaoPlanilha = $request->pontuacaoPlanilha; - $projeto->linkGrupoPesquisa = $request->linkGrupo; - $projeto->linkLattesEstudante = $request->linkLattesEstudante; - $projeto->data = $hoje; - $projeto->evento_id = $request->editalId; - $projeto->status = 'submetido'; - $projeto->proponente_id = $proponente->id; - $projeto->conflitosInteresse = $request->conflitosInteresse; - - // Salvando anexos no storage - $projeto->save(); - $pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id; - - $projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital); - - return $projeto; - } - - public function salvarParticipantes(Request $request, $edital, $projeto, $edicao = false) - { - if ($edicao) { - - $participantes = $projeto->participantes; - $participantesPermanecem = collect(); - // dd($request->all()); - foreach ($request->participante_id as $key => $id) { - // Novo participante - if ($id == 0 || $id == null) { - $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_atual[$key]; - $participante->total_periodos = $request->total_periodos[$key]; - if($edital->tipo != "PIBEX"){ - $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, $edital->tipo,$edital->natureza_id)); - } 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_atual[$key]; - $participante->total_periodos = $request->total_periodos[$key]; - if($edital->tipo != "PIBEX"){ - $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(); - // dd($arquivo); - } - // 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_atual[$key]; - $participante->total_periodos = $request->total_periodos[$key]; - if($edital->tipo != "PIBEX"){ - $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 = $id; - $arquivo->versaoFinal = true; - $arquivo->save(); - } - } - } - // Excluidos - $participantesExcluidos = $participantes->diff($participantesPermanecem); - foreach ($participantesExcluidos as $participante) { - $plano = $participante->planoTrabalho; - if ($plano) - $plano->delete(); - $participante->delete(); - } - - return true; - } - if ($request->emailParticipante != null) { - foreach ($request->emailParticipante as $key => $email) { - $userParticipante = User::where('email', $email)->first(); - - $participante = new Participante(); - - if ($userParticipante == null) { - $passwordTemporario = Str::random(8); - - $usuario = new User(); - $usuario->email = $email; - $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_atual[$key]; - $participante->total_periodos = $request->total_periodos[$key]; - if($edital->tipo != "PIBEX"){ - $participante->media_do_curso = $request->media_geral_curso[$key]; - } - $participante->save(); - - $usuario = User::where('email', $email)->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(); - $subject = "Participante de Projeto"; - Mail::to($email)->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id)); - } 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_atual[$key]; - $participante->total_periodos = $request->total_periodos[$key]; - if($edital->tipo != "PIBEX"){ - $participante->media_do_curso = $request->media_geral_curso[$key]; - } - $participante->save(); - - - if ($request->anexoPlanoTrabalho[$key]) { - $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(); - - } - - $subject = "Participante de Projeto"; - $time = Carbon::today('America/Recife'); - $time = $time->isoFormat('às H:mm, dddd, D/M/YYYY'); - Mail::to($email) - ->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto)); - - } - - // if($request->nomePlanoTrabalho[$key] != null){ - // $usuario = User::where('email', $email)->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(); - // } - } - } - - return true; - } - - 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(); - - // dd($request->all()); - // Salvando participantes - $this->salvarParticipantes($request, $edital, $projeto, true); - - return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto atualizado com sucesso!']); - } - - - public function telaTrocaPart(Request $request) - { - $projeto = Trabalho::find($request->projeto_id); - $edital = Evento::find($projeto->evento_id); - - if(Auth::user()->id != $projeto->proponente->user->id){ - return redirect()->back(); - } - - $participantes = $projeto->participantes; - $substituicoesProjeto = Substituicao::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get(); - $desligamentosProjeto = Desligamento::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get(); - - return view('administrador.substituirParticipante')->with(['projeto' => $projeto, - 'edital' => $edital, - 'participantes' => $participantes, - 'substituicoesProjeto' => $substituicoesProjeto, - 'estados' => $this->estados, - 'enum_turno' => Participante::ENUM_TURNO, - 'desligamentosProjeto' => $desligamentosProjeto, - ]); - } - - public function trocaParticipante(Request $request) - { - try { - DB::beginTransaction(); - $trabalho = Trabalho::find($request->projetoId); - $evento = Evento::find($request->editalId); - $participanteSubstituido = Participante::where('id', $request->participanteId)->first(); - $planoAntigo = Arquivo::where('id', $participanteSubstituido->planoTrabalho->id)->first(); - - $passwordTemporario = Str::random(8); - $data['name'] = $request->name; - $data['email'] = $request->email; - $data['password'] = bcrypt($passwordTemporario); - $data['data_de_nascimento'] = $request->data_de_nascimento; - $data['data_entrada'] = $request->data_entrada; - $data['cpf'] = $request->cpf; - $data['tipo'] = 'participante'; - $data['funcao_participante_id'] = 4; - $data['rg'] = $request->rg; - $data['celular'] = $request->celular; - $data['linkLattes'] = $request->linkLattes; - $data['cep'] = $request->cep; - $data['uf'] = $request->uf; - $data['cidade'] = $request->cidade; - $data['rua'] = $request->rua; - $data['numero'] = $request->numero; - $data['bairro'] = $request->bairro; - $data['complemento'] = $request->complemento; - - if ($request->instituicao != "Outra") { - $data['instituicao'] = $request->instituicao; - } else { - $data['instituicao'] = $request->outrainstituicao; - } - - $data['total_periodos'] = $request->total_periodos; - - if ($request->curso != "Outro") { - $data['curso'] = $request->curso; - } else { - $data['curso'] = $request->outrocurso; - } - - $data['turno'] = $request->turno; - $data['periodo_atual'] = $request->periodo_atual; - $data['ordem_prioridade'] = $request->ordem_prioridade; - if($evento->tipo!="PIBEX") { - $data['media_do_curso'] = $request->media_do_curso; - } - $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho; - - if ($request->substituirApenasPlanoCheck == 'check') { - $substituicao = new Substituicao(); - - if ($request->has('anexoPlanoTrabalho')) { - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; - $nome = $data['nomePlanoTrabalho'] . ".pdf"; - $file = $request->anexoPlanoTrabalho; - Storage::putFileAs($path, $file, $nome); - $arquivo = new Arquivo(); - $arquivo->titulo = $data['nomePlanoTrabalho']; - $arquivo->nome = $path . $nome; - $arquivo->trabalhoId = $trabalho->id; - $arquivo->data = now(); - $arquivo->participanteId = $participanteSubstituido->id; - $arquivo->versaoFinal = true; - $arquivo->save(); - - $substituicao->status = 'Em Aguardo'; - $substituicao->tipo = 'TrocarPlano'; - $substituicao->observacao = $request->textObservacao; - $substituicao->participanteSubstituido_id = $participanteSubstituido->id; - $substituicao->participanteSubstituto_id = $participanteSubstituido->id; - $substituicao->planoSubstituto_id = $arquivo->id; - $substituicao->trabalho_id = $trabalho->id; - $substituicao->save(); - } - } else { - //$participanteSubstituido->delete(); - $substituicao = new Substituicao(); - $substituicao->observacao = $request->textObservacao; - if ($participanteSubstituido->data_entrada > $request->data_entrada) { - return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Escolha uma data de entrada posterior a entrada do discente substituído"]); - } - - $participanteSubstituido->data_saida = $request->data_entrada; - - \App\Validator\CpfValidator::validate($request->all()); - $user = User::where('email', $data['email'])->first(); - if (!$user) { - $data['usuarioTemp'] = true; - $user = User::create($data); - $endereco = Endereco::create($data); - $endereco->user()->save($user); - } - $participante = $user->participantes->where('trabalho_id', $trabalho->id)->first(); - if (!$participante) { - $participante = Participante::create($data); - $participanteSubstituido->save(); - } - - $pasta = 'participantes/' . $participante->id; - $participante->anexoTermoCompromisso = Storage::putFileAs($pasta, $request->anexoTermoCompromisso, "Termo_de_Compromisso.pdf"); - $participante->anexoComprovanteMatricula = Storage::putFileAs($pasta, $request->anexoComprovanteMatricula, "Comprovante_de_Matricula.pdf"); - $participante->anexoLattes = Storage::putFileAs($pasta, $request->anexoCurriculoLattes, "Curriculo_Lattes.pdf"); - if ($request->anexoAutorizacaoPais != null) { - $participante->anexoAutorizacaoPais = Storage::putFileAs($pasta, $request->anexoAutorizacaoPais, "Autorização_dos_Pais.pdf"); - } - if ($request->anexoComprovanteBancario != null) { - $participante->anexoComprovanteBancario = Storage::putFileAs($pasta, $request->anexoComprovanteBancario, "Comprovante_Bancario." . $request->file('anexoComprovanteBancario')->getClientOriginalExtension()); - } - - $user->participantes()->save($participante); - //$trabalho->participantes()->save($participante); - - if ($request->manterPlanoCheck == 'check') { - $substituicao->status = 'Em Aguardo'; - $substituicao->tipo = 'ManterPlano'; - $substituicao->observacao = $request->textObservacao; - $substituicao->participanteSubstituido_id = $participanteSubstituido->id; - $substituicao->participanteSubstituto_id = $participante->id; - $substituicao->trabalho_id = $trabalho->id; - $substituicao->planoSubstituto_id = $planoAntigo->id; - - $planoAntigo->participanteId = $participante->id; - - $substituicao->save(); - $planoAntigo->save(); - - } else { - - if ($request->has('anexoPlanoTrabalho')) { - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; - $nome = $data['nomePlanoTrabalho'] . ".pdf"; - $file = $request->anexoPlanoTrabalho; - Storage::putFileAs($path, $file, $nome); - $arquivo = new Arquivo(); - $arquivo->titulo = $data['nomePlanoTrabalho']; - $arquivo->nome = $path . $nome; - $arquivo->trabalhoId = $trabalho->id; - $arquivo->data = now(); - $arquivo->participanteId = $participante->id; - $arquivo->versaoFinal = true; - $arquivo->save(); - - $substituicao->status = 'Em Aguardo'; - $substituicao->tipo = 'Completa'; - $substituicao->observacao = $request->textObservacao; - $substituicao->participanteSubstituido_id = $participanteSubstituido->id; - $substituicao->participanteSubstituto_id = $participante->id; - $substituicao->trabalho_id = $trabalho->id; - $substituicao->planoSubstituto_id = $arquivo->id; - $substituicao->save(); - } - - } - } - - $evento->trabalhos()->save($trabalho); - $trabalho->save(); - - $notificacao = App\Notificacao::create([ - 'remetente_id' => Auth::user()->id, - 'destinatario_id' => $evento->coordenadorComissao->user_id, - 'trabalho_id' => $trabalho->id, - 'lido' => false, - 'tipo' => 2, - ]); - $notificacao->save(); - - DB::commit(); - - Mail::to($evento->coordenadorComissao->user->email)->send(new SolicitacaoSubstituicao($evento, $trabalho,'',$substituicao->tipo,$substituicao->status)); - return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['sucesso' => 'Pedido de substituição enviado com sucesso!']); - } catch (\App\Validator\ValidationException $th) { - DB::rollback(); - return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Cpf inválido"]); - } catch (\Throwable $th) { - DB::rollback(); - return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => $th->getMessage()]); - } - - } - - - public function telaShowSubst(Request $request) - { - $trabalho = Trabalho::find($request->trabalho_id); - $substituicoesProjeto = Substituicao::where('trabalho_id', $trabalho->id)->orderBy('created_at', 'DESC')->get(); - $substituicoesPendentes = Substituicao::where('trabalho_id', $trabalho->id)->where('status', 'Em Aguardo')->orderBy('created_at', 'DESC')->get(); - - return view('administrador.analiseSubstituicoes')->with(['substituicoesPendentes' => $substituicoesPendentes, - 'substituicoesProjeto' => $substituicoesProjeto, - 'trabalho' => $trabalho]); - } - - public function aprovarSubstituicao(Request $request) - { - $substituicao = Substituicao::find($request->substituicaoID); - $trabalho = Trabalho::find($substituicao->trabalho->id); - - if ($request->aprovar == 'true') { - try { - if ($substituicao->tipo == 'TrocarPlano') { - if(!empty($substituicao->participanteSubstituido)){ - $substituicao->participanteSubstituido->planoTrabalho()->where('id', '!=', $substituicao->planoSubstituto->id)->delete(); - } - $substituicao->status = 'Finalizada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; - - $substituicao->concluida_em = now(); - $substituicao->save(); - - } else { - if(!empty($substituicao->participanteSubstituido)){ - $substituicao->participanteSubstituido->delete(); - } - - $trabalho->participantes()->save($substituicao->participanteSubstituto); - - $substituicao->status = 'Finalizada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; - $substituicao->concluida_em = now(); - - $substituicao->save(); - } - - Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status)); - return redirect()->back()->with(['sucesso' => 'Substituição concluída!']); - } catch (\Throwable $th) { - return redirect()->back()->with(['erro' => $th->getMessage()]); - } - - - } else { - - - try { - - - if ($substituicao->tipo == 'TrocarPlano') { - $substituicao->participanteSubstituido->planoTrabalho()->where('id', '=', $substituicao->planoSubstituto->id)->delete(); - $substituicao->status = 'Negada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; - - $substituicao->concluida_em = now(); - $substituicao->save(); - } elseif ($substituicao->tipo == 'ManterPlano') { - $substituicao->planoSubstituto->participanteId = $substituicao->participanteSubstituido->id; - $substituicao->planoSubstituto->save(); - $substituicao->participanteSubstituto->delete(); - - $substituicao->status = 'Negada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; - $substituicao->concluida_em = now(); - - $substituicao->save(); - } else { - $substituicao->participanteSubstituto->delete(); - - $substituicao->status = 'Negada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; - $substituicao->concluida_em = now(); - - $substituicao->save(); - } - - $trabalho = Trabalho::find($substituicao->trabalho->id); - Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status)); - return redirect()->back()->with(['sucesso' => 'Substituição cancelada com sucesso!']); - } catch (\Throwable $th) { - - return redirect()->back()->with(['erro' => $th->getMessage()]); - - } - } - - - } - - public function aprovarProposta(Request $request, $id) - { - $trabalho = Trabalho::find($id); - $trabalho->status = $request->statusProp; - $trabalho->comentario = $request->comentario; - $trabalho->save(); - - return redirect()->back()->with(['sucesso' => 'Proposta avaliada com sucesso']); - - } + 'Acre', + 'AL' => 'Alagoas', + 'AP' => 'Amapá', + 'AM' => 'Amazonas', + 'BA' => 'Bahia', + 'CE' => 'Ceará', + 'DF' => 'Distrito Federal', + 'ES' => 'Espirito Santo', + 'GO' => 'Goiás', + 'MA' => 'Maranhão', + 'MS' => 'Mato Grosso do Sul', + 'MT' => 'Mato Grosso', + 'MG' => 'Minas Gerais', + 'PA' => 'Pará', + 'PB' => 'Paraíba', + 'PR' => 'Paraná', + 'PE' => 'Pernambuco', + 'PI' => 'Piauí', + 'RJ' => 'Rio de Janeiro', + 'RN' => 'Rio Grande do Norte', + 'RS' => 'Rio Grande do Sul', + 'RO' => 'Rondônia', + 'RR' => 'Roraima', + 'SC' => 'Santa Catarina', + 'SP' => 'São Paulo', + 'SE' => 'Sergipe', + 'TO' => 'Tocantins', + ); + + public function index($id) + { + $edital = Evento::find($id); + $grandeAreas = GrandeArea::orderBy('nome')->get(); + $areaTematicas = AreaTematica::orderBy('nome')->get(); + $ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get(); + $funcaoParticipantes = FuncaoParticipantes::orderBy('nome')->get(); + $proponente = Proponente::where('user_id', Auth::user()->id)->first(); + + if($proponente == null){ + return view('proponente.cadastro')->with(['mensagem' => 'Você não possui perfil de Proponente, para submeter algum projeto preencha o formulário.']);; + } + + $rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$edital->id)->where('status', 'Rascunho') + ->orderByDesc('updated_at')->first(); + + // dd($estados); + + return view('evento.submeterTrabalho',[ + // return view('evento.backupForm',[ + 'edital' => $edital, + 'grandeAreas' => $grandeAreas, + 'funcaoParticipantes'=> $funcaoParticipantes, + 'rascunho' => $rascunho, + 'enum_turno' => Participante::ENUM_TURNO, + 'estados' => $this->estados, + 'areaTematicas' => $areaTematicas, + 'ods' =>$ODS, + ]); + } + + public function arquivar(Request $request){ + + $trabalho = Trabalho::find($request->trabalho_id); + $arquivos = Arquivo::where('trabalhoId',$trabalho->id)->get(); + if($request->arquivar_tipo == 1 ){ + $trabalho->arquivado = true; + foreach ($arquivos as $arquivo){ + $arquivo->arquivado = true; + $arquivo->update(); + } + $message = "Projeto ".$trabalho->titulo." arquivado"; + }else{ + $trabalho->arquivado = false; + foreach ($arquivos as $arquivo){ + $arquivo->arquivado = false; + $arquivo->update(); + } + $message = "Projeto ".$trabalho->titulo." desarquivado"; + } + $trabalho->update(); + return redirect()->back()->with(['sucesso'=>$message ]); + } + + public function storeParcial(Request $request){ + $mytime = Carbon::now('America/Recife'); + $mytime = $mytime->toDateString(); + $evento = Evento::find($request->editalId); + $coordenador = CoordenadorComissao::find($evento->coordenadorId); + + //Relaciona o projeto criado com o proponente que criou o projeto + $proponente = Proponente::where('user_id', Auth::user()->id)->first(); + + $trabalho = "trabalho"; + if ($evento->inicioSubmissao > $mytime) { + if ($mytime >= $evento->fimSubmissao) { + return redirect()->route('home'); + } + } + + //--Salvando os dados da submissão temporariamente + $this->armazenarInfoTemp($request, $proponente); + + return redirect()->route('projetos.edital', ['id' => $request->editalId]); + } + + //Armazena temporariamente dados da submissão, no banco de dados e no storage + public function armazenarInfoTemp(Request $request, $proponente) + { + + //---Dados do Projeto + $trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$request->editalId)->where('status', 'Rascunho') + ->orderByDesc('updated_at')->first(); + //dd($trabalho); + if($trabalho == null){ + $trabalho = new Trabalho(); + $trabalho->proponente_id = $proponente->id; + $trabalho->evento_id = $request->editalId; + $trabalho->status = 'Rascunho'; + + $stringKeys = ['titulo','linkGrupoPesquisa', 'linkLattesEstudante','pontuacaoPlanilha','anexoProjeto', + 'anexoPlanilhaPontuacao', 'anexoLattesCoordenador', 'conflitosInteresse']; + $intKeys = ['grande_area_id','area_id','sub_area_id','coordenador_id']; + + $trabalho->fill( + array_fill_keys($stringKeys, "") + array_fill_keys($intKeys, 1) + )->save(); + //dd($trabalho); + } + + if(!(is_null($request->nomeProjeto)) ) { + $trabalho->titulo = $request->nomeProjeto; + } + if(!(is_null($request->grandeArea))){ + $trabalho->grande_area_id = $request->grandeArea; + } + if(!(is_null($request->area))){ + $trabalho->area_id = $request->area; + } + if(!(is_null($request->subArea))){ + $trabalho->sub_area_id = $request->subArea; + } + if(!(is_null($request->pontuacaoPlanilha))){ + $trabalho->pontuacaoPlanilha = $request->pontuacaoPlanilha; + } + if(!(is_null($request->linkGrupo))){ + $trabalho->linkGrupoPesquisa = $request->linkGrupo; + } + if(!(is_null($request->conflitosInteresse))){ + $trabalho->conflitosInteresse = $request->conflitosInteresse; + } + + //Anexos do projeto + + $pasta = 'trabalhos/' . $request->editalId . '/' . $trabalho->id; + + if(!(is_null($request->anexoDecisaoCONSU)) ) { + $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, "CONSU.pdf"); + } + if (!(is_null($request->anexoComiteEtica))) { + $trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, "Comite_de_etica.pdf"); + } + if (!(is_null($request->justificativaAutorizacaoEtica))) { + $trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, "Justificativa.pdf"); + } + if (!(is_null($request->anexoProjeto))) { + $trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, "Projeto.pdf"); + } + if (!(is_null($request->anexoLattesCoordenador))) { + $trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, "Lattes_Coordenador.pdf"); + } + if (!(is_null($request->anexoPlanilhaPontuacao))) { + $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha.". $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension()); + } + + $trabalho->update(); + + //---Anexos planos de trabalho + + //dd($trabalho); + + return $trabalho; + } + + public function validarAnexosRascunho(Request $request, $trabalho){ + $validator = Validator::make($trabalho->getAttributes(),[ + 'anexoPlanilhaPontuacao' => $request->anexoPlanilhaPontuacao==null?['planilha']:[], + ]); + + if ($validator->fails()) { + //dd('asdf'); + return back()->withErrors($validator)->withInput(); + } + return 1; + } + + 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->anexoDecisaoCONSU)) { + if (Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) { + Storage::delete($trabalho->anexoDecisaoCONSU); + } + $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf'); + } + // } + + //Autorização ou Justificativa + if (isset($request->anexoAutorizacaoComiteEtica)) { + if (Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) { + Storage::delete($trabalho->anexoAutorizacaoComiteEtica); + } + $trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf'); + $trabalho->justificativaAutorizacaoEtica = null; + + } elseif (isset($request->justificativaAutorizacaoEtica)) { + if (Storage::disk()->exists($trabalho->justificativaAutorizacaoEtica)) { + Storage::delete($trabalho->justificativaAutorizacaoEtica); + } + $trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf'); + $trabalho->anexoAutorizacaoComiteEtica = null; + } + + //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->anexoPlanilhaPontuacao)) { + if (Storage::disk()->exists($trabalho->anexoPlanilhaPontuacao)) { + Storage::delete($trabalho->anexoPlanilhaPontuacao); + } + + $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension()); + } + + // Anexo grupo pesquisa + if (isset($request->anexoGrupoPesquisa)) { + if (Storage::disk()->exists($trabalho->anexoGrupoPesquisa)) { + Storage::delete($trabalho->anexoGrupoPesquisa); + } + $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension()); + } + + //Anexo documentro extra + if (isset($request->anexo_docExtra)) { + if (Storage::disk()->exists($trabalho->anexo_docExtra)) { + Storage::delete($trabalho->anexo_docExtra); + } + $trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension()); + } + + $trabalho->save(); + return $trabalho; + } + + // Anexo Projeto + if (isset($request->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->anexoDecisaoCONSU)) { + $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf'); + } + //} + + //Autorização ou Justificativa + if (isset($request->anexoAutorizacaoComiteEtica)) { + $trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf'); + $trabalho->justificativaAutorizacaoEtica = null; + + } elseif (isset($request->justificativaAutorizacaoEtica)) { + $trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf'); + $trabalho->anexoAutorizacaoComiteEtica = null; + + } + + //Anexo Lattes + if (isset($request->anexoLattesCoordenador)) { + $trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf'); + } + + //Anexo Planilha + if (isset($request->anexoPlanilhaPontuacao)) { + $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension()); + } + + // Anexo grupo pesquisa + if (isset($request->anexoGrupoPesquisa)) { + $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension()); + } + + // Anexo documento extra + if (isset($request->anexo_docExtra)) { + $trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension()); + } + + //Anexo SIPAC + if (isset($request->anexo_SIPAC)) { + if (Storage::disk()->exists($trabalho->anexo_SIPAC)) { + Storage::delete($trabalho->anexo_SIPAC); + } + $trabalho->anexo_SIPAC = Storage::putFileAs($pasta, $request->anexo_SIPAC, "Anexo_SIPAC." . $request->file('anexo_SIPAC')->extension()); + } + + return $trabalho; + } + + public function show($id) + { + $projeto = Trabalho::find($id); + if(Auth::user()->id != $projeto->proponente->user->id){ + return redirect()->back(); + } + $edital = Evento::find($projeto->evento_id); + $grandeAreas = GrandeArea::all(); + $areas = Area::all(); + $subareas = Subarea::all(); + $areasTematicas = AreaTematica::all(); + $funcaoParticipantes = FuncaoParticipantes::all(); + $participantes = $projeto->participantes; + $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get(); + $users = User::whereIn('id', $participantesUsersIds)->get(); + $arquivos = Arquivo::where('trabalhoId', $id)->get(); + $proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first(); + + // Verficação de pendencia de substituição + $aux = count(Substituicao::where('status','Em Aguardo')->whereIn('participanteSubstituido_id',$projeto->participantes->pluck('id'))->get()); + $flagSubstituicao = 1; + if($aux != 0){ + $flagSubstituicao = -1; + } + + $trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get(); + + $avals_projeto = []; + $AvalRelatParcial = []; + $AvalRelatFinal = []; + + if (isset($arquivos)) { + foreach ($arquivos as $arquivo) { + array_push($avals_projeto, AvaliacaoRelatorio::where('arquivo_id', $arquivo->id)->get()); + } + } + + foreach ($avals_projeto as $avals) { + foreach ($avals as $aval){ + if ($aval->tipo == 'Parcial') { + array_push($AvalRelatParcial, $aval); + } else { + array_push($AvalRelatFinal, $aval); + } + } + } + + + + return view('projeto.visualizar')->with(['projeto' => $projeto, + 'grandeAreas' => $grandeAreas, + 'areas' => $areas, + 'subAreas' => $subareas, + 'edital' => $edital, + 'users' => $users, + 'funcaoParticipantes' => $funcaoParticipantes, + 'participantes' => $participantes, + 'arquivos' => $arquivos, + 'estados' => $this->estados, + 'visualizar' => true, + 'enum_turno' => Participante::ENUM_TURNO, + 'areasTematicas' => $areasTematicas, + 'flagSubstituicao' =>$flagSubstituicao, + 'trabalhos_user' => $trabalhos_user, + 'AvalRelatParcial' => $AvalRelatParcial, + 'AvalRelatFinal' => $AvalRelatFinal, + 'proponente' => $proponente + ]); + } + + public function exportProjeto($id) + { + $projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first(); + if (!$projeto) { + return back()->withErrors(['Proposta não encontrada!']); + } + $edital = Evento::find($projeto->evento_id); + $grandeAreas = GrandeArea::all(); + $areas = Area::all(); + $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(); + $enum_turno = Participante::ENUM_TURNO; + view()->share('projeto.visualizar', [$projeto, $grandeAreas, $areas, $subAreas, $edital, $users, $funcaoParticipantes, $participantes, $arquivos, $enum_turno]); + + $pdf = PDF::loadView('projeto.visualizar', compact('projeto', 'grandeAreas', 'areas', 'subAreas', 'edital', 'users', 'funcaoParticipantes', 'participantes', 'arquivos', 'enum_turno'))->setOptions(['defaultFont' => 'sans-serif']); + + // download PDF file with download method + return $pdf->download('pdf_file.pdf'); + } + + public function edit($id) + { + if(Auth::user()->tipo=='administrador'){ + $projeto = Trabalho::find($id); + }else{ + $projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first(); + } + + $proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first(); + if (!$projeto) { + return back()->withErrors(['Proposta não encontrada!']); + } + $edital = Evento::find($projeto->evento_id); + $grandeAreas = GrandeArea::all(); + $areaTematicas = AreaTematica::orderBy('nome')->get(); + $areas = Area::all(); + $subareas = Subarea::all(); + $ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get(); + $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(); + //dd(Participante::all()); + $rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $edital->id)->where('status', 'Rascunho') + ->orderByDesc('updated_at')->first(); + + $trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get(); + + return view('projeto.editar')->with(['projeto' => $projeto, + 'grandeAreas' => $grandeAreas, + 'areas' => $areas, + 'subAreas' => $subareas, + 'edital' => $edital, + 'users' => $users, + 'funcaoParticipantes' => $funcaoParticipantes, + 'participantes' => $participantes, + 'arquivos' => $arquivos, + 'enum_turno' => Participante::ENUM_TURNO, + 'estados' => $this->estados, + 'areaTematicas' => $areaTematicas, + 'listaOds' => $ODS, + 'trabalhos_user' => $trabalhos_user, + 'proponente' => $proponente + ]); + } + + public function destroy(Request $request) + { + $projeto = Trabalho::find($request->id); + //dd($trabalho); + Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id); + + $participantes = $projeto->participantes; + foreach ($participantes as $participante) { + $plano = $participante->planoTrabalho; + if ($plano) + $plano->delete(); + $participante->delete(); + } + + $projeto->delete(); + return redirect()->back()->with(['mensagem' => 'Projeto deletado com sucesso!']); + } + + public function excluirParticipante($id) + { + $participante = Participante::where('id', $id)->first(); + //$participante = Participante::where('user_id', Auth()->user()->id) + // ->where('trabalho_id', $id)->first(); + + //$participante->trabalhos()->detach($id); + $participante->delete(); + + return redirect()->back(); + } + + public function solicitarCertificado(Trabalho $trabalho, Request $request) + { + $users = User::find($request->users); + $coord = $trabalho->coordenador; + $SolicitacaoCertificado = SolicitacaoCertificado::create(); + Notificacao::create([ + 'remetente_id' => auth()->user()->id, + 'destinatario_id' => $coord->user_id, + 'solicitacao_certificado_id' => $SolicitacaoCertificado->id, + 'trabalho_id' => $trabalho->id, + 'lido' => false, + 'tipo' => 6 + ]); + foreach ($users as $user) { + SolicitacaoParticipante::create([ + 'user_id' => $user->id, + 'solicitacao_certificado_id' => $SolicitacaoCertificado->id, + ]); + } + $admins = Administrador::all(); + foreach ($admins as $admin) { + $userTemp = User::find($admin->user_id); + Notificacao::create([ + 'remetente_id' => auth()->user()->id, + 'destinatario_id' => $admin->user_id, + 'solicitacao_certificado_id' => $SolicitacaoCertificado->id, + 'trabalho_id' => $trabalho->id, + 'lido' => false, + 'tipo' => 6, + ]); + } + $destinatarios = $admins->map(function($admin) {return $admin->user;})->push($coord->user); + Notification::send($destinatarios, new SolicitacaoCertificadoNotification($trabalho->proponente, $trabalho, $userTemp, $users)); + return redirect()->route('trabalho.show', ['id' => $trabalho->id])->with('sucesso', 'Solicitação de certificado/declaração efetuada com sucesso!'); + } + + + public function novaVersao(Request $request) + { + $mytime = Carbon::now('America/Recife'); + $mytime = $mytime->toDateString(); + $evento = Evento::find($request->eventoId); + if ($evento->inicioSubmissao > $mytime) { + if ($mytime >= $evento->fimSubmissao) { + return redirect()->route('home'); + } + } + $validatedData = $request->validate([ + 'arquivo' => ['required', 'file', 'mimes:pdf'], + 'eventoId' => ['required', 'integer'], + 'trabalhoId' => ['required', 'integer'], + ]); + + $trabalho = Trabalho::find($request->trabalhoId); + + if (Auth::user()->id != $trabalho->autorId) { + return redirect()->route('home'); + } + + $arquivos = $trabalho->arquivo; + $count = 1; + foreach ($arquivos as $key) { + $key->versaoFinal = false; + $key->save(); + $count++; + } + + $file = $request->arquivo; + $path = 'trabalhos/' . $request->eventoId . '/' . $trabalho->id . '/'; + $nome = $count . ".pdf"; + Storage::putFileAs($path, $file, $nome); + + $arquivo = Arquivo::create([ + 'nome' => $path . $nome, + 'trabalhoId' => $trabalho->id, + 'versaoFinal' => true, + ]); + + return redirect()->route('evento.visualizar', ['id' => $request->eventoId]); + } + + public function detalhesAjax(Request $request) + { + $validatedData = $request->validate([ + 'trabalhoId' => ['required', 'integer'] + ]); + + $trabalho = Trabalho::find($request->trabalhoId); + $revisores = Atribuicao::where('trabalhoId', $request->trabalhoId)->get(); + $revisoresAux = []; + foreach ($revisores as $key) { + if ($key->revisor->user->name != null) { + array_push($revisoresAux, [ + 'id' => $key->revisor->id, + 'nomeOuEmail' => $key->revisor->user->name + ]); + } else { + array_push($revisoresAux, [ + 'id' => $key->revisor->id, + 'nomeOuEmail' => $key->revisor->user->email + ]); + } + } + $revisoresDisponeis = Revisor::where('eventoId', $trabalho->eventoId)->where('areaId', $trabalho->areaId)->get(); + $revisoresAux1 = []; + foreach ($revisoresDisponeis as $key) { + //verificar se ja é um revisor deste trabalhos + $revisorNaoExiste = true; + foreach ($revisoresAux as $key1) { + if ($key->id == $key1['id']) { + $revisorNaoExiste = false; + } + } + // + if ($revisorNaoExiste) { + if ($key->user->name != null) { + array_push($revisoresAux1, [ + 'id' => $key->id, + 'nomeOuEmail' => $key->user->name + ]); + } else { + array_push($revisoresAux1, [ + 'id' => $key->id, + 'nomeOuEmail' => $key->user->email + ]); + } + } + } + return response()->json([ + 'titulo' => $trabalho->titulo, + 'resumo' => $trabalho->resumo, + 'revisores' => $revisoresAux, + 'revisoresDisponiveis' => $revisoresAux1 + ], 200); + } + + public function atribuirAvaliadorTrabalho(Request $request) + { + + $request->trabalho_id; + $trabalho = Trabalho::find($request->trabalho_id); + + $avaliadores = Avaliador::all(); + + + return view('coordenadorComissao.gerenciarEdital.atribuirAvaliadorTrabalho', ['avaliadores' => $avaliadores, 'trabalho' => $trabalho, 'evento' => $trabalho->evento]); + + } + + public function atribuir(Request $request) + { + + $trabalho = Trabalho::find($request->trabalho_id); + + $todosAvaliadores = Avaliador::all(); + + $avaliadores = Avaliador::whereIn('id', $request->avaliadores)->with('user')->get(); + + $trabalho->avaliadors()->sync($request->avaliadores); + + foreach ($avaliadores as $key => $avaliador) { + + $user = $avaliador->user; + $subject = "Trabalho atribuido"; + Mail::to($user->email) + ->send(new EventoCriado($user, $subject)); + } + + return view('coordenadorComissao.detalhesEdital', ['evento' => $trabalho->evento]); + } + + public function projetosDoEdital($id) + { + $edital = Evento::find($id); + $projetos = Trabalho::where('evento_id', '=', $id)->get(); + $hoje = Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); + + return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje' => $hoje]); + } + + public function baixarAnexoProjeto($id) + { + $projeto = Trabalho::find($id); + //dd($projeto); + if (Storage::disk()->exists($projeto->anexoProjeto)) { + ob_end_clean(); + return Storage::download($projeto->anexoProjeto); + } + return abort(404); + } + + public function baixarAnexoGrupoPesquisa($id) + { + $projeto = Trabalho::find($id); + if (Storage::disk()->exists($projeto->anexoGrupoPesquisa)) { + ob_end_clean(); + return Storage::download($projeto->anexoGrupoPesquisa); + } + return abort(404); + } + + public function baixarAnexoConsu($id) + { + $projeto = Trabalho::find($id); + + if (Storage::disk()->exists($projeto->anexoDecisaoCONSU)) { + ob_end_clean(); + return Storage::download($projeto->anexoDecisaoCONSU); + } + return abort(404); + } + + public function baixarAnexoComite($id) + { + $projeto = Trabalho::find($id); + + if (Storage::disk()->exists($projeto->anexoAutorizacaoComiteEtica)) { + ob_end_clean(); + return Storage::download($projeto->anexoAutorizacaoComiteEtica); + } + return abort(404); + } + + public function baixarAnexoLattes($id) + { + $projeto = Trabalho::find($id); + + if (Storage::disk()->exists($projeto->anexoLattesCoordenador)) { + ob_end_clean(); + return Storage::download($projeto->anexoLattesCoordenador); + } + return abort(404); + } + + public function baixarAnexoPlanilha($id) + { + $projeto = Trabalho::find($id); + + if (Storage::disk()->exists($projeto->anexoPlanilhaPontuacao)) { + ob_end_clean(); + $file = $projeto->anexoPlanilhaPontuacao; + $ext = explode(".", $file); + + switch ($ext[1]) { + case 'xlsx': + $hearder = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; + break; + case 'xls': + $hearder = 'application/vnd.ms-excel'; + break; + case 'ods': + $hearder = 'application/vnd.oasis.opendocument.spreadsheet'; + break; + + default: + $hearder = 'application/vnd.ms-excel'; + break; + } + + $headers = array( + "Content-type: {$hearder}", + ); + + + return Storage::download($projeto->anexoPlanilhaPontuacao, "Planilha.{$ext[1]}", $headers); + } + return abort(404); + } + + public function baixarAnexoJustificativa($id) + { + $projeto = Trabalho::find($id); + + if (Storage::disk()->exists($projeto->justificativaAutorizacaoEtica)) { + ob_end_clean(); + return Storage::download($projeto->justificativaAutorizacaoEtica); + } + + return abort(404); + } + + public function baixarAnexoDocExtra($id) + { + $projeto = Trabalho::find($id); + if (Storage::disk()->exists($projeto->anexo_docExtra)) { + ob_end_clean(); + return Storage::download($projeto->anexo_docExtra); + } + return abort(404); + } + + public function baixarAnexoSIPAC($id) + { + $projeto = Trabalho::find($id); + if (Storage::disk()->exists($projeto->anexo_SIPAC)) { + ob_end_clean(); + return Storage::download($projeto->anexo_SIPAC); + } + return abort(404); + } + + public function baixarAnexoTemp($eventoId, $nomeAnexo) + { + $proponente = Proponente::where('user_id', Auth::user()->id)->first(); + + $trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $eventoId)->where('status', 'Rascunho') + ->orderByDesc('updated_at')->first(); + + if (Storage::disk()->exists($trabalho->$nomeAnexo)) { + ob_end_clean(); + return Storage::download($trabalho->$nomeAnexo); + } + return abort(404); + } + + public function baixarEventoTemp($nomeAnexo) + { + $eventoTemp = Evento::where('criador_id', Auth::user()->id)->where('anexosStatus', 'temporario') + ->orderByDesc('updated_at')->first(); + + if (Storage::disk()->exists($eventoTemp->$nomeAnexo)) { + ob_end_clean(); + return Storage::download($eventoTemp->$nomeAnexo); + } + return abort(404); + } +//xxfa + + public function update(UpdateTrabalho $request, $id) + { + try { + if (!$request->has('rascunho')) { + $request->merge([ + 'status' => 'submetido' + ]); + } else { + $request->merge([ + 'status' => 'rascunho' + ]); + } + $evento = Evento::find($request->editalId); + $request->merge([ + 'coordenador_id' => $evento->coordenadorComissao->id + ]); + $trabalho = Trabalho::find($id); + $trabalho->ods()->sync($request->ods); + $proponente = Proponente::where('user_id', Auth::user()->id)->first(); + + DB::beginTransaction(); + if (!$trabalho) { + return back()->withErrors(['Proposta não encontrada']); + } + + if($evento->tipo=="PIBEX"){ + $trabalho->update($request->except([ + 'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra' + ])); + }else{ + $trabalho->update($request->except([ + 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', + 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', + 'justificativaAutorizacaoEtica','modalidade','anexo_docExtra' + ])); + } + + $pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id; + + $trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento); + $trabalho->save(); + + + if($request->integrantesExistentes == null){ + $request->integrantesExistentes = []; + } + $usuariosRemovidos = TrabalhoUser::where('trabalho_id', $trabalho->id)->whereNotIn('user_id', $request->integrantesExistentes)->get(); + + if($usuariosRemovidos->first() != null) { + foreach($usuariosRemovidos as $usuarioRemovido){ + $usuarioRemovido->delete(); + } + } + + if($evento->natureza_id == 3 && $request->integrantes != null){ + foreach($request->integrantes as $integrante){ + $integrante = explode(',', $integrante); + $trabalho_user = new TrabalhoUser(); + $trabalho_user->user_id = $integrante[0]; + $trabalho_user->funcao_participante_id = $integrante[1]; + $trabalho_user->trabalho_id = $trabalho->id; + $trabalho_user->save(); + } + } + + if ($evento->numParticipantes != 0) { + if ($request->marcado == null) { + $idExcluido = $trabalho->participantes->pluck('id'); + + } else { + $idExcluido = []; + } + + foreach ($request->participante_id as $key => $value) { + if ($request->marcado != null && array_search($key, $request->marcado) === false) { + if ($value !== null) + array_push($idExcluido, $value); + } + } + + + foreach ($idExcluido as $key => $value) { + $trabalho->participantes()->find($value)->delete(); + } + $trabalho->refresh(); + } + + if ($request->has('marcado')) { + foreach ($request->marcado as $key => $part) { + $part = intval($part); + $passwordTemporario = Str::random(8); + $data['name'] = $request->name[$part]; + $data['email'] = $request->email[$part]; + $data['password'] = bcrypt($passwordTemporario); + $data['data_de_nascimento'] = $request->data_de_nascimento[$part]; + $data['cpf'] = $request->cpf[$part]; + $data['tipo'] = 'participante'; + $data['funcao_participante_id'] = 4; + $data['rg'] = $request->rg[$part]; + $data['celular'] = $request->celular[$part]; + $data['cep'] = $request->cep[$part]; + $data['uf'] = $request->uf[$part]; + $data['cidade'] = $request->cidade[$part]; + $data['rua'] = $request->rua[$part]; + $data['numero'] = $request->numero[$part]; + $data['bairro'] = $request->bairro[$part]; + $data['complemento'] = $request->complemento[$part]; + + if ($request->instituicao[$part] != "Outra") { + $data['instituicao'] = $request->instituicao[$part]; + } else { + $data['instituicao'] = $request->outrainstituicao[$part]; + } + + $data['total_periodos'] = $request->total_periodos[$part]; + + if ($request->curso[$part] != "Outro") { + $data['curso'] = $request->curso[$part]; + } else { + $data['curso'] = $request->outrocurso[$part]; + } + + $data['turno'] = $request->turno[$part]; + $data['periodo_atual'] = $request->periodo_atual[$part]; + $data['ordem_prioridade'] = $request->ordem_prioridade[$part]; + if($evento->tipo!="PIBEX") { + $data['media_do_curso'] = $request->media_do_curso[$part]; + } + $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part]; + + if($request->participante_id[$part] != null){ + $participante = Participante::find($request->participante_id[$part]); + $user = User::where('email', $participante->user->email)->first(); + }else{ + $user = User::where('email', $data['email'])->first(); + } + + + + + if ($user == null) { + $data['usuarioTemp'] = true; + $user = User::create($data); + $endereco = Endereco::create($data); + $endereco->user()->save($user); + $participante = Participante::create($data); + $participante->data_entrada = $participante->created_at; + $user->participantes()->save($participante); + $trabalho->participantes()->save($participante); + $participante->trabalho_id = $trabalho->id; + $participante->save(); + + } else { + // $user = $participante->user; + $user->update($data); + if( $user->endereco == null){ + $endereco = Endereco::create($data); + $endereco->user()->save($user); + }else{ + $endereco = $user->endereco; + $endereco->update($data); + } + $participante = $user->participantes->where('trabalho_id', $trabalho->id)->where('id', $request->participante_id[$part])->first(); + // dd($participante); + if ($participante == null) { + // dd('part null'); + $participante = Participante::create($data); + $user->participantes()->save($participante); + $trabalho->participantes()->save($participante); + } else { + // dd('part update'); + $participante->update($data); + } + + } + + if ($request->has('anexoPlanoTrabalho') && array_key_exists($part, $request->anexoPlanoTrabalho) && $request->nomePlanoTrabalho[$part] != null) { + if (Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->count()) { + $arquivo = Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->first(); + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $titulo = $data['nomePlanoTrabalho']; + $file = $request->anexoPlanoTrabalho[$part]; + Storage::putFileAs($path, $file, $nome); + $arquivo->update([ + 'titulo' => $titulo, + 'nome' => $path . $nome, + 'data' => now(), + ]); + } else { + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $file = $request->anexoPlanoTrabalho[$part]; + Storage::putFileAs($path, $file, $nome); + $arquivo = new Arquivo(); + $arquivo->titulo = $data['nomePlanoTrabalho']; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $trabalho->id; + $arquivo->data = now(); + $arquivo->participanteId = $participante->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + + } + + } + + } + + } else { + $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho; + + if (Arquivo::where('proponenteId', $proponente->id)->where('trabalhoId', $trabalho->id)->count()) { + $arquivo = Arquivo::where('proponenteId', $proponente->id)->where('trabalhoId', $trabalho->id)->first(); + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $titulo = $data['nomePlanoTrabalho']; + if ($request->has('anexoPlanoTrabalho')) { + $file = $request->anexoPlanoTrabalho; + Storage::putFileAs($path, $file, $nome); + } else { + if($arquivo->nome != $path.$nome) { + Storage::rename( $arquivo->nome, $path.$nome ); + } + } + $arquivo->update([ + 'titulo' => $titulo, + 'nome' => $path . $nome, + 'data' => now(), + ]); + } else { + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $file = $request->anexoPlanoTrabalho; + Storage::putFileAs($path, $file, $nome); + $arquivo = new Arquivo(); + $arquivo->titulo = $data['nomePlanoTrabalho']; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $trabalho->id; + $arquivo->data = now(); + $arquivo->proponenteId = $proponente->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + } + } + + DB::commit(); + + if(Auth::user()->tipo == 'administrador'){ + return redirect(route('admin.analisarProposta',['id'=>$trabalho->id])); + } + + if (!$request->has('rascunho')) { + Notification::send($trabalho->proponente->user, new SubmissaoNotification($trabalho)); + } + + return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta atualizada!']); + + } catch (\Throwable $th) { + DB::rollback(); + return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]); + } + + } + + public function buscarUsuario(Request $request) { + $usuario = User::where('cpf', $request->cpf_consulta)->first(); + $funcao = FuncaoParticipantes::where('id', $request->funcao)->first(); + $participante = $usuario->participantes()->first(); + + if($usuario){ + return json_encode([$usuario, $funcao, $participante, $usuario->endereco()->first()]); + } + + return json_encode('inexistente'); + } + + + public function salvar(StoreTrabalho $request) + { + //dd($request->all()); + try { + if (!$request->has('rascunho')) { + $request->merge([ + 'status' => 'submetido' + ]); + } + $evento = Evento::find($request->editalId); + $proponente = Proponente::where('user_id', Auth::user()->id)->first(); + $request->merge([ + 'coordenador_id' => $evento->coordenadorComissao->id + ]); + + DB::beginTransaction(); + + if($evento->tipo=="PIBEX"){ + $trabalho = Auth::user()->proponentes->trabalhos() + ->create($request->except([ + 'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra', 'anexo_SIPAC' + ])); + }else if($evento->tipo=="CONTINUO"){ + $trabalho = Auth::user()->proponentes->trabalhos() + ->create($request->except([ + 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', + 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', + 'justificativaAutorizacaoEtica','modalidade','anexo_docExtra', + ])); + } else { + $trabalho = Auth::user()->proponentes->trabalhos() + ->create($request->except([ + 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', + 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', + 'justificativaAutorizacaoEtica','modalidade','anexo_docExtra', 'anexo_SIPAC' + ])); + } + + + if ($request->has('marcado')) { + foreach ($request->marcado as $key => $part) { + $part = intval($part); + + $passwordTemporario = Str::random(8); + $data['name'] = $request->name[$part]; + $data['email'] = $request->email[$part]; + $data['password'] = bcrypt($passwordTemporario); + $data['data_de_nascimento'] = $request->data_de_nascimento[$part]; + $data['cpf'] = $request->cpf[$part]; + $data['tipo'] = 'participante'; + $data['funcao_participante_id'] = 4; + $data['rg'] = $request->rg[$part]; + $data['celular'] = $request->celular[$part]; + $data['cep'] = $request->cep[$part]; + $data['uf'] = $request->uf[$part]; + $data['cidade'] = $request->cidade[$part]; + $data['rua'] = $request->rua[$part]; + $data['numero'] = $request->numero[$part]; + $data['bairro'] = $request->bairro[$part]; + $data['complemento'] = $request->complemento[$part]; + + if ($request->instituicao[$part] != "Outra") { + $data['instituicao'] = $request->instituicao[$part]; + } else { + $data['instituicao'] = $request->outrainstituicao[$part]; + } + + $data['total_periodos'] = $request->total_periodos[$part]; + + if ($request->curso[$part] != "Outro") { + $data['curso'] = $request->curso[$part]; + } else { + $data['curso'] = $request->outrocurso[$part]; + } + + $data['turno'] = $request->turno[$part]; + $data['periodo_atual'] = $request->periodo_atual[$part]; + $data['ordem_prioridade'] = $request->ordem_prioridade[$part]; + if($evento->tipo!="PIBEX") { + $data['media_do_curso'] = $request->media_do_curso[$part]; + } + $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part]; + + $user = User::where('email', $data['email'])->first(); + if ($user == null) { + $data['usuarioTemp'] = true; + $user = User::create($data); + $endereco = Endereco::create($data); + $endereco->user()->save($user); + } + // $participante = $user->participantes->where('trabalho_id', $trabalho->id)->first(); + // if ($participante == null){ + // $participante = Participante::create($data); + // } + $participante = Participante::create($data); + $participante->data_entrada = $participante->created_at; + $user->participantes()->save($participante); + + $participante->trabalho_id = $trabalho->id; + $participante->save(); + + if ($request->has('anexoPlanoTrabalho')) { + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $file = $request->anexoPlanoTrabalho[$part]; + Storage::putFileAs($path, $file, $nome); + $arquivo = new Arquivo(); + $arquivo->titulo = $data['nomePlanoTrabalho']; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $trabalho->id; + $arquivo->data = now(); + $arquivo->participanteId = $participante->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + + } + + } + } else { + $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho; + if ($request->has('anexoPlanoTrabalho')) { + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $file = $request->anexoPlanoTrabalho; + Storage::putFileAs($path, $file, $nome); + $arquivo = new Arquivo(); + $arquivo->titulo = $data['nomePlanoTrabalho']; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $trabalho->id; + $arquivo->data = now(); + $arquivo->proponenteId = $proponente->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + + } + } + + $evento->trabalhos()->save($trabalho); + + $pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id; + $trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento); + $trabalho->modalidade = $request->modalidade; + $trabalho->save(); + + + if($evento->natureza_id == 3){ + foreach($request->integrantes as $integrante){ + $integrante = explode(',', $integrante); + + $trabalho_user = new TrabalhoUser(); + $trabalho_user->user_id = $integrante[0]; + $trabalho_user->funcao_participante_id = $integrante[1]; + $trabalho_user->trabalho_id = $trabalho->id; + $trabalho_user->save(); + } + } + + $trabalho->ods()->sync($request->ods); + DB::commit(); + if (!$request->has('rascunho')) { + //Notificações + //Coordenador + $userTemp = User::find($evento->coordenadorComissao->user_id); + $notificacao = App\Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $evento->coordenadorComissao->user_id, + 'trabalho_id' => $trabalho->id, + 'lido' => false, + 'tipo' => 1, + ]); + $notificacao->save(); + // SubmissaoRecebidaNotification.php + Notification::send($userTemp, new SubmissaoRecebidaNotification($trabalho->id,$trabalho->titulo,$userTemp)); + //Proponente + $notificacao = App\Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => Auth::user()->id, + 'trabalho_id' => $trabalho->id, + 'lido' => false, + 'tipo' => 1, + ]); + $notificacao->save(); + // submissao e notificação.php $trabalho->id,$trabalho->titulo + Notification::send(Auth::user(), new SubmissaoNotification($trabalho)); + + + return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta submetida!']); + } else { + return redirect(route('proponente.projetos'))->with(['mensagem' => 'Rascunho salvo!']); + + } + } catch (\Throwable $th) { + DB::rollback(); + return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]); + } + + + } + + public function atribuirDados(Request $request, $edital, Trabalho $projeto = null) + { + if ($projeto == null) { + $projeto = new Trabalho(); + } + + $proponente = User::find(auth()->user()->id)->proponentes; + $hoje = now(); + + $projeto->titulo = $request->nomeProjeto; + $projeto->coordenador_id = $edital->coordenadorComissao->id; + $projeto->grande_area_id = $request->grandeArea; + $projeto->area_id = $request->area; + $projeto->sub_area_id = $request->subArea; + $projeto->pontuacaoPlanilha = $request->pontuacaoPlanilha; + $projeto->linkGrupoPesquisa = $request->linkGrupo; + $projeto->linkLattesEstudante = $request->linkLattesEstudante; + $projeto->data = $hoje; + $projeto->evento_id = $request->editalId; + $projeto->status = 'submetido'; + $projeto->proponente_id = $proponente->id; + $projeto->conflitosInteresse = $request->conflitosInteresse; + + // Salvando anexos no storage + $projeto->save(); + $pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id; + + $projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital); + + return $projeto; + } + + public function salvarParticipantes(Request $request, $edital, $projeto, $edicao = false) + { + if ($edicao) { + + $participantes = $projeto->participantes; + $participantesPermanecem = collect(); + // dd($request->all()); + foreach ($request->participante_id as $key => $id) { + // Novo participante + if ($id == 0 || $id == null) { + $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_atual[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + if($edital->tipo != "PIBEX"){ + $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, $edital->tipo,$edital->natureza_id)); + } 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_atual[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + if($edital->tipo != "PIBEX"){ + $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(); + // dd($arquivo); + } + // 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_atual[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + if($edital->tipo != "PIBEX"){ + $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 = $id; + $arquivo->versaoFinal = true; + $arquivo->save(); + } + } + } + // Excluidos + $participantesExcluidos = $participantes->diff($participantesPermanecem); + foreach ($participantesExcluidos as $participante) { + $plano = $participante->planoTrabalho; + if ($plano) + $plano->delete(); + $participante->delete(); + } + + return true; + } + if ($request->emailParticipante != null) { + foreach ($request->emailParticipante as $key => $email) { + $userParticipante = User::where('email', $email)->first(); + + $participante = new Participante(); + + if ($userParticipante == null) { + $passwordTemporario = Str::random(8); + + $usuario = new User(); + $usuario->email = $email; + $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_atual[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + if($edital->tipo != "PIBEX"){ + $participante->media_do_curso = $request->media_geral_curso[$key]; + } + $participante->save(); + + $usuario = User::where('email', $email)->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(); + $subject = "Participante de Projeto"; + Mail::to($email)->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id)); + } 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_atual[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + if($edital->tipo != "PIBEX"){ + $participante->media_do_curso = $request->media_geral_curso[$key]; + } + $participante->save(); + + + if ($request->anexoPlanoTrabalho[$key]) { + $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(); + + } + + $subject = "Participante de Projeto"; + $time = Carbon::today('America/Recife'); + $time = $time->isoFormat('às H:mm, dddd, D/M/YYYY'); + Mail::to($email) + ->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto)); + + } + + // if($request->nomePlanoTrabalho[$key] != null){ + // $usuario = User::where('email', $email)->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(); + // } + } + } + + return true; + } + + 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(); + + // dd($request->all()); + // Salvando participantes + $this->salvarParticipantes($request, $edital, $projeto, true); + + return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto atualizado com sucesso!']); + } + + + public function telaTrocaPart(Request $request) + { + $projeto = Trabalho::find($request->projeto_id); + $edital = Evento::find($projeto->evento_id); + + if(Auth::user()->id != $projeto->proponente->user->id){ + return redirect()->back(); + } + + $participantes = $projeto->participantes; + $substituicoesProjeto = Substituicao::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get(); + $desligamentosProjeto = Desligamento::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get(); + + return view('administrador.substituirParticipante')->with(['projeto' => $projeto, + 'edital' => $edital, + 'participantes' => $participantes, + 'substituicoesProjeto' => $substituicoesProjeto, + 'estados' => $this->estados, + 'enum_turno' => Participante::ENUM_TURNO, + 'desligamentosProjeto' => $desligamentosProjeto, + ]); + } + + public function trocaParticipante(Request $request) + { + try { + DB::beginTransaction(); + $trabalho = Trabalho::find($request->projetoId); + $evento = Evento::find($request->editalId); + $participanteSubstituido = Participante::where('id', $request->participanteId)->first(); + $planoAntigo = Arquivo::where('id', $participanteSubstituido->planoTrabalho->id)->first(); + + $passwordTemporario = Str::random(8); + $data['name'] = $request->name; + $data['email'] = $request->email; + $data['password'] = bcrypt($passwordTemporario); + $data['data_de_nascimento'] = $request->data_de_nascimento; + $data['data_entrada'] = $request->data_entrada; + $data['cpf'] = $request->cpf; + $data['tipo'] = 'participante'; + $data['funcao_participante_id'] = 4; + $data['rg'] = $request->rg; + $data['celular'] = $request->celular; + $data['linkLattes'] = $request->linkLattes; + $data['cep'] = $request->cep; + $data['uf'] = $request->uf; + $data['cidade'] = $request->cidade; + $data['rua'] = $request->rua; + $data['numero'] = $request->numero; + $data['bairro'] = $request->bairro; + $data['complemento'] = $request->complemento; + + if ($request->instituicao != "Outra") { + $data['instituicao'] = $request->instituicao; + } else { + $data['instituicao'] = $request->outrainstituicao; + } + + $data['total_periodos'] = $request->total_periodos; + + if ($request->curso != "Outro") { + $data['curso'] = $request->curso; + } else { + $data['curso'] = $request->outrocurso; + } + + $data['turno'] = $request->turno; + $data['periodo_atual'] = $request->periodo_atual; + $data['ordem_prioridade'] = $request->ordem_prioridade; + if($evento->tipo!="PIBEX") { + $data['media_do_curso'] = $request->media_do_curso; + } + $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho; + + if ($request->substituirApenasPlanoCheck == 'check') { + $substituicao = new Substituicao(); + + if ($request->has('anexoPlanoTrabalho')) { + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $file = $request->anexoPlanoTrabalho; + Storage::putFileAs($path, $file, $nome); + $arquivo = new Arquivo(); + $arquivo->titulo = $data['nomePlanoTrabalho']; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $trabalho->id; + $arquivo->data = now(); + $arquivo->participanteId = $participanteSubstituido->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + + $substituicao->status = 'Em Aguardo'; + $substituicao->tipo = 'TrocarPlano'; + $substituicao->observacao = $request->textObservacao; + $substituicao->participanteSubstituido_id = $participanteSubstituido->id; + $substituicao->participanteSubstituto_id = $participanteSubstituido->id; + $substituicao->planoSubstituto_id = $arquivo->id; + $substituicao->trabalho_id = $trabalho->id; + $substituicao->save(); + } + } else { + //$participanteSubstituido->delete(); + $substituicao = new Substituicao(); + $substituicao->observacao = $request->textObservacao; + if ($participanteSubstituido->data_entrada > $request->data_entrada) { + return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Escolha uma data de entrada posterior a entrada do discente substituído"]); + } + + $participanteSubstituido->data_saida = $request->data_entrada; + + \App\Validator\CpfValidator::validate($request->all()); + $user = User::where('email', $data['email'])->first(); + if (!$user) { + $data['usuarioTemp'] = true; + $user = User::create($data); + $endereco = Endereco::create($data); + $endereco->user()->save($user); + } + $participante = $user->participantes->where('trabalho_id', $trabalho->id)->first(); + if (!$participante) { + $participante = Participante::create($data); + $participanteSubstituido->save(); + } + + $pasta = 'participantes/' . $participante->id; + $participante->anexoTermoCompromisso = Storage::putFileAs($pasta, $request->anexoTermoCompromisso, "Termo_de_Compromisso.pdf"); + $participante->anexoComprovanteMatricula = Storage::putFileAs($pasta, $request->anexoComprovanteMatricula, "Comprovante_de_Matricula.pdf"); + $participante->anexoLattes = Storage::putFileAs($pasta, $request->anexoCurriculoLattes, "Curriculo_Lattes.pdf"); + if ($request->anexoAutorizacaoPais != null) { + $participante->anexoAutorizacaoPais = Storage::putFileAs($pasta, $request->anexoAutorizacaoPais, "Autorização_dos_Pais.pdf"); + } + if ($request->anexoComprovanteBancario != null) { + $participante->anexoComprovanteBancario = Storage::putFileAs($pasta, $request->anexoComprovanteBancario, "Comprovante_Bancario." . $request->file('anexoComprovanteBancario')->getClientOriginalExtension()); + } + + $user->participantes()->save($participante); + //$trabalho->participantes()->save($participante); + + if ($request->manterPlanoCheck == 'check') { + $substituicao->status = 'Em Aguardo'; + $substituicao->tipo = 'ManterPlano'; + $substituicao->observacao = $request->textObservacao; + $substituicao->participanteSubstituido_id = $participanteSubstituido->id; + $substituicao->participanteSubstituto_id = $participante->id; + $substituicao->trabalho_id = $trabalho->id; + $substituicao->planoSubstituto_id = $planoAntigo->id; + + $planoAntigo->participanteId = $participante->id; + + $substituicao->save(); + $planoAntigo->save(); + + } else { + + if ($request->has('anexoPlanoTrabalho')) { + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $file = $request->anexoPlanoTrabalho; + Storage::putFileAs($path, $file, $nome); + $arquivo = new Arquivo(); + $arquivo->titulo = $data['nomePlanoTrabalho']; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $trabalho->id; + $arquivo->data = now(); + $arquivo->participanteId = $participante->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + + $substituicao->status = 'Em Aguardo'; + $substituicao->tipo = 'Completa'; + $substituicao->observacao = $request->textObservacao; + $substituicao->participanteSubstituido_id = $participanteSubstituido->id; + $substituicao->participanteSubstituto_id = $participante->id; + $substituicao->trabalho_id = $trabalho->id; + $substituicao->planoSubstituto_id = $arquivo->id; + $substituicao->save(); + } + + } + } + + $evento->trabalhos()->save($trabalho); + $trabalho->save(); + + $notificacao = App\Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $evento->coordenadorComissao->user_id, + 'trabalho_id' => $trabalho->id, + 'lido' => false, + 'tipo' => 2, + ]); + $notificacao->save(); + + DB::commit(); + + Mail::to($evento->coordenadorComissao->user->email)->send(new SolicitacaoSubstituicao($evento, $trabalho,'',$substituicao->tipo,$substituicao->status)); + return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['sucesso' => 'Pedido de substituição enviado com sucesso!']); + } catch (\App\Validator\ValidationException $th) { + DB::rollback(); + return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Cpf inválido"]); + } catch (\Throwable $th) { + DB::rollback(); + return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => $th->getMessage()]); + } + + } + + + public function telaShowSubst(Request $request) + { + $trabalho = Trabalho::find($request->trabalho_id); + $substituicoesProjeto = Substituicao::where('trabalho_id', $trabalho->id)->orderBy('created_at', 'DESC')->get(); + $substituicoesPendentes = Substituicao::where('trabalho_id', $trabalho->id)->where('status', 'Em Aguardo')->orderBy('created_at', 'DESC')->get(); + + return view('administrador.analiseSubstituicoes')->with(['substituicoesPendentes' => $substituicoesPendentes, + 'substituicoesProjeto' => $substituicoesProjeto, + 'trabalho' => $trabalho]); + } + + public function aprovarSubstituicao(Request $request) + { + $substituicao = Substituicao::find($request->substituicaoID); + $trabalho = Trabalho::find($substituicao->trabalho->id); + + if ($request->aprovar == 'true') { + try { + if ($substituicao->tipo == 'TrocarPlano') { + if(!empty($substituicao->participanteSubstituido)){ + $substituicao->participanteSubstituido->planoTrabalho()->where('id', '!=', $substituicao->planoSubstituto->id)->delete(); + } + $substituicao->status = 'Finalizada'; + $substituicao->justificativa = $request->textJustificativa; + $substituicao->causa = $request->selectJustificativa; + + $substituicao->concluida_em = now(); + $substituicao->save(); + + } else { + if(!empty($substituicao->participanteSubstituido)){ + $substituicao->participanteSubstituido->delete(); + } + + $trabalho->participantes()->save($substituicao->participanteSubstituto); + + $substituicao->status = 'Finalizada'; + $substituicao->justificativa = $request->textJustificativa; + $substituicao->causa = $request->selectJustificativa; + $substituicao->concluida_em = now(); + + $substituicao->save(); + } + + Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status)); + return redirect()->back()->with(['sucesso' => 'Substituição concluída!']); + } catch (\Throwable $th) { + return redirect()->back()->with(['erro' => $th->getMessage()]); + } + + + } else { + + + try { + + + if ($substituicao->tipo == 'TrocarPlano') { + $substituicao->participanteSubstituido->planoTrabalho()->where('id', '=', $substituicao->planoSubstituto->id)->delete(); + $substituicao->status = 'Negada'; + $substituicao->justificativa = $request->textJustificativa; + $substituicao->causa = $request->selectJustificativa; + + $substituicao->concluida_em = now(); + $substituicao->save(); + } elseif ($substituicao->tipo == 'ManterPlano') { + $substituicao->planoSubstituto->participanteId = $substituicao->participanteSubstituido->id; + $substituicao->planoSubstituto->save(); + $substituicao->participanteSubstituto->delete(); + + $substituicao->status = 'Negada'; + $substituicao->justificativa = $request->textJustificativa; + $substituicao->causa = $request->selectJustificativa; + $substituicao->concluida_em = now(); + + $substituicao->save(); + } else { + $substituicao->participanteSubstituto->delete(); + + $substituicao->status = 'Negada'; + $substituicao->justificativa = $request->textJustificativa; + $substituicao->causa = $request->selectJustificativa; + $substituicao->concluida_em = now(); + + $substituicao->save(); + } + + $trabalho = Trabalho::find($substituicao->trabalho->id); + Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status)); + return redirect()->back()->with(['sucesso' => 'Substituição cancelada com sucesso!']); + } catch (\Throwable $th) { + + return redirect()->back()->with(['erro' => $th->getMessage()]); + + } + } + + + } + + public function aprovarProposta(Request $request, $id) + { + $trabalho = Trabalho::find($id); + $trabalho->status = $request->statusProp; + $trabalho->comentario = $request->comentario; + $trabalho->save(); + + return redirect()->back()->with(['sucesso' => 'Proposta avaliada com sucesso']); + + } } \ No newline at end of file diff --git a/app/Http/Requests/StoreTrabalho.php b/app/Http/Requests/StoreTrabalho.php index 1b71f6a..9eaccb8 100755 --- a/app/Http/Requests/StoreTrabalho.php +++ b/app/Http/Requests/StoreTrabalho.php @@ -98,14 +98,14 @@ class StoreTrabalho extends FormRequest } $rules['linkLattesEstudante'] = ['required', 'string']; - $rules['anexoDecisaoCONSU'] = [Rule::requiredIf($evento->consu), 'mimes:pdf']; if($evento->tipo!="CONTINUO"){ + $rules['anexoDecisaoCONSU'] = [Rule::requiredIf($evento->consu), 'mimes:pdf']; $rules['anexoProjeto'] = ['required', 'mimes:pdf']; } else { $rules['anexo_SIPAC'] = ['required', 'mimes:pdf']; } - + //dd($rules, $evento); return $rules; } @@ -143,6 +143,12 @@ class StoreTrabalho extends FormRequest 'media_do_curso.*.required' => 'O :attribute é obrigatório', 'anexoPlanoTrabalho.*.required' => 'O :attribute é obrigatório', 'nomePlanoTrabalho.*.required' => 'O :attribute é obrigatório', + 'area_id' => "area id", + 'area_tematica_id' => 'area tematica id', + 'ods.*' => 'Deve ser selecionada pelo menos uma ODS', + 'linkLattesEstudante.*' => "O link do currículo lattes do estudante é obrigatório", + 'anexoDecisaoCONSU.*' => 'anexoDecisaoCONSU', + 'anexo_SIPAC.*' => 'anexo_SIPAC' ]; } } \ No newline at end of file diff --git a/resources/views/administrador/analisarProposta.blade.php b/resources/views/administrador/analisarProposta.blade.php index 2cd6e15..873df7b 100644 --- a/resources/views/administrador/analisarProposta.blade.php +++ b/resources/views/administrador/analisarProposta.blade.php @@ -122,7 +122,7 @@ @endif - @if($evento->tipo != "PIBEX") + @if($evento->tipo != "PIBEX" && $evento->tipo != "CONTINUO")

Grupo de Pesquisa: diff --git a/resources/views/evento/formulario/finalizar.blade.php b/resources/views/evento/formulario/finalizar.blade.php index 0a533cd..d00a831 100755 --- a/resources/views/evento/formulario/finalizar.blade.php +++ b/resources/views/evento/formulario/finalizar.blade.php @@ -16,6 +16,9 @@
@if($errors->any())
+ @foreach($errors->all() as $error) +
  • {{$error}}
  • + @endforeach Verifique se todos os campos obrigatórios/Dados do discente foram preenchidos!
    @endif diff --git a/resources/views/evento/formulario/integrantes.blade.php b/resources/views/evento/formulario/integrantes.blade.php index 29d16e3..9ee9312 100644 --- a/resources/views/evento/formulario/integrantes.blade.php +++ b/resources/views/evento/formulario/integrantes.blade.php @@ -16,6 +16,9 @@
    + + @include('evento.formulario.participantes') + @@ -149,7 +152,7 @@ if(data == 'inexistente' || $('#cpf_consulta').val() == ""){ exibirModalUsuarioInexistente(); }else { - exibirUsuarioAdicionado(); + exibirUsuarioAdicionado(data); $('#integrante').append(`
    @@ -176,8 +179,27 @@ $('#aviso-modal-usuario-nao-existe').modal('show'); } - function exibirUsuarioAdicionado() { - $('#aviso-modal-usuario-adicionado').modal('show');; + let modal_id = 0; + + function exibirUsuarioAdicionado(data) { + $('#modalIntegrante').modal('hide'); + document.getElementById(`nome${modal_id}`).value = data[0]['name']; + document.getElementById(`email${modal_id}`).value = data[0]['email']; + document.getElementById(`data_de_nascimento${modal_id}`).value = (new Date(data[2]['data_de_nascimento'])).toLocaleDateString(); + document.getElementById(`cpf${modal_id}`).value = data[0]['cpf']; + document.getElementById(`rg${modal_id}`).value = data[2]['rg']; + document.getElementById(`celular${modal_id}`).value = data[0]['celular']; + document.getElementById(`cep${modal_id}`).value = data[3]['cep']; + document.getElementById(`uf${modal_id}`).value = data[3]['uf']; + document.getElementById(`cidade${modal_id}`).value = data[3]['cidade']; + document.getElementById(`bairro${modal_id}`).value = data[3]['bairro']; + document.getElementById(`rua${modal_id}`).value = data[3]['rua']; + document.getElementById(`numero${modal_id}`).value = data[3]['numero']; + document.getElementById(`complemento${modal_id}`).value = data[3]['complemento']; + document.getElementById(`instituicao[${modal_id}]`).value = data[0]['instituicao']; + document.getElementById(`curso[${modal_id}]`).value = data[2]['curso']; + $(`#exampleModal${modal_id}`).modal('show'); + console.log(data); } \ No newline at end of file diff --git a/resources/views/evento/formulario/participantes.blade.php b/resources/views/evento/formulario/participantes.blade.php index 430f968..535ccb4 100755 --- a/resources/views/evento/formulario/participantes.blade.php +++ b/resources/views/evento/formulario/participantes.blade.php @@ -1,10 +1,10 @@ @php $cont= 0; @endphp -
    -
    -
    -
    -
    + + + + +
    1. - @for($i = 0; $i < $edital->numParticipantes; $i++) + -
    2. + +
    - - - - -
    -
    -
    -
    -
    -