diff --git a/app/Arquivo.php b/app/Arquivo.php index 197c57f01c16b128b19004a5e1993c10762b2ed4..32877871e80316fcc23e5011a79dcb03fef07299 100755 --- a/app/Arquivo.php +++ b/app/Arquivo.php @@ -15,7 +15,7 @@ class Arquivo extends Model use SoftDeletes; protected $fillable = [ - 'nome','titulo', 'versao', 'versaoFinal', 'data', 'trabalhoId', 'participanteId' + 'nome','titulo', 'versao', 'versaoFinal', 'data', 'trabalhoId', 'participanteId', 'proponenteId' ]; public function trabalho(){ @@ -29,6 +29,11 @@ class Arquivo extends Model public function participante() { return $this->belongsTo('App\Participante', 'participanteId'); } + + public function proponente() { + return $this->belongsTo('App\Proponente', 'proponenteId'); + } + public function avaliadors(){ return $this->belongsToMany('App\Avaliador', 'avaliadors_plano_trabalho')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at'); } diff --git a/app/Http/Controllers/AdministradorController.php b/app/Http/Controllers/AdministradorController.php index 534ab16591d475674ca70fee07c7716357b6b6fe..4e48d64932ecd494f3974f86d87b83f93d39b4dc 100755 --- a/app/Http/Controllers/AdministradorController.php +++ b/app/Http/Controllers/AdministradorController.php @@ -1,1151 +1,1181 @@ -get(); - $funcoesParticipante = FuncaoParticipantes::orderBy('nome')->get(); - - return view('naturezas.index')->with(['naturezas' => $naturezas, 'funcoes' => $funcoesParticipante]); - } - - public function usuarios() - { - $users = User::orderBy('name')->get(); - - return view('administrador.usersAdmin')->with(['users' => $users]); - } - - public function editais() - { - //$admin = Administrador::with('user')->where('user_id', Auth()->user()->id)->first(); - //$eventos = Evento::where('coordenadorId',$admin->id )->get(); - $eventos = Evento::all()->sortByDesc('created_at'); - - return view('administrador.editais', ['eventos' => $eventos]); - } - - public function pareceres(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho'); - - $coordenador_id_evento = $evento->coordenadorId; - $coordenador_id = CoordenadorComissao::find($coordenador_id_evento); - $user = Auth::user(); - - if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) { - return redirect()->back(); - } - - return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]); - } - - public function analisar(Request $request) - { - $evento = Evento::find($request->evento_id); - $status = ['submetido', 'avaliado', 'aprovado', 'reprovado', 'corrigido']; - $aux = Trabalho::where('evento_id', $evento->id) - ->whereIn('status', $status) - ->pluck('grande_area_id'); - - $idArea = Trabalho::where('evento_id', $evento->id) - ->whereIn('status', $status) - ->pluck('area_id'); - - $trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho')->sortBy('titulo'); - - $grandesAreas = GrandeArea::whereIn('id', $aux)->get(); - $areas = Area::whereIn('id', $idArea)->get(); - - $funcaoParticipantes = FuncaoParticipantes::all(); - // $participantes = Participante::where('trabalho_id', $id)->get(); - // $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get(); - // $participantes = User::whereIn('id', $participantesUsersIds)->get(); - - return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes, 'column' => $request->column, 'grandesAreas' => $grandesAreas, 'areas' => $areas]); - } - - // Utilizado para paginação de Collection - - public function analisarProposta(Request $request) - { - $trabalho = Trabalho::where('id', $request->id)->first(); - $evento = Evento::where('id', $trabalho->evento_id)->first(); - $funcaoParticipantes = FuncaoParticipantes::all(); - $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(); - - $avalSelecionadosId = $trabalho->avaliadors->pluck('id'); - $avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get(); - $trabalho->aval = $avalProjeto; - // Usuarios que possuem avaliações de relatório - //$avaliacoesRelatorio = [];->join('users','users.id','=','candidatos.user_id') - $AvalRelatParcial = []; - $AvalRelatFinal = []; - $MediaAvalRelatParcial = 0; - $AvalRelatParcialPendentes = 0; - $MediaAvalRelatFinal = 0; - $AvalRelatFinalPendentes = 0; - - foreach ($trabalho->participantes as $participante) { - if (isset($participante->planoTrabalho)) { - $avals = AvaliacaoRelatorio::where('arquivo_id', $participante->planoTrabalho->id)->get(); - } else { - $avals = []; - } - foreach ($avals as $aval) { - if ($aval->tipo == 'Parcial') { - array_push($AvalRelatParcial, $aval); - $MediaAvalRelatParcial += $aval->nota; - - if($aval->nota == null){ - $AvalRelatParcialPendentes += 1; - } - } else { - array_push($AvalRelatFinal, $aval); - $MediaAvalRelatFinal += $aval->nota; - - if($aval->nota == null){ - $AvalRelatFinalPendentes += 1; - } - } - } - } - - if(count($AvalRelatParcial) > 0){ - $MediaAvalRelatParcial = $MediaAvalRelatParcial / count($AvalRelatParcial); - } - - if(count($AvalRelatFinal) > 0){ - $MediaAvalRelatFinal = $MediaAvalRelatFinal / count($AvalRelatFinal); - } - - // Verficação de pendencia de substituição - $aux = count(Substituicao::where('status', 'Em Aguardo')->whereIn('participanteSubstituido_id', $trabalho->participantes->pluck('id'))->get()); - $flagSubstituicao = 1; - if ($aux != 0) { - $flagSubstituicao = -1; - } - - $grandeAreas = GrandeArea::orderBy('nome')->get(); - $areasTematicas = AreaTematica::orderBy('nome')->get(); - //dd($areasTematicas); - - $hoje = Carbon::today('America/Recife'); - $hoje = $hoje->toDateString(); - - return view('administrador.analisarProposta')->with( - ['trabalho' => $trabalho, - 'funcaoParticipantes' => $funcaoParticipantes, - 'evento' => $evento, - 'substituicoesPendentes' => $substituicoesPendentes, - 'substituicoesProjeto' => $substituicoesProjeto, - 'grandeAreas' => $grandeAreas, - 'AvalRelatParcial' => $AvalRelatParcial, - 'AvalRelatFinal' => $AvalRelatFinal, - 'hoje' => $hoje, - 'flagSubstituicao' => $flagSubstituicao, - 'areasTematicas' => $areasTematicas, - 'MediaAvalRelatParcial' => $MediaAvalRelatParcial, - 'AvalRelatParcialPendentes' => $AvalRelatParcialPendentes, - 'MediaAvalRelatFinal' => $MediaAvalRelatFinal, - 'AvalRelatFinalPendentes' => $AvalRelatFinalPendentes, - ]); - } - - public function showProjetos(Request $request) - { - $projetos = Trabalho::all()->where('status', '<>', 'rascunho'); - $funcaoParticipantes = FuncaoParticipantes::all(); - - return view('administrador.listaProjetos')->with(['projetos' => $projetos, 'funcaoParticipantes' => $funcaoParticipantes]); - } - - public function showResultados(Request $request) - { - //dd($request); - $evento = Evento::where('id', $request->evento_id)->first(); - $coordenador_id_evento = $evento->coordenadorId; - $coordenador_id = CoordenadorComissao::find($coordenador_id_evento); - $user = Auth::user(); - - if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) { - return redirect()->back(); - } - - // Com cotas - if ($evento->cotaDoutor) { - // Ampla Concorrencia - $trabalhosAmpla = Trabalho::where('evento_id', $evento->id) - ->where('modalidade', 'AmplaConcorrencia')->get(); - foreach ($trabalhosAmpla as $trabalho) { - $trabalho->pontuacao = 0; - $cont = 0; - // Caso especial do PIBEX onde a pontuação fica no Ad Hoc - if ($evento->tipo == 'PIBEX') { - foreach ($trabalho->avaliadors as $avaliador) { - if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { - $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; - ++$cont; - } - } - } else { - foreach ($trabalho->avaliadors as $avaliador) { - if ($avaliador->tipo == 'Interno') { - $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); - if ($parecerInterno != null) { - $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; - ++$cont; - } - } - } - } - - if ($trabalho->pontuacao != 0) { - $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); - } - } - $trabalhosAmpla = $trabalhosAmpla->sort(function ($item, $next) { - return $item->pontuacao >= $next->pontuacao ? -1 : 1; - }); - - // Recém Doutor - $trabalhosDoutor = Trabalho::where('evento_id', $evento->id) - ->where('modalidade', 'RecemDoutor')->get(); - foreach ($trabalhosDoutor as $trabalho) { - $trabalho->pontuacao = 0; - $cont = 0; - // Caso especial do PIBEX onde a pontuação fica no Ad Hoc - if ($evento->tipo == 'PIBEX') { - foreach ($trabalho->avaliadors as $avaliador) { - if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { - $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; - ++$cont; - } - } - } else { - foreach ($trabalho->avaliadors as $avaliador) { - if ($avaliador->tipo == 'Interno') { - $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); - if ($parecerInterno != null) { - $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; - ++$cont; - } - } - } - } - - if ($trabalho->pontuacao != 0) { - $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); - } - } - $trabalhosDoutor = $trabalhosDoutor->sort(function ($item, $next) { - return $item->pontuacao >= $next->pontuacao ? -1 : 1; - }); - - return view('administrador.resultadosProjetosCotas')->with(['evento' => $evento, 'trabalhosAmpla' => $trabalhosAmpla, 'trabalhosDoutor' => $trabalhosDoutor]); - } - - // Sem Cotas - $trabalhos = $evento->trabalhos; - foreach ($trabalhos as $trabalho) { - $trabalho->pontuacao = 0; - $cont = 0; - // Caso especial do PIBEX onde a pontuação fica no Ad Hoc - if ($evento->tipo == 'PIBEX') { - foreach ($trabalho->avaliadors as $avaliador) { - if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { - $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; - ++$cont; - } - } - } else { - foreach ($trabalho->avaliadors as $avaliador) { - if ($avaliador->tipo == 'Interno') { - $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); - if ($parecerInterno != null) { - $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; - ++$cont; - } - } - } - } - if ($trabalho->pontuacao != 0) { - $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); - } - } - $trabalhos = $trabalhos->sort(function ($item, $next) { - return $item->pontuacao >= $next->pontuacao ? -1 : 1; - }); - - return view('administrador.resultadosProjetos')->with(['evento' => $evento, 'trabalhos' => $trabalhos]); - } - - public function visualizarParecer(Request $request) - { - $avaliador = Avaliador::find($request->avaliador_id); - $trabalho = $avaliador->trabalhos->where('id', $request->trabalho_id)->first(); - $parecer = $avaliador->trabalhos->where('id', $request->trabalho_id)->first()->pivot; - - //dd($parecer); - return view('administrador.visualizarParecer')->with(['trabalho' => $trabalho, 'parecer' => $parecer, 'avaliador' => $avaliador]); - } - - public function visualizarParecerInterno(Request $request) - { - $avaliador = Avaliador::find($request->avaliador_id); - $trabalho = $avaliador->trabalhos->where('id', $request->trabalho_id)->first(); - $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); - $evento = Evento::find($trabalho->evento_id); - - //dd($parecer); - return view('administrador.visualizarParecerInterno')->with(['parecer' => $parecerInterno, 'avaliador' => $avaliador, 'trabalho' => $trabalho, 'evento' => $evento]); - } - - public function create() - { - return view('administrador.novo_user'); - } - - public function salvar(Request $request) - { - if ($request->tipo == 'coordenador') { - $validated = $request->validate([ - 'name' => ['required', 'string', 'max:255'], - 'tipo' => ['required'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], - 'instituicaoSelect' => ['required_without:instituicao'], - 'senha' => ['required', 'min:8'], - 'confirmar_senha' => ['required', 'min:8'], - 'celular' => ($request['celular'] != null ? 'required|string|telefone' : 'nullable'), - 'cpf' => ($request['cpf'] != null ? 'required|cpf|unique:users' : 'nullable'), - ]); - } elseif ($request->tipo != 'proponente') { - $validated = $request->validate([ - 'name' => ['required', 'string', 'max:255'], - 'tipo' => ['required'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], - 'instituicaoSelect' => ['required_without:instituicao'], - 'celular' => ['required', 'string', 'telefone'], - 'senha' => ['required', 'min:8'], - 'confirmar_senha' => ['required', 'min:8'], - 'cpf' => ['required', 'cpf', 'unique:users'], - ]); - } else { - $validated = $request->validate([ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'tipo' => ['required'], - 'cpf' => ['required', 'cpf', 'unique:users'], - 'celular' => ['required', 'string', 'telefone'], - 'senha' => ['required', 'min:8'], - 'confirmar_senha' => ['required', 'min:8'], - 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], - 'instituicaoSelect' => ['required_without:instituicao'], - 'cargo' => ['required'], - 'vinculo' => ['required'], - 'outro' => ['required_if:vinculo,Outro'], - 'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'], - 'titulacaoMaxima' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), - 'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'], - 'anoTitulacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), - 'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'], - 'areaFormacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), - 'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'], - 'bolsistaProdutividade' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), - 'nivel' => ['required_if:bolsistaProdutividade,sim'], - //'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''], - 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], - 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], - 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], - 'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required' : ''], - 'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes' : ''], - ]); - } - - if (!($request->senha === $request->confirmar_senha)) { - return redirect()->back()->withErrors(['senha' => 'Senhas diferentes']); - } - - $user = new User(); - $user->name = $request->name; - $user->tipo = $request->tipo; - $user->cpf = $request->cpf; - $user->celular = $request->celular; - $user->email = $request->email; - $user->password = bcrypt($request->senha); - if ($request->instituicao != null) { - $user->instituicao = $request->instituicao; - } elseif (isset($request->instituicaoSelect) && $request->instituicaoSelect != 'Outra') { - $user->instituicao = $request->instituicaoSelect; - } - $user->save(); - - switch ($request->tipo) { - case 'administradorResponsavel': - $adminResp = new AdministradorResponsavel(); - $adminResp->user_id = $user->id; - $adminResp->save(); - break; - case 'coordenador': - $coordenador = new CoordenadorComissao(); - $coordenador->user_id = $user->id; - $coordenador->save(); - break; - case 'avaliador': - $avaliador = new Avaliador(); - $avaliador->user_id = $user->id; - $avaliador->tipo = $request->tipoAvaliador; - $avaliador->save(); - break; - case 'proponente': - $proponente = new Proponente(); - if ($request->SIAPE != null) { - $proponente->SIAPE = $request->SIAPE; - } - $proponente->cargo = $request->cargo; - - if ($request->vinculo != 'Outro') { - $proponente->vinculo = $request->vinculo; - } else { - $proponente->vinculo = $request->outro; - } - - $proponente->titulacaoMaxima = $request->titulacaoMaxima; - $proponente->anoTitulacao = $request->anoTitulacao; - $proponente->areaFormacao = $request->areaFormacao; - $proponente->bolsistaProdutividade = $request->bolsistaProdutividade; - if ($request->bolsistaProdutividade == 'sim') { - $proponente->nivel = $request->nivel; - } - $proponente->linkLattes = $request->linkLattes; - - $proponente->user_id = $user->id; - $proponente->save(); - break; - case 'participante': - $participante = new Participante(); - $participante->user_id = $user->id; - $participante->save(); - break; - } - - return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário cadastrado com sucesso']); - } - - public function edit($id) - { - $user = User::find($id); - - $adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first(); - $avaliador = Avaliador::where('user_id', '=', $id)->first(); - $proponente = Proponente::where('user_id', '=', $id)->first(); - $participante = Participante::where('user_id', '=', $id)->first(); - - return view('administrador.editar_user')->with(['user' => $user, - 'adminResp' => $adminResp, - 'proponente' => $proponente, - 'participante' => $participante, ]); - } - - public function update(Request $request, $id) - { - $user = User::find($id); - - if ($request->tipo == 'coordenador') { - $validated = $request->validate([ - 'name' => ['required', 'string', 'max:255'], - 'tipo' => ['required'], - 'email' => ['required', 'string', 'email', 'max:255'], - 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], - 'instituicaoSelect' => ['required_without:instituicao'], - 'celular' => ($request['celular'] != null ? 'required|string|telefone' : 'nullable'), - 'cpf' => ($request['cpf'] != null ? 'required|cpf|unique:users' : 'nullable'), - ]); - } elseif ($request->tipo != 'proponente') { - $validated = $request->validate([ - 'name' => ['required', 'string', 'max:255'], - 'tipo' => ['required'], - 'email' => ['required', 'string', 'email', 'max:255'], - 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], - 'instituicaoSelect' => ['required_without:instituicao'], - 'celular' => ['required', 'string', 'telefone'], - 'cpf' => ['required', 'cpf'], - ]); - } else { - $validated = $request->validate([ - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255'], - 'tipo' => ['required'], - 'cpf' => ['required', 'cpf'], - 'celular' => ['required', 'string', 'telefone'], - 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], - 'instituicaoSelect' => ['required_without:instituicao'], - 'cargo' => ['required'], - 'vinculo' => ['required'], - 'outro' => ['required_if:vinculo,Outro'], - 'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'], - 'titulacaoMaxima' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), - 'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'], - 'anoTitulacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), - 'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'], - 'areaFormacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), - 'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'], - 'bolsistaProdutividade' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), - 'nivel' => ['required_if:bolsistaProdutividade,sim'], - //'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''], - 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], - 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], - 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], - 'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required' : ''], - 'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes' : ''], - ]); - } - - // if (!(Hash::check($request->senha_atual, $user->password))) { - // return redirect()->back()->withErrors(['senha_atual' => 'Senha atual não correspondente']); - // } - - // if (!($request->nova_senha === $request->confirmar_senha)) { - // return redirect()->back()->withErrors(['nova_senha' => 'Senhas diferentes']); - // } - - switch ($request->tipo) { - case 'administradorResponsavel': - $adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first(); - $adminResp->user_id = $user->id; - $adminResp->update(); - break; - case 'coordenador': - $coordenador = CoordenadorComissao::where('user_id', '=', $id)->first(); - $coordenador->user_id = $user->id; - $coordenador->update(); - break; - case 'avaliador': - $avaliador = Avaliador::where('user_id', '=', $id)->first(); - $avaliador->user_id = $user->id; - $avaliador->update(); - break; - case 'proponente': - $proponente = Proponente::where('user_id', '=', $id)->first(); - if ($request->SIAPE != null) { - $proponente->SIAPE = $request->SIAPE; - } - $proponente->cargo = $request->cargo; - - if ($request->vinculo != 'Outro') { - $proponente->vinculo = $request->vinculo; - } else { - $proponente->vinculo = $request->outro; - } - - $proponente->titulacaoMaxima = $request->titulacaoMaxima; - $proponente->anoTitulacao = $request->anoTitulacao; - $proponente->areaFormacao = $request->areaFormacao; - $proponente->bolsistaProdutividade = $request->bolsistaProdutividade; - if ($request->bolsistaProdutividade == 'sim') { - $proponente->nivel = $request->nivel; - } - $proponente->linkLattes = $request->linkLattes; - - $proponente->user_id = $user->id; - $proponente->update(); - break; - case 'participante': - $participante = Participante::where('user_id', '=', $id)->first(); - $participante->user_id = $user->id; - $participante->update(); - break; - } - - $user->name = $request->name; - $user->tipo = $request->tipo; - $user->email = $request->email; - $user->cpf = $request->cpf; - $user->celular = $request->celular; - if ($request->instituicao != null) { - $user->instituicao = $request->instituicao; - } elseif (isset($request->instituicaoSelect) && $request->instituicaoSelect != 'Outra') { - $user->instituicao = $request->instituicaoSelect; - } - // $user->password = bcrypt($request->nova_senha); - $user->update(); - - return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário atualizado com sucesso']); - } - - public function destroy($id) - { - $user = User::find($id); - $adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first(); - $avaliador = Avaliador::where('user_id', '=', $id)->first(); - $proponente = Proponente::where('user_id', '=', $id)->first(); - $participante = Participante::where('user_id', '=', $id)->first(); - - if (!(is_null($adminResp))) { - $adminResp->delete(); - } elseif (!(is_null($avaliador))) { - $avaliador->delete(); - } elseif (!(is_null($proponente))) { - $proponente->delete(); - } elseif (!(is_null($participante))) { - $participante->delete(); - } - - $user->delete(); - - return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário deletado com sucesso']); - } - - public function atribuir(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $coordenador_id_evento = $evento->coordenadorId; - $coordenador_id = CoordenadorComissao::find($coordenador_id_evento); - $user = Auth::user(); - - if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) { - return redirect()->back(); - } - - return view('administrador.atribuirAvaliadores', ['evento' => $evento]); - } - - public function selecionar(Request $request) - { - $user = Auth::user(); - - $evento = Evento::where('id', $request->evento_id)->first(); - $coordenador_id_evento = $evento->coordenadorId; - $coordenador_id = CoordenadorComissao::find($coordenador_id_evento); - $grandeAreas = GrandeArea::orderBy('nome')->get(); - $areasTematicas = AreaTematica::orderBy('nome')->get(); - $avalSelecionados = $evento->avaliadors; - $avalNaoSelecionadosId = $evento->avaliadors->pluck('id'); - $trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho'); - $avaliadores = Avaliador::whereNotIn('id', $avalNaoSelecionadosId)->get(); - - //$avaliadores = Avaliador::join('naturezas_avaliadors', 'avaliadors.id', '=' ,'naturezas_avaliadors.avaliador_id')->whereNotIn('avaliadors.id', $avalNaoSelecionadosId) - // ->where('naturezas_avaliadors.natureza_id', $evento->natureza_id) - // ->get(); - - $avaliadores_extensao = collect(); - $avaliadores_others = collect(); - - foreach($avaliadores as $avaliador){ - if($evento->natureza_id == 3 && count($avaliador->areaTematicas) > 0){ - $avaliadores_extensao->push($avaliador); - }elseif($evento->natureza_id != 3 && count($avaliador->areaTematicas) == 0){ - $avaliadores_others->push($avaliador); - } - } - - if($evento->natureza_id == 3){ - $avaliadores = $avaliadores_extensao; - } else { - $avaliadores = $avaliadores_others; - } - - - if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) { - return redirect()->back(); - } - - return view('administrador.selecionarAvaliadores', [ - 'evento' => $evento, - 'avaliadores' => $avaliadores, - 'avalSelecionados' => $avalSelecionados, - 'grandeAreas' => $grandeAreas, - 'trabalhos' => $trabalhos, - 'areasTematicas' => $areasTematicas, - ]); - } - - public function projetos(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $trabalhos = $evento->trabalhos; - $grandesAreas = GrandeArea::orderBy('nome')->get(); - $areasTematicas = AreaTematica::orderBy('nome')->get(); - $avaliadores = $evento->avaliadors; - foreach ($trabalhos as $key => $trabalho) { - $avalSelecionadosId = $trabalho->avaliadors->pluck('id'); - $avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get(); - $trabalho->aval = $avalProjeto; - } - - //dd($avaliadores->teste); - - return view('administrador.selecionarProjetos', [ - 'evento' => $evento, - 'trabalhos' => $trabalhos, - 'avaliadores' => $avaliadores, - 'grandesAreas' => $grandesAreas, - 'areasTematicas' => $areasTematicas - ]); - } - - public function adicionar(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $aval = Avaliador::where('id', $request->avaliador_id)->first(); - $aval->eventos()->attach($evento); - $aval->save(); - $user = $aval->user()->first(); - - $subject = 'Convite para avaliar projetos da UFAPE'; - Mail::to($user->email) - ->send(new EmailParaUsuarioNaoCadastrado($user->name, ' ', 'Avaliador-Cadastrado', $evento->nome, ' ', $subject, $evento->tipo, $evento->natureza_id)); - - return redirect()->back(); - } - - public function remover(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $aval = Avaliador::where('id', $request->avaliador_id)->first(); - $aval->eventos()->detach($evento); - $aval->trabalhos()->detach(); - $aval->save(); - - return redirect()->back(); - } - - public function removerProjAval(Request $request) - { - //Acesso 1 = Ad Hoc, 2 - Interno, 3 - Interno e Ad Hoc - $aval = Avaliador::where('id', $request->avaliador_id)->first(); - $trabalho = Trabalho::where('id', $request->trabalho_id)->first(); - if ($request->flag == 0) { - if (($aval->tipo == 'Interno' && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) || ($aval->tipo == null && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3 && ($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco'))) { - $aval->trabalhos() - ->updateExistingPivot($trabalho->id, ['acesso' => 2]); - } else { - $aval->trabalhos()->detach($trabalho); - } - } else { - if (($aval->tipo == 'Interno' && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) || ($aval->tipo == null && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3 && ($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco'))) { - $aval->trabalhos() - ->updateExistingPivot($trabalho->id, ['acesso' => 1]); - } else { - $aval->trabalhos()->detach($trabalho); - } - } - - if ($trabalho->status === 'avaliado') { - $trabalho->status = 'submetido'; - $trabalho->save(); - } - - $aval->save(); - - return redirect()->back(); - } - - public function buscar(Request $request) - { - $trabalho = Trabalho::where('id', $request->item)->first(); - $avalSelecionadosId = $trabalho->avaliadors->pluck('id'); - $avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get(); - - //dd($avaliadores); - - return response()->json($avalProjeto); - } - - public function atribuicaoProjeto(Request $request) - { - $trabalho = Trabalho::where('id', $request->trabalho_id)->first(); - $evento = Evento::where('id', $request->evento_id)->first(); - - if ($request->avaliadores_internos_id != null) { - foreach ($request->avaliadores_internos_id as $avaliador) { - $aval = Avaliador::find($avaliador); - if ($aval->trabalhos()->where('trabalho_id', $trabalho->id)->first() != null) { - $aval->trabalhos() - ->updateExistingPivot($trabalho->id, ['acesso' => 3]); - } else { - $trabalho->avaliadors()->attach($aval, ['acesso' => 2]); - $evento->avaliadors()->syncWithoutDetaching($aval); - } - } - } - - if ($request->avaliadores_externos_id != null) { - foreach ($request->avaliadores_externos_id as $avaliador) { - $aval = Avaliador::find($avaliador); - if (Avaliador::where('id', $avaliador)->where('tipo', 'Interno')->count() > 0 || (Avaliador::where('id', $avaliador)->where('tipo', null)->count() > 0 && (($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco')))) { - if ($aval->trabalhos()->where('trabalho_id', $trabalho->id)->first() != null) { - $aval->trabalhos() - ->updateExistingPivot($trabalho->id, ['acesso' => 3]); - } else { - $trabalho->avaliadors()->attach($aval, ['acesso' => 1]); - $evento->avaliadors()->syncWithoutDetaching($aval); - } - } else { - $trabalho->avaliadors()->attach($aval, ['acesso' => 1]); - $evento->avaliadors()->syncWithoutDetaching($aval); - } - } - } - - if ($request->avaliadores_externos_id == null & $request->avaliadores_internos_id == null) { - redirect()->back()->with(['error' => 'Selecione ao menos um avaliador.', 'trabalho' => $trabalho->id]); - } - - $avaliadores = Avaliador::whereIn('id', (array) $request->avaliadores_externos_id) - ->orWhereIn('id', (array) $request->avaliadores_internos_id)->get(); - $trabalho->save(); - - foreach ($avaliadores as $avaliador) { - $userTemp = User::find($avaliador->user->id); - - $notificacao = Notificacao::create([ - 'remetente_id' => Auth::user()->id, - 'destinatario_id' => $avaliador->user_id, - 'trabalho_id' => $request->trabalho_id, - 'lido' => false, - 'tipo' => 5, - ]); - $notificacao->save(); - Notification::send($userTemp, new AtribuicaoAvaliadorExternoNotification($userTemp, $trabalho, $evento->formAvaliacaoExterno, $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso)); - } - - return redirect()->back(); - } - - public function enviarConviteEAtribuir(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $nomeAvaliador = $request->nomeAvaliador; - $emailAvaliador = $request->emailAvaliador; - $area = Area::where('id', $request->area_id)->first(); - $user = User::where('email', $emailAvaliador)->first(); - $areaTematica = AreaTematica::find($request->areasTemeticas); - - if ($request->instituicao == 'ufape') { - $nomeInstituicao = 'Universidade Federal do Agreste de Pernambuco'; - $externoInterno = 'Interno'; - } else { - $nomeInstituicao = $request->outra; - $externoInterno = 'Externo'; - } - if (isset($user)) { - $passwordTemporario = Str::random(8); - $subject = 'Convite para avaliar projetos da UFAPE'; - Mail::to($emailAvaliador) - ->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador-Cadastrado', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id)); - } else { - $passwordTemporario = Str::random(8); - $subject = 'Convite para avaliar projetos da UFAPE'; - Mail::to($emailAvaliador) - ->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id)); - $user = User::create([ - 'email' => $emailAvaliador, - 'password' => bcrypt($passwordTemporario), - 'usuarioTemp' => false, - 'name' => $nomeAvaliador, - 'tipo' => 'avaliador', - 'instituicao' => $nomeInstituicao, - ]); - - $user->markEmailAsVerified(); - } - - $trabalho = Trabalho::where('id', $request->trabalho_id)->first(); - - if ($user->avaliadors == null) { - $avaliador = new Avaliador(); - $avaliador->tipo = $externoInterno; - $avaliador->save(); - $avaliador->area()->associate($area); - $avaliador->user()->associate($user); - $avaliador->eventos()->attach($evento); - $user->save(); - $avaliador->save(); - } else { - $avaliador = $user->avaliadors; - $avaliador->eventos()->attach($evento); - $user->save(); - $avaliador->save(); - } - - if($evento->natureza_id == 3){ - $avaliador->areaTematicas()->sync($areaTematica); - } - - if ($request->instituicao == 'ufape') { - $trabalho->avaliadors()->attach($avaliador, ['acesso' => 2]); - $evento->avaliadors()->syncWithoutDetaching($avaliador); - } else { - $trabalho->avaliadors()->attach($avaliador, ['acesso' => 1]); - $evento->avaliadors()->syncWithoutDetaching($avaliador); - } - - $trabalho->save(); - - $notificacao = Notificacao::create([ - 'remetente_id' => Auth::user()->id, - 'destinatario_id' => $avaliador->user_id, - 'trabalho_id' => $request->trabalho_id, - 'lido' => false, - 'tipo' => 5, - ]); - $notificacao->save(); - - return redirect()->back(); - } - - public function reenviarConviteAtribuicaoProjeto(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $avaliador = Avaliador::where('id', $request->avaliador_id)->first(); - if ($avaliador->user->avaliadors->eventos->where('id', $evento->id)->first()->pivot->convite != true) { - $avaliador->user->avaliadors->eventos()->updateExistingPivot($evento->id, ['convite' => null]); - } - - $notificacao = Notificacao::create([ - 'remetente_id' => Auth::user()->id, - 'destinatario_id' => $avaliador->user_id, - 'trabalho_id' => $request->trabalho_id, - 'lido' => false, - 'tipo' => 5, - ]); - $notificacao->save(); - - $trabalho = Trabalho::where('id', $request->trabalho_id)->first(); - $subject = 'Convite para avaliar projetos da UFAPE - Reenvio'; - Mail::to($avaliador->user->email) - ->send(new EmailLembrete($avaliador->user->name, $subject, $trabalho->titulo, $evento->nome, $evento->tipo, $evento->natureza_id, $evento->formAvaliacaoExterno, $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso)); - - return redirect()->back(); - } - - public function enviarConvite(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $nomeAvaliador = $request->nomeAvaliador; - $emailAvaliador = $request->emailAvaliador; - $area = Area::where('id', $request->area_id)->first(); - $user = User::where('email', $emailAvaliador)->first(); - $areaTematica = AreaTematica::find($request->areasTemeticas); - - if ($request->instituicao == 'ufape') { - $nomeInstituicao = 'Universidade Federal do Agreste de Pernambuco'; - $externoInterno = 'Interno'; - } else { - $nomeInstituicao = $request->outra; - $externoInterno = 'Externo'; - } - - //existe o caso de enviar o convite de novo para um mesmo usuário - // if(isset($user->avaliadors->eventos->where('id', $evento->id)->first()->pivot->convite) ){ - // return redirect()->back()->with(['mensagem' => 'Usuário já recebeu um convite e está pendente']); - // } - - if (isset($user)) { - $passwordTemporario = Str::random(8); - $subject = 'Convite para avaliar projetos da UFAPE'; - Mail::to($emailAvaliador) - ->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador-Cadastrado', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id)); - } else { - $passwordTemporario = Str::random(8); - $subject = 'Convite para avaliar projetos da UFAPE'; - Mail::to($emailAvaliador) - ->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id)); - $user = User::create([ - 'email' => $emailAvaliador, - 'password' => bcrypt($passwordTemporario), - 'usuarioTemp' => false, - 'name' => $nomeAvaliador, - 'tipo' => 'avaliador', - 'instituicao' => $nomeInstituicao, - ]); - - $user->markEmailAsVerified(); - } - - if ($user->avaliadors == null) { - $avaliador = new Avaliador(); - $avaliador->tipo = $externoInterno; - $avaliador->save(); - $avaliador->area()->associate($area); - $avaliador->user()->associate($user); - $avaliador->eventos()->attach($evento); - if($evento->natureza_id == 3){ - $avaliador->naturezas()->sync($evento->natureza_id); - $avaliador->areaTematicas()->sync($areaTematica); - } - $user->save(); - $avaliador->save(); - } else { - $avaliador = $user->avaliadors; - $avaliador->eventos()->attach($evento); - if($evento->natureza_id == 3){ - $avaliador->naturezas()->sync($evento->natureza_id); - $avaliador->areaTematicas()->sync($areaTematica); - } - $user->save(); - $avaliador->save(); - } - - return redirect()->back(); - } - - public function reenviarConvite(Request $request) - { - $evento = Evento::where('id', $request->evento_id)->first(); - $avaliador = Avaliador::where('id', $request->avaliador_id)->first(); - $user = $avaliador->user()->first(); - - $subject = 'Convite para avaliar projetos da UFAPE - Reenvio'; - Mail::to($user->email) - ->send(new EmailParaUsuarioNaoCadastrado($user->name, ' ', 'Avaliador-Cadastrado', $evento->nome, ' ', $subject, $evento->tipo, $evento->natureza_id)); - - return redirect()->back(); - } - - // public function baixarAnexo(Request $request) { - // return Storage::download($request->anexo); - // } - - public function baixarModeloAvaliacao() - { - $file = public_path().'/ModeloFormularioAvaliadorExternoPIBIC.docx'; - $headers = ['Content-Type: application/docx']; - ob_end_clean(); - - return response()->download($file, 'ModeloFormularioAvaliadorExternoPIBIC.docx', $headers); - } - - public function imprimirResultados(Request $request) - { - $evento = Evento::where('id', $request->id)->first(); - // Ampla Concorrencia - $trabalhosAmpla = Trabalho::where('evento_id', $evento->id) - ->where('modalidade', 'AmplaConcorrencia')->get(); - - foreach ($trabalhosAmpla as $trabalho) { - $trabalho->pontuacao = 0; - $cont = 0; - // Caso especial do PIBEX onde a pontuação fica no Ad Hoc - if ($evento->tipo == 'PIBEX') { - foreach ($trabalho->avaliadors as $avaliador) { - if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { - $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; - ++$cont; - } - } - } else { - foreach ($trabalho->avaliadors as $avaliador) { - if ($avaliador->tipo == 'Interno') { - $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); - if ($parecerInterno != null) { - $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; - ++$cont; - } - } - } - } - if ($trabalho->pontuacao != 0) { - $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); - } - } - $trabalhosAmpla = $trabalhosAmpla->sort(function ($item, $next) { - return $item->pontuacao >= $next->pontuacao ? -1 : 1; - }); - - // Recém Doutor - $trabalhosDoutor = Trabalho::where('evento_id', $evento->id) - ->where('modalidade', 'RecemDoutor')->get(); - foreach ($trabalhosDoutor as $trabalho) { - $trabalho->pontuacao = 0; - $cont = 0; - // Caso especial do PIBEX onde a pontuação fica no Ad Hoc - if ($evento->tipo == 'PIBEX') { - foreach ($trabalho->avaliadors as $avaliador) { - if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && - $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { - $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; - ++$cont; - } - } - } else { - foreach ($trabalho->avaliadors as $avaliador) { - if ($avaliador->tipo == 'Interno') { - $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); - if ($parecerInterno != null) { - $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; - ++$cont; - } - } - } - } - if ($trabalho->pontuacao != 0) { - $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); - } - } - $trabalhosDoutor = $trabalhosDoutor->sort(function ($item, $next) { - return $item->pontuacao >= $next->pontuacao ? -1 : 1; - }); - - $pdf = PDF::loadView('/administrador/resultadosProjetosCotas', compact('trabalhosDoutor', 'trabalhosAmpla', 'evento')); - - return $pdf->setPaper('a4')->stream('Resultados.pdf'); - } -} +get(); + $funcoesParticipante = FuncaoParticipantes::orderBy('nome')->get(); + + return view('naturezas.index')->with(['naturezas' => $naturezas, 'funcoes' => $funcoesParticipante]); + } + + public function usuarios() + { + $users = User::orderBy('name')->get(); + + return view('administrador.usersAdmin')->with(['users' => $users]); + } + + public function editais() + { + //$admin = Administrador::with('user')->where('user_id', Auth()->user()->id)->first(); + //$eventos = Evento::where('coordenadorId',$admin->id )->get(); + $eventos = Evento::all()->sortByDesc('created_at'); + + return view('administrador.editais', ['eventos' => $eventos]); + } + + public function pareceres(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho'); + + $coordenador_id_evento = $evento->coordenadorId; + $coordenador_id = CoordenadorComissao::find($coordenador_id_evento); + $user = Auth::user(); + + if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) { + return redirect()->back(); + } + + return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]); + } + + public function analisar(Request $request) + { + $evento = Evento::find($request->evento_id); + $status = ['submetido', 'avaliado', 'aprovado', 'reprovado', 'corrigido']; + $aux = Trabalho::where('evento_id', $evento->id) + ->whereIn('status', $status) + ->pluck('grande_area_id'); + + $idArea = Trabalho::where('evento_id', $evento->id) + ->whereIn('status', $status) + ->pluck('area_id'); + + $trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho')->sortBy('titulo'); + + $grandesAreas = GrandeArea::whereIn('id', $aux)->get(); + $areas = Area::whereIn('id', $idArea)->get(); + + $funcaoParticipantes = FuncaoParticipantes::all(); + // $participantes = Participante::where('trabalho_id', $id)->get(); + // $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get(); + // $participantes = User::whereIn('id', $participantesUsersIds)->get(); + + return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes, 'column' => $request->column, 'grandesAreas' => $grandesAreas, 'areas' => $areas]); + } + + // Utilizado para paginação de Collection + + public function analisarProposta(Request $request) + { + $trabalho = Trabalho::where('id', $request->id)->first(); + $evento = Evento::where('id', $trabalho->evento_id)->first(); + $funcaoParticipantes = FuncaoParticipantes::all(); + $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(); + + $avalSelecionadosId = $trabalho->avaliadors->pluck('id'); + $avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get(); + $trabalho->aval = $avalProjeto; + // Usuarios que possuem avaliações de relatório + //$avaliacoesRelatorio = [];->join('users','users.id','=','candidatos.user_id') + $AvalRelatParcial = []; + $AvalRelatFinal = []; + $MediaAvalRelatParcial = 0; + $AvalRelatParcialPendentes = 0; + $MediaAvalRelatFinal = 0; + $AvalRelatFinalPendentes = 0; + + if ($evento->numParticipantes == 0) { + $arquivo = Arquivo::where("trabalhoId", $trabalho->id)->first(); + + if (isset($arquivo)) { + $avals = AvaliacaoRelatorio::where('arquivo_id', $arquivo->id)->get(); + } else { + $avals = []; + } + + foreach ($avals as $aval) { + if ($aval->tipo == 'Parcial') { + array_push($AvalRelatParcial, $aval); + $MediaAvalRelatParcial += $aval->nota; + + if($aval->nota == null){ + $AvalRelatParcialPendentes += 1; + } + } else { + array_push($AvalRelatFinal, $aval); + $MediaAvalRelatFinal += $aval->nota; + + if($aval->nota == null){ + $AvalRelatFinalPendentes += 1; + } + } + } + } + + + foreach ($trabalho->participantes as $participante) { + if (isset($participante->planoTrabalho)) { + $avals = AvaliacaoRelatorio::where('arquivo_id', $participante->planoTrabalho->id)->get(); + } else { + $avals = []; + } + foreach ($avals as $aval) { + if ($aval->tipo == 'Parcial') { + array_push($AvalRelatParcial, $aval); + $MediaAvalRelatParcial += $aval->nota; + + if($aval->nota == null){ + $AvalRelatParcialPendentes += 1; + } + } else { + array_push($AvalRelatFinal, $aval); + $MediaAvalRelatFinal += $aval->nota; + + if($aval->nota == null){ + $AvalRelatFinalPendentes += 1; + } + } + } + } + + if(count($AvalRelatParcial) > 0){ + $MediaAvalRelatParcial = $MediaAvalRelatParcial / count($AvalRelatParcial); + } + + if(count($AvalRelatFinal) > 0){ + $MediaAvalRelatFinal = $MediaAvalRelatFinal / count($AvalRelatFinal); + } + + // Verficação de pendencia de substituição + $aux = count(Substituicao::where('status', 'Em Aguardo')->whereIn('participanteSubstituido_id', $trabalho->participantes->pluck('id'))->get()); + $flagSubstituicao = 1; + if ($aux != 0) { + $flagSubstituicao = -1; + } + + $grandeAreas = GrandeArea::orderBy('nome')->get(); + $areasTematicas = AreaTematica::orderBy('nome')->get(); + //dd($areasTematicas); + + $hoje = Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); + + return view('administrador.analisarProposta')->with( + ['trabalho' => $trabalho, + 'funcaoParticipantes' => $funcaoParticipantes, + 'evento' => $evento, + 'substituicoesPendentes' => $substituicoesPendentes, + 'substituicoesProjeto' => $substituicoesProjeto, + 'grandeAreas' => $grandeAreas, + 'AvalRelatParcial' => $AvalRelatParcial, + 'AvalRelatFinal' => $AvalRelatFinal, + 'hoje' => $hoje, + 'flagSubstituicao' => $flagSubstituicao, + 'areasTematicas' => $areasTematicas, + 'MediaAvalRelatParcial' => $MediaAvalRelatParcial, + 'AvalRelatParcialPendentes' => $AvalRelatParcialPendentes, + 'MediaAvalRelatFinal' => $MediaAvalRelatFinal, + 'AvalRelatFinalPendentes' => $AvalRelatFinalPendentes, + ]); + } + + public function showProjetos(Request $request) + { + $projetos = Trabalho::all()->where('status', '<>', 'rascunho'); + $funcaoParticipantes = FuncaoParticipantes::all(); + + return view('administrador.listaProjetos')->with(['projetos' => $projetos, 'funcaoParticipantes' => $funcaoParticipantes]); + } + + public function showResultados(Request $request) + { + //dd($request); + $evento = Evento::where('id', $request->evento_id)->first(); + $coordenador_id_evento = $evento->coordenadorId; + $coordenador_id = CoordenadorComissao::find($coordenador_id_evento); + $user = Auth::user(); + + if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) { + return redirect()->back(); + } + + // Com cotas + if ($evento->cotaDoutor) { + // Ampla Concorrencia + $trabalhosAmpla = Trabalho::where('evento_id', $evento->id) + ->where('modalidade', 'AmplaConcorrencia')->get(); + foreach ($trabalhosAmpla as $trabalho) { + $trabalho->pontuacao = 0; + $cont = 0; + // Caso especial do PIBEX onde a pontuação fica no Ad Hoc + if ($evento->tipo == 'PIBEX') { + foreach ($trabalho->avaliadors as $avaliador) { + if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { + $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; + ++$cont; + } + } + } else { + foreach ($trabalho->avaliadors as $avaliador) { + if ($avaliador->tipo == 'Interno') { + $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); + if ($parecerInterno != null) { + $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; + ++$cont; + } + } + } + } + + if ($trabalho->pontuacao != 0) { + $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); + } + } + $trabalhosAmpla = $trabalhosAmpla->sort(function ($item, $next) { + return $item->pontuacao >= $next->pontuacao ? -1 : 1; + }); + + // Recém Doutor + $trabalhosDoutor = Trabalho::where('evento_id', $evento->id) + ->where('modalidade', 'RecemDoutor')->get(); + foreach ($trabalhosDoutor as $trabalho) { + $trabalho->pontuacao = 0; + $cont = 0; + // Caso especial do PIBEX onde a pontuação fica no Ad Hoc + if ($evento->tipo == 'PIBEX') { + foreach ($trabalho->avaliadors as $avaliador) { + if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { + $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; + ++$cont; + } + } + } else { + foreach ($trabalho->avaliadors as $avaliador) { + if ($avaliador->tipo == 'Interno') { + $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); + if ($parecerInterno != null) { + $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; + ++$cont; + } + } + } + } + + if ($trabalho->pontuacao != 0) { + $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); + } + } + $trabalhosDoutor = $trabalhosDoutor->sort(function ($item, $next) { + return $item->pontuacao >= $next->pontuacao ? -1 : 1; + }); + + return view('administrador.resultadosProjetosCotas')->with(['evento' => $evento, 'trabalhosAmpla' => $trabalhosAmpla, 'trabalhosDoutor' => $trabalhosDoutor]); + } + + // Sem Cotas + $trabalhos = $evento->trabalhos; + foreach ($trabalhos as $trabalho) { + $trabalho->pontuacao = 0; + $cont = 0; + // Caso especial do PIBEX onde a pontuação fica no Ad Hoc + if ($evento->tipo == 'PIBEX') { + foreach ($trabalho->avaliadors as $avaliador) { + if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { + $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; + ++$cont; + } + } + } else { + foreach ($trabalho->avaliadors as $avaliador) { + if ($avaliador->tipo == 'Interno') { + $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); + if ($parecerInterno != null) { + $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; + ++$cont; + } + } + } + } + if ($trabalho->pontuacao != 0) { + $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); + } + } + $trabalhos = $trabalhos->sort(function ($item, $next) { + return $item->pontuacao >= $next->pontuacao ? -1 : 1; + }); + + return view('administrador.resultadosProjetos')->with(['evento' => $evento, 'trabalhos' => $trabalhos]); + } + + public function visualizarParecer(Request $request) + { + $avaliador = Avaliador::find($request->avaliador_id); + $trabalho = $avaliador->trabalhos->where('id', $request->trabalho_id)->first(); + $parecer = $avaliador->trabalhos->where('id', $request->trabalho_id)->first()->pivot; + + //dd($parecer); + return view('administrador.visualizarParecer')->with(['trabalho' => $trabalho, 'parecer' => $parecer, 'avaliador' => $avaliador]); + } + + public function visualizarParecerInterno(Request $request) + { + $avaliador = Avaliador::find($request->avaliador_id); + $trabalho = $avaliador->trabalhos->where('id', $request->trabalho_id)->first(); + $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); + $evento = Evento::find($trabalho->evento_id); + + //dd($parecer); + return view('administrador.visualizarParecerInterno')->with(['parecer' => $parecerInterno, 'avaliador' => $avaliador, 'trabalho' => $trabalho, 'evento' => $evento]); + } + + public function create() + { + return view('administrador.novo_user'); + } + + public function salvar(Request $request) + { + if ($request->tipo == 'coordenador') { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'tipo' => ['required'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], + 'instituicaoSelect' => ['required_without:instituicao'], + 'senha' => ['required', 'min:8'], + 'confirmar_senha' => ['required', 'min:8'], + 'celular' => ($request['celular'] != null ? 'required|string|telefone' : 'nullable'), + 'cpf' => ($request['cpf'] != null ? 'required|cpf|unique:users' : 'nullable'), + ]); + } elseif ($request->tipo != 'proponente') { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'tipo' => ['required'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], + 'instituicaoSelect' => ['required_without:instituicao'], + 'celular' => ['required', 'string', 'telefone'], + 'senha' => ['required', 'min:8'], + 'confirmar_senha' => ['required', 'min:8'], + 'cpf' => ['required', 'cpf', 'unique:users'], + ]); + } else { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'tipo' => ['required'], + 'cpf' => ['required', 'cpf', 'unique:users'], + 'celular' => ['required', 'string', 'telefone'], + 'senha' => ['required', 'min:8'], + 'confirmar_senha' => ['required', 'min:8'], + 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], + 'instituicaoSelect' => ['required_without:instituicao'], + 'cargo' => ['required'], + 'vinculo' => ['required'], + 'outro' => ['required_if:vinculo,Outro'], + 'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'], + 'titulacaoMaxima' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), + 'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'], + 'anoTitulacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), + 'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'], + 'areaFormacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), + 'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'], + 'bolsistaProdutividade' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), + 'nivel' => ['required_if:bolsistaProdutividade,sim'], + //'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''], + 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], + 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], + 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], + 'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required' : ''], + 'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes' : ''], + ]); + } + + if (!($request->senha === $request->confirmar_senha)) { + return redirect()->back()->withErrors(['senha' => 'Senhas diferentes']); + } + + $user = new User(); + $user->name = $request->name; + $user->tipo = $request->tipo; + $user->cpf = $request->cpf; + $user->celular = $request->celular; + $user->email = $request->email; + $user->password = bcrypt($request->senha); + if ($request->instituicao != null) { + $user->instituicao = $request->instituicao; + } elseif (isset($request->instituicaoSelect) && $request->instituicaoSelect != 'Outra') { + $user->instituicao = $request->instituicaoSelect; + } + $user->save(); + + switch ($request->tipo) { + case 'administradorResponsavel': + $adminResp = new AdministradorResponsavel(); + $adminResp->user_id = $user->id; + $adminResp->save(); + break; + case 'coordenador': + $coordenador = new CoordenadorComissao(); + $coordenador->user_id = $user->id; + $coordenador->save(); + break; + case 'avaliador': + $avaliador = new Avaliador(); + $avaliador->user_id = $user->id; + $avaliador->tipo = $request->tipoAvaliador; + $avaliador->save(); + break; + case 'proponente': + $proponente = new Proponente(); + if ($request->SIAPE != null) { + $proponente->SIAPE = $request->SIAPE; + } + $proponente->cargo = $request->cargo; + + if ($request->vinculo != 'Outro') { + $proponente->vinculo = $request->vinculo; + } else { + $proponente->vinculo = $request->outro; + } + + $proponente->titulacaoMaxima = $request->titulacaoMaxima; + $proponente->anoTitulacao = $request->anoTitulacao; + $proponente->areaFormacao = $request->areaFormacao; + $proponente->bolsistaProdutividade = $request->bolsistaProdutividade; + if ($request->bolsistaProdutividade == 'sim') { + $proponente->nivel = $request->nivel; + } + $proponente->linkLattes = $request->linkLattes; + + $proponente->user_id = $user->id; + $proponente->save(); + break; + case 'participante': + $participante = new Participante(); + $participante->user_id = $user->id; + $participante->save(); + break; + } + + return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário cadastrado com sucesso']); + } + + public function edit($id) + { + $user = User::find($id); + + $adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first(); + $avaliador = Avaliador::where('user_id', '=', $id)->first(); + $proponente = Proponente::where('user_id', '=', $id)->first(); + $participante = Participante::where('user_id', '=', $id)->first(); + + return view('administrador.editar_user')->with(['user' => $user, + 'adminResp' => $adminResp, + 'proponente' => $proponente, + 'participante' => $participante, ]); + } + + public function update(Request $request, $id) + { + $user = User::find($id); + + if ($request->tipo == 'coordenador') { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'tipo' => ['required'], + 'email' => ['required', 'string', 'email', 'max:255'], + 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], + 'instituicaoSelect' => ['required_without:instituicao'], + 'celular' => ($request['celular'] != null ? 'required|string|telefone' : 'nullable'), + 'cpf' => ($request['cpf'] != null ? 'required|cpf|unique:users' : 'nullable'), + ]); + } elseif ($request->tipo != 'proponente') { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'tipo' => ['required'], + 'email' => ['required', 'string', 'email', 'max:255'], + 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], + 'instituicaoSelect' => ['required_without:instituicao'], + 'celular' => ['required', 'string', 'telefone'], + 'cpf' => ['required', 'cpf'], + ]); + } else { + $validated = $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255'], + 'tipo' => ['required'], + 'cpf' => ['required', 'cpf'], + 'celular' => ['required', 'string', 'telefone'], + 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'], + 'instituicaoSelect' => ['required_without:instituicao'], + 'cargo' => ['required'], + 'vinculo' => ['required'], + 'outro' => ['required_if:vinculo,Outro'], + 'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'], + 'titulacaoMaxima' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), + 'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'], + 'anoTitulacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), + 'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'], + 'areaFormacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), + 'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'], + 'bolsistaProdutividade' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')), + 'nivel' => ['required_if:bolsistaProdutividade,sim'], + //'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''], + 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], + 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], + 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], + 'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required' : ''], + 'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes' : ''], + ]); + } + + // if (!(Hash::check($request->senha_atual, $user->password))) { + // return redirect()->back()->withErrors(['senha_atual' => 'Senha atual não correspondente']); + // } + + // if (!($request->nova_senha === $request->confirmar_senha)) { + // return redirect()->back()->withErrors(['nova_senha' => 'Senhas diferentes']); + // } + + switch ($request->tipo) { + case 'administradorResponsavel': + $adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first(); + $adminResp->user_id = $user->id; + $adminResp->update(); + break; + case 'coordenador': + $coordenador = CoordenadorComissao::where('user_id', '=', $id)->first(); + $coordenador->user_id = $user->id; + $coordenador->update(); + break; + case 'avaliador': + $avaliador = Avaliador::where('user_id', '=', $id)->first(); + $avaliador->user_id = $user->id; + $avaliador->update(); + break; + case 'proponente': + $proponente = Proponente::where('user_id', '=', $id)->first(); + if ($request->SIAPE != null) { + $proponente->SIAPE = $request->SIAPE; + } + $proponente->cargo = $request->cargo; + + if ($request->vinculo != 'Outro') { + $proponente->vinculo = $request->vinculo; + } else { + $proponente->vinculo = $request->outro; + } + + $proponente->titulacaoMaxima = $request->titulacaoMaxima; + $proponente->anoTitulacao = $request->anoTitulacao; + $proponente->areaFormacao = $request->areaFormacao; + $proponente->bolsistaProdutividade = $request->bolsistaProdutividade; + if ($request->bolsistaProdutividade == 'sim') { + $proponente->nivel = $request->nivel; + } + $proponente->linkLattes = $request->linkLattes; + + $proponente->user_id = $user->id; + $proponente->update(); + break; + case 'participante': + $participante = Participante::where('user_id', '=', $id)->first(); + $participante->user_id = $user->id; + $participante->update(); + break; + } + + $user->name = $request->name; + $user->tipo = $request->tipo; + $user->email = $request->email; + $user->cpf = $request->cpf; + $user->celular = $request->celular; + if ($request->instituicao != null) { + $user->instituicao = $request->instituicao; + } elseif (isset($request->instituicaoSelect) && $request->instituicaoSelect != 'Outra') { + $user->instituicao = $request->instituicaoSelect; + } + // $user->password = bcrypt($request->nova_senha); + $user->update(); + + return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário atualizado com sucesso']); + } + + public function destroy($id) + { + $user = User::find($id); + $adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first(); + $avaliador = Avaliador::where('user_id', '=', $id)->first(); + $proponente = Proponente::where('user_id', '=', $id)->first(); + $participante = Participante::where('user_id', '=', $id)->first(); + + if (!(is_null($adminResp))) { + $adminResp->delete(); + } elseif (!(is_null($avaliador))) { + $avaliador->delete(); + } elseif (!(is_null($proponente))) { + $proponente->delete(); + } elseif (!(is_null($participante))) { + $participante->delete(); + } + + $user->delete(); + + return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário deletado com sucesso']); + } + + public function atribuir(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $coordenador_id_evento = $evento->coordenadorId; + $coordenador_id = CoordenadorComissao::find($coordenador_id_evento); + $user = Auth::user(); + + if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) { + return redirect()->back(); + } + + return view('administrador.atribuirAvaliadores', ['evento' => $evento]); + } + + public function selecionar(Request $request) + { + $user = Auth::user(); + + $evento = Evento::where('id', $request->evento_id)->first(); + $coordenador_id_evento = $evento->coordenadorId; + $coordenador_id = CoordenadorComissao::find($coordenador_id_evento); + $grandeAreas = GrandeArea::orderBy('nome')->get(); + $areasTematicas = AreaTematica::orderBy('nome')->get(); + $avalSelecionados = $evento->avaliadors; + $avalNaoSelecionadosId = $evento->avaliadors->pluck('id'); + $trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho'); + $avaliadores = Avaliador::whereNotIn('id', $avalNaoSelecionadosId)->get(); + + //$avaliadores = Avaliador::join('naturezas_avaliadors', 'avaliadors.id', '=' ,'naturezas_avaliadors.avaliador_id')->whereNotIn('avaliadors.id', $avalNaoSelecionadosId) + // ->where('naturezas_avaliadors.natureza_id', $evento->natureza_id) + // ->get(); + + $avaliadores_extensao = collect(); + $avaliadores_others = collect(); + + foreach($avaliadores as $avaliador){ + if($evento->natureza_id == 3 && count($avaliador->areaTematicas) > 0){ + $avaliadores_extensao->push($avaliador); + }elseif($evento->natureza_id != 3 && count($avaliador->areaTematicas) == 0){ + $avaliadores_others->push($avaliador); + } + } + + if($evento->natureza_id == 3){ + $avaliadores = $avaliadores_extensao; + } else { + $avaliadores = $avaliadores_others; + } + + + if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) { + return redirect()->back(); + } + + return view('administrador.selecionarAvaliadores', [ + 'evento' => $evento, + 'avaliadores' => $avaliadores, + 'avalSelecionados' => $avalSelecionados, + 'grandeAreas' => $grandeAreas, + 'trabalhos' => $trabalhos, + 'areasTematicas' => $areasTematicas, + ]); + } + + public function projetos(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $trabalhos = $evento->trabalhos; + $grandesAreas = GrandeArea::orderBy('nome')->get(); + $areasTematicas = AreaTematica::orderBy('nome')->get(); + $avaliadores = $evento->avaliadors; + foreach ($trabalhos as $key => $trabalho) { + $avalSelecionadosId = $trabalho->avaliadors->pluck('id'); + $avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get(); + $trabalho->aval = $avalProjeto; + } + + //dd($avaliadores->teste); + + return view('administrador.selecionarProjetos', [ + 'evento' => $evento, + 'trabalhos' => $trabalhos, + 'avaliadores' => $avaliadores, + 'grandesAreas' => $grandesAreas, + 'areasTematicas' => $areasTematicas + ]); + } + + public function adicionar(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $aval = Avaliador::where('id', $request->avaliador_id)->first(); + $aval->eventos()->attach($evento); + $aval->save(); + $user = $aval->user()->first(); + + $subject = 'Convite para avaliar projetos da UFAPE'; + Mail::to($user->email) + ->send(new EmailParaUsuarioNaoCadastrado($user->name, ' ', 'Avaliador-Cadastrado', $evento->nome, ' ', $subject, $evento->tipo, $evento->natureza_id)); + + return redirect()->back(); + } + + public function remover(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $aval = Avaliador::where('id', $request->avaliador_id)->first(); + $aval->eventos()->detach($evento); + $aval->trabalhos()->detach(); + $aval->save(); + + return redirect()->back(); + } + + public function removerProjAval(Request $request) + { + //Acesso 1 = Ad Hoc, 2 - Interno, 3 - Interno e Ad Hoc + $aval = Avaliador::where('id', $request->avaliador_id)->first(); + $trabalho = Trabalho::where('id', $request->trabalho_id)->first(); + if ($request->flag == 0) { + if (($aval->tipo == 'Interno' && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) || ($aval->tipo == null && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3 && ($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco'))) { + $aval->trabalhos() + ->updateExistingPivot($trabalho->id, ['acesso' => 2]); + } else { + $aval->trabalhos()->detach($trabalho); + } + } else { + if (($aval->tipo == 'Interno' && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) || ($aval->tipo == null && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3 && ($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco'))) { + $aval->trabalhos() + ->updateExistingPivot($trabalho->id, ['acesso' => 1]); + } else { + $aval->trabalhos()->detach($trabalho); + } + } + + if ($trabalho->status === 'avaliado') { + $trabalho->status = 'submetido'; + $trabalho->save(); + } + + $aval->save(); + + return redirect()->back(); + } + + public function buscar(Request $request) + { + $trabalho = Trabalho::where('id', $request->item)->first(); + $avalSelecionadosId = $trabalho->avaliadors->pluck('id'); + $avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get(); + + //dd($avaliadores); + + return response()->json($avalProjeto); + } + + public function atribuicaoProjeto(Request $request) + { + $trabalho = Trabalho::where('id', $request->trabalho_id)->first(); + $evento = Evento::where('id', $request->evento_id)->first(); + + if ($request->avaliadores_internos_id != null) { + foreach ($request->avaliadores_internos_id as $avaliador) { + $aval = Avaliador::find($avaliador); + if ($aval->trabalhos()->where('trabalho_id', $trabalho->id)->first() != null) { + $aval->trabalhos() + ->updateExistingPivot($trabalho->id, ['acesso' => 3]); + } else { + $trabalho->avaliadors()->attach($aval, ['acesso' => 2]); + $evento->avaliadors()->syncWithoutDetaching($aval); + } + } + } + + if ($request->avaliadores_externos_id != null) { + foreach ($request->avaliadores_externos_id as $avaliador) { + $aval = Avaliador::find($avaliador); + if (Avaliador::where('id', $avaliador)->where('tipo', 'Interno')->count() > 0 || (Avaliador::where('id', $avaliador)->where('tipo', null)->count() > 0 && (($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco')))) { + if ($aval->trabalhos()->where('trabalho_id', $trabalho->id)->first() != null) { + $aval->trabalhos() + ->updateExistingPivot($trabalho->id, ['acesso' => 3]); + } else { + $trabalho->avaliadors()->attach($aval, ['acesso' => 1]); + $evento->avaliadors()->syncWithoutDetaching($aval); + } + } else { + $trabalho->avaliadors()->attach($aval, ['acesso' => 1]); + $evento->avaliadors()->syncWithoutDetaching($aval); + } + } + } + + if ($request->avaliadores_externos_id == null & $request->avaliadores_internos_id == null) { + redirect()->back()->with(['error' => 'Selecione ao menos um avaliador.', 'trabalho' => $trabalho->id]); + } + + $avaliadores = Avaliador::whereIn('id', (array) $request->avaliadores_externos_id) + ->orWhereIn('id', (array) $request->avaliadores_internos_id)->get(); + $trabalho->save(); + + foreach ($avaliadores as $avaliador) { + $userTemp = User::find($avaliador->user->id); + + $notificacao = Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $avaliador->user_id, + 'trabalho_id' => $request->trabalho_id, + 'lido' => false, + 'tipo' => 5, + ]); + $notificacao->save(); + Notification::send($userTemp, new AtribuicaoAvaliadorExternoNotification($userTemp, $trabalho, $evento->formAvaliacaoExterno, $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso)); + } + + return redirect()->back(); + } + + public function enviarConviteEAtribuir(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $nomeAvaliador = $request->nomeAvaliador; + $emailAvaliador = $request->emailAvaliador; + $area = Area::where('id', $request->area_id)->first(); + $user = User::where('email', $emailAvaliador)->first(); + $areaTematica = AreaTematica::find($request->areasTemeticas); + + if ($request->instituicao == 'ufape') { + $nomeInstituicao = 'Universidade Federal do Agreste de Pernambuco'; + $externoInterno = 'Interno'; + } else { + $nomeInstituicao = $request->outra; + $externoInterno = 'Externo'; + } + if (isset($user)) { + $passwordTemporario = Str::random(8); + $subject = 'Convite para avaliar projetos da UFAPE'; + Mail::to($emailAvaliador) + ->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador-Cadastrado', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id)); + } else { + $passwordTemporario = Str::random(8); + $subject = 'Convite para avaliar projetos da UFAPE'; + Mail::to($emailAvaliador) + ->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id)); + $user = User::create([ + 'email' => $emailAvaliador, + 'password' => bcrypt($passwordTemporario), + 'usuarioTemp' => false, + 'name' => $nomeAvaliador, + 'tipo' => 'avaliador', + 'instituicao' => $nomeInstituicao, + ]); + + $user->markEmailAsVerified(); + } + + $trabalho = Trabalho::where('id', $request->trabalho_id)->first(); + + if ($user->avaliadors == null) { + $avaliador = new Avaliador(); + $avaliador->tipo = $externoInterno; + $avaliador->save(); + $avaliador->area()->associate($area); + $avaliador->user()->associate($user); + $avaliador->eventos()->attach($evento); + $user->save(); + $avaliador->save(); + } else { + $avaliador = $user->avaliadors; + $avaliador->eventos()->attach($evento); + $user->save(); + $avaliador->save(); + } + + if($evento->natureza_id == 3){ + $avaliador->areaTematicas()->sync($areaTematica); + } + + if ($request->instituicao == 'ufape') { + $trabalho->avaliadors()->attach($avaliador, ['acesso' => 2]); + $evento->avaliadors()->syncWithoutDetaching($avaliador); + } else { + $trabalho->avaliadors()->attach($avaliador, ['acesso' => 1]); + $evento->avaliadors()->syncWithoutDetaching($avaliador); + } + + $trabalho->save(); + + $notificacao = Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $avaliador->user_id, + 'trabalho_id' => $request->trabalho_id, + 'lido' => false, + 'tipo' => 5, + ]); + $notificacao->save(); + + return redirect()->back(); + } + + public function reenviarConviteAtribuicaoProjeto(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $avaliador = Avaliador::where('id', $request->avaliador_id)->first(); + if ($avaliador->user->avaliadors->eventos->where('id', $evento->id)->first()->pivot->convite != true) { + $avaliador->user->avaliadors->eventos()->updateExistingPivot($evento->id, ['convite' => null]); + } + + $notificacao = Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $avaliador->user_id, + 'trabalho_id' => $request->trabalho_id, + 'lido' => false, + 'tipo' => 5, + ]); + $notificacao->save(); + + $trabalho = Trabalho::where('id', $request->trabalho_id)->first(); + $subject = 'Convite para avaliar projetos da UFAPE - Reenvio'; + Mail::to($avaliador->user->email) + ->send(new EmailLembrete($avaliador->user->name, $subject, $trabalho->titulo, $evento->nome, $evento->tipo, $evento->natureza_id, $evento->formAvaliacaoExterno, $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso)); + + return redirect()->back(); + } + + public function enviarConvite(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $nomeAvaliador = $request->nomeAvaliador; + $emailAvaliador = $request->emailAvaliador; + $area = Area::where('id', $request->area_id)->first(); + $user = User::where('email', $emailAvaliador)->first(); + $areaTematica = AreaTematica::find($request->areasTemeticas); + + if ($request->instituicao == 'ufape') { + $nomeInstituicao = 'Universidade Federal do Agreste de Pernambuco'; + $externoInterno = 'Interno'; + } else { + $nomeInstituicao = $request->outra; + $externoInterno = 'Externo'; + } + + //existe o caso de enviar o convite de novo para um mesmo usuário + // if(isset($user->avaliadors->eventos->where('id', $evento->id)->first()->pivot->convite) ){ + // return redirect()->back()->with(['mensagem' => 'Usuário já recebeu um convite e está pendente']); + // } + + if (isset($user)) { + $passwordTemporario = Str::random(8); + $subject = 'Convite para avaliar projetos da UFAPE'; + Mail::to($emailAvaliador) + ->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador-Cadastrado', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id)); + } else { + $passwordTemporario = Str::random(8); + $subject = 'Convite para avaliar projetos da UFAPE'; + Mail::to($emailAvaliador) + ->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id)); + $user = User::create([ + 'email' => $emailAvaliador, + 'password' => bcrypt($passwordTemporario), + 'usuarioTemp' => false, + 'name' => $nomeAvaliador, + 'tipo' => 'avaliador', + 'instituicao' => $nomeInstituicao, + ]); + + $user->markEmailAsVerified(); + } + + if ($user->avaliadors == null) { + $avaliador = new Avaliador(); + $avaliador->tipo = $externoInterno; + $avaliador->save(); + $avaliador->area()->associate($area); + $avaliador->user()->associate($user); + $avaliador->eventos()->attach($evento); + if($evento->natureza_id == 3){ + $avaliador->naturezas()->sync($evento->natureza_id); + $avaliador->areaTematicas()->sync($areaTematica); + } + $user->save(); + $avaliador->save(); + } else { + $avaliador = $user->avaliadors; + $avaliador->eventos()->attach($evento); + if($evento->natureza_id == 3){ + $avaliador->naturezas()->sync($evento->natureza_id); + $avaliador->areaTematicas()->sync($areaTematica); + } + $user->save(); + $avaliador->save(); + } + + return redirect()->back(); + } + + public function reenviarConvite(Request $request) + { + $evento = Evento::where('id', $request->evento_id)->first(); + $avaliador = Avaliador::where('id', $request->avaliador_id)->first(); + $user = $avaliador->user()->first(); + + $subject = 'Convite para avaliar projetos da UFAPE - Reenvio'; + Mail::to($user->email) + ->send(new EmailParaUsuarioNaoCadastrado($user->name, ' ', 'Avaliador-Cadastrado', $evento->nome, ' ', $subject, $evento->tipo, $evento->natureza_id)); + + return redirect()->back(); + } + + // public function baixarAnexo(Request $request) { + // return Storage::download($request->anexo); + // } + + public function baixarModeloAvaliacao() + { + $file = public_path().'/ModeloFormularioAvaliadorExternoPIBIC.docx'; + $headers = ['Content-Type: application/docx']; + ob_end_clean(); + + return response()->download($file, 'ModeloFormularioAvaliadorExternoPIBIC.docx', $headers); + } + + public function imprimirResultados(Request $request) + { + $evento = Evento::where('id', $request->id)->first(); + // Ampla Concorrencia + $trabalhosAmpla = Trabalho::where('evento_id', $evento->id) + ->where('modalidade', 'AmplaConcorrencia')->get(); + + foreach ($trabalhosAmpla as $trabalho) { + $trabalho->pontuacao = 0; + $cont = 0; + // Caso especial do PIBEX onde a pontuação fica no Ad Hoc + if ($evento->tipo == 'PIBEX') { + foreach ($trabalho->avaliadors as $avaliador) { + if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { + $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; + ++$cont; + } + } + } else { + foreach ($trabalho->avaliadors as $avaliador) { + if ($avaliador->tipo == 'Interno') { + $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); + if ($parecerInterno != null) { + $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; + ++$cont; + } + } + } + } + if ($trabalho->pontuacao != 0) { + $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); + } + } + $trabalhosAmpla = $trabalhosAmpla->sort(function ($item, $next) { + return $item->pontuacao >= $next->pontuacao ? -1 : 1; + }); + + // Recém Doutor + $trabalhosDoutor = Trabalho::where('evento_id', $evento->id) + ->where('modalidade', 'RecemDoutor')->get(); + foreach ($trabalhosDoutor as $trabalho) { + $trabalho->pontuacao = 0; + $cont = 0; + // Caso especial do PIBEX onde a pontuação fica no Ad Hoc + if ($evento->tipo == 'PIBEX') { + foreach ($trabalho->avaliadors as $avaliador) { + if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 || + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) && + $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) { + $trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao; + ++$cont; + } + } + } else { + foreach ($trabalho->avaliadors as $avaliador) { + if ($avaliador->tipo == 'Interno') { + $parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first(); + if ($parecerInterno != null) { + $trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao; + ++$cont; + } + } + } + } + if ($trabalho->pontuacao != 0) { + $trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', ''); + } + } + $trabalhosDoutor = $trabalhosDoutor->sort(function ($item, $next) { + return $item->pontuacao >= $next->pontuacao ? -1 : 1; + }); + + $pdf = PDF::loadView('/administrador/resultadosProjetosCotas', compact('trabalhosDoutor', 'trabalhosAmpla', 'evento')); + + return $pdf->setPaper('a4')->stream('Resultados.pdf'); + } +} diff --git a/app/Http/Controllers/ArquivoController.php b/app/Http/Controllers/ArquivoController.php index fa9b6ce25f44647aeef4956d7820daa44c115b79..87c03928f1a15cb7108a2ef8c4de201aa8d4e6c2 100755 --- a/app/Http/Controllers/ArquivoController.php +++ b/app/Http/Controllers/ArquivoController.php @@ -124,6 +124,7 @@ class ArquivoController extends Controller $trabalho = Trabalho::where('id',$id)->first(); $participantes = $trabalho->participantes; + $evento = $trabalho->evento; // Verficação de pendencia de substituição $aux = count(Substituicao::where('status','Em Aguardo')->whereIn('participanteSubstituido_id',$trabalho->participantes->pluck('id'))->get()); @@ -139,12 +140,18 @@ class ArquivoController extends Controller return redirect()->back(); } - foreach ($participantes as $participante){ - array_push($arquivos, $participante->planoTrabalho); + if ($evento->numParticipantes != 0) { + foreach ($participantes as $participante){ + array_push($arquivos, $participante->planoTrabalho); + } + } else { + $arquivo = Arquivo::where("trabalhoId", $trabalho->id)->first(); + array_push($arquivos, $arquivo); } + $hoje = Carbon::today('America/Recife'); $hoje = $hoje->toDateString(); - return view('planosTrabalho.listar')->with(['arquivos' => $arquivos, 'hoje' => $hoje, 'trabalho' => $trabalho]); + return view('planosTrabalho.listar')->with(['arquivos' => $arquivos, 'hoje' => $hoje, 'trabalho' => $trabalho, 'evento' => $evento]); } public function anexarRelatorio(Request $request){ diff --git a/app/Http/Controllers/AvaliacaoRelatorioController.php b/app/Http/Controllers/AvaliacaoRelatorioController.php index 97a31aa99051e6819e146aaa595df3c222f6a3ac..dd1af6268b341515613c6ffe6a78b404ce8b4cc7 100644 --- a/app/Http/Controllers/AvaliacaoRelatorioController.php +++ b/app/Http/Controllers/AvaliacaoRelatorioController.php @@ -86,9 +86,11 @@ class AvaliacaoRelatorioController extends Controller public function atribuicaoAvaliador(Request $request){ $trabalho = Trabalho::find($request->trabalho_id); - foreach ($trabalho->participantes as $participante){ - $avaliadoresId= $request->input('avaliadores_'.$participante->planoTrabalho->id.'_id'); - // utilizado desta forma pois a versão do PHP 7.2 é preciso que o $array usado na função count($array) não pode ser um valor NULL. + $evento = $trabalho->evento; + if ($evento->numParticipantes == 0) { + $arquivo = Arquivo::where("trabalhoId", $trabalho->id)->first(); + + $avaliadoresId = $request->input('avaliadores_'.$arquivo->id.'_id'); $numeroDeItens = is_countable( $avaliadoresId ) ? count( $avaliadoresId ) : 0; for ($i = 0; $i < $numeroDeItens; $i++){ @@ -97,7 +99,7 @@ class AvaliacaoRelatorioController extends Controller 'comentario'=>'', 'nota'=>null, 'user_id'=>$avaliadoresId[$i], - 'arquivo_id'=>$participante->planoTrabalho->id, + 'arquivo_id'=>$arquivo->id, ]); $avaliacao->save(); Notification::send( $avaliacao->user, new AtribuicaoAvaliadorRelatorioNotification($avaliacao->tipo, $avaliacao->plano, $trabalho, $avaliacao->user)); @@ -115,6 +117,38 @@ class AvaliacaoRelatorioController extends Controller $avaliador->save(); } } + + } else { + foreach ($trabalho->participantes as $participante){ + $avaliadoresId= $request->input('avaliadores_'.$participante->planoTrabalho->id.'_id'); + // utilizado desta forma pois a versão do PHP 7.2 é preciso que o $array usado na função count($array) não pode ser um valor NULL. + $numeroDeItens = is_countable( $avaliadoresId ) ? count( $avaliadoresId ) : 0; + + for ($i = 0; $i < $numeroDeItens; $i++){ + $avaliacao = AvaliacaoRelatorio::create([ + 'tipo'=>$request->tipo_relatorio, + 'comentario'=>'', + 'nota'=>null, + 'user_id'=>$avaliadoresId[$i], + 'arquivo_id'=>$participante->planoTrabalho->id, + ]); + $avaliacao->save(); + Notification::send( $avaliacao->user, new AtribuicaoAvaliadorRelatorioNotification($avaliacao->tipo, $avaliacao->plano, $trabalho, $avaliacao->user)); + + if(Avaliador::where('user_id',$avaliadoresId[$i])->get()->count()==0){ + $userTemp = User::find($avaliadoresId[$i]); + if($userTemp->instituicao==null || $userTemp->instituicao == "UFAPE" || $userTemp->instituicao == "Universidade Federal do Agreste de Pernambuco"){ + $tipoAvaliador = "Interno"; + }else{ + $tipoAvaliador = "Externo"; + } + $avaliador = new Avaliador(); + $avaliador->tipo = $tipoAvaliador; + $avaliador->user_id = $avaliadoresId[$i]; + $avaliador->save(); + } + } + } } return redirect()->back(); } diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php index cef11cd4d22adc21f370416b3ef7c7f6b172d152..7a88a10f017b8b6aab94b5311607fd098954525a 100755 --- a/app/Http/Controllers/TrabalhoController.php +++ b/app/Http/Controllers/TrabalhoController.php @@ -1,1963 +1,2022 @@ - '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()); - } - - 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(); - - // 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(); - - $AvalRelatParcial = []; - $AvalRelatFinal = []; - - foreach ($participantes as $participante) { - if (isset($participante->planoTrabalho)) { - $avals = AvaliacaoRelatorio::where('arquivo_id', $participante->planoTrabalho->id)->get(); - } else { - $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, - ]); - } - - 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 - ]); - } - - 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 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); - - 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 ($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(); - - } - - } - - } - - } - - 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); - $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' - ])); - }else{ - $trabalho = Auth::user()->proponentes->trabalhos() - ->create($request->except([ - 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', - 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', - 'justificativaAutorizacaoEtica','modalidade','anexo_docExtra' - ])); - } - - - 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(); - - } - - } - } - - $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()); + } + + 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(); + + $AvalRelatParcial = []; + $AvalRelatFinal = []; + + foreach ($participantes as $participante) { + if (isset($participante->planoTrabalho)) { + $avals = AvaliacaoRelatorio::where('arquivo_id', $participante->planoTrabalho->id)->get(); + } else { + $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 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' + ])); + }else{ + $trabalho = Auth::user()->proponentes->trabalhos() + ->create($request->except([ + 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', + 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', + 'justificativaAutorizacaoEtica','modalidade','anexo_docExtra' + ])); + } + + + 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 4cc981ca88936f97f51372b5bf72070c1c8d1160..8c7edd08624ce6768831ddf6798aa16e93f2a896 100755 --- a/app/Http/Requests/StoreTrabalho.php +++ b/app/Http/Requests/StoreTrabalho.php @@ -31,9 +31,6 @@ class StoreTrabalho extends FormRequest $evento = Evento::find($this->editalId); $rules = []; - if(!($this->has('marcado'))){ - $rules['erro'] = ['required']; - } if($this->has('marcado')){ foreach ($this->get('marcado') as $key => $value) { if( intval($value) == $key){ @@ -67,6 +64,9 @@ class StoreTrabalho extends FormRequest } } + } else { + $rules['anexoPlanoTrabalho'] = ['required']; + $rules['nomePlanoTrabalho'] = ['required', 'string']; } if($this->has('rascunho')) { diff --git a/app/Http/Requests/UpdateTrabalho.php b/app/Http/Requests/UpdateTrabalho.php index 4d8cff53606e972f91870ae01f69e420d413b583..83534ac6bce9723515cf2c87259bd6d3f522437d 100755 --- a/app/Http/Requests/UpdateTrabalho.php +++ b/app/Http/Requests/UpdateTrabalho.php @@ -6,6 +6,7 @@ use App\Arquivo; use App\Evento; use App\Participante; use App\Trabalho; +use App\Proponente; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Auth; use Illuminate\Foundation\Http\FormRequest; @@ -32,9 +33,6 @@ class UpdateTrabalho extends FormRequest $projeto = Trabalho::find($this->id); $evento = Evento::find($this->editalId); - if(!($this->has('marcado'))){ - $rules['erro'] = ['required']; - } if($this->has('marcado')){ foreach ($this->get('marcado') as $key => $value) { if( intval($value) == $key){ @@ -67,20 +65,17 @@ class UpdateTrabalho extends FormRequest if($evento->tipo != "PIBEX") { $rules['media_do_curso.' . $value] = ['required', 'string']; } + $rules['anexoPlanoTrabalho.'.$value] = [Rule::requiredIf($participante->planoTrabalho == null)]; $rules['nomePlanoTrabalho.'.$value] = ['required', 'string']; - - if($participante !=null){ - $arquivo = Arquivo::where('participanteId',$participante->id)->where('trabalhoId',$projeto->id)->first(); - if($arquivo == null || $this->nomePlanoTrabalho[$value] != $arquivo->titulo){ - $rules['anexoPlanoTrabalho.'.$value] = ['required', 'mimes:pdf']; - } - }else{ - $rules['anexoPlanoTrabalho.'.$value] = ['required', 'mimes:pdf']; - } - + } } + } else { + $arquivo = Arquivo::where("trabalhoId", $projeto->id)->first(); + $rules['anexoPlanoTrabalho'] = [Rule::requiredIf($arquivo == null)]; + $rules['nomePlanoTrabalho'] = [Rule::requiredIf($arquivo->titulo == null), 'string']; } + // dd($this->all()); if ($this->has('rascunho')) { $rules = []; diff --git a/app/Proponente.php b/app/Proponente.php index 8ccf27ecdbae4f2cc44fd25b26d4064dfdc69a30..d8b3fa18ce02d0e830ebbc19cd119f0c2b1d5113 100755 --- a/app/Proponente.php +++ b/app/Proponente.php @@ -11,6 +11,9 @@ class Proponente extends Model public function user(){ return $this->belongsTo('App\User'); } + public function planoTrabalho() { + return $this->hasOne('App\Arquivo', 'proponenteId'); + } public function trabalhos(){ return $this->hasMany('App\Trabalho'); } diff --git a/database/migrations/2022_11_08_214901_add_conflitos_interesse_to_trabalhos_table.php b/database/migrations/2022_11_08_162425_add_conflitos_interesse_to_trabalhos_table.php similarity index 100% rename from database/migrations/2022_11_08_214901_add_conflitos_interesse_to_trabalhos_table.php rename to database/migrations/2022_11_08_162425_add_conflitos_interesse_to_trabalhos_table.php diff --git a/database/migrations/2022_11_21_161801_alter_table_arquivos3.php b/database/migrations/2022_11_21_161801_alter_table_arquivos3.php new file mode 100644 index 0000000000000000000000000000000000000000..5726f4fd781f19e8c0222e1be10d95dfe098272d --- /dev/null +++ b/database/migrations/2022_11_21_161801_alter_table_arquivos3.php @@ -0,0 +1,30 @@ +integer('participanteId')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/migrations/2022_11_22_115005_add_proponente_arquivos_table.php b/database/migrations/2022_11_22_115005_add_proponente_arquivos_table.php new file mode 100644 index 0000000000000000000000000000000000000000..48a1d24e6b62d4755a9fc3f5e84bf0b7d47cc193 --- /dev/null +++ b/database/migrations/2022_11_22_115005_add_proponente_arquivos_table.php @@ -0,0 +1,32 @@ +integer('proponenteId')->nullable(); + + $table->foreign('proponenteId')->references('id')->on('proponentes'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/resources/views/administrador/analisar.blade.php b/resources/views/administrador/analisar.blade.php index 488d52f35d53061f28af4629b9a71359ec9842be..4a7daed38906a8cf5280697d0730066509dfa87c 100755 --- a/resources/views/administrador/analisar.blade.php +++ b/resources/views/administrador/analisar.blade.php @@ -103,12 +103,13 @@

Proponente: {{ App\Proponente::find($trabalho->proponente_id)->user->name }}

- + @if ($evento->numParticipantes != 0)

Discentes: @foreach($trabalho->participantes as $participante) {{$participante->user->name}}; @endforeach

+ @endif @if($trabalho->grande_area_id != null && $trabalho->area_id != null && $trabalho->sub_area_id != null)
{{$trabalho->grandeArea->nome}} > {{$trabalho->area->nome}} > {{$trabalho->subArea->nome}}
diff --git a/resources/views/administrador/analisarProposta.blade.php b/resources/views/administrador/analisarProposta.blade.php index 023cdf8cc8089f40f0b27a0f869c367416e59ddd..93762582628fe6a44b66eebf6c9b7dce1ffe74d7 100644 --- a/resources/views/administrador/analisarProposta.blade.php +++ b/resources/views/administrador/analisarProposta.blade.php @@ -1,2158 +1,2199 @@ -@extends('layouts.app') - -@section('styles') - -@endsection - -@section('content') - @php - $grandesAreas = \App\GrandeArea::all(); - $hoje = \Carbon\Carbon::today('America/Recife'); - $hoje = $hoje->toDateString(); - @endphp -
-
- -
- @if (session('sucesso')) -
- {{ session('sucesso') }} -
- @endif - @if($errors->any()) -
- {{$errors->first()}} -
- @endif -
-
-
-
- -
-
Informações da Proposta - @if($trabalho->arquivado == false) - - -
- @csrf - - -
- @else - - - -
- @csrf - - -
- @endif -
-
-
- -
-
{{$trabalho->titulo}} - @if(Auth::user()->tipo == 'administrador') - - - - @endif -
-
- -
{{$evento->nome}}
-
-
-
-
-
-
- -
-
- @if($trabalho->evento->natureza_id != 3) -
-
-
-
Área de Ensino
-
-
- {{App\GrandeArea::where('id', $trabalho->grande_area_id)->first()->nome}} > - {{App\Area::where('id', $trabalho->area_id)->first()->nome}} - @if(App\SubArea::where('id', $trabalho->sub_area_id)->first() != null) - > {{App\SubArea::where('id', $trabalho->sub_area_id)->first()->nome}}@endif - -
-
-
-
-
- @endif -
-
-
- -
-
-
-
-
-
-
-
Informações do - Proponente
-
-
-
-
-

- Nome: {{ App\Proponente::find($trabalho->proponente_id)->user->name }}

-
-
- Lattes: - @if(App\Proponente::where('id', $trabalho->proponente_id)->first()->linkLattes != null) - {{ App\Proponente::where('id', $trabalho->proponente_id)->first()->linkLattes }} - @endif -
- - @if($evento->tipo != "PIBEX") -
-
- Grupo de Pesquisa: - {{ $trabalho->linkGrupoPesquisa }} -
- -
-
- Valor da Planilha de Pontuação: - {{$trabalho->pontuacaoPlanilha}} -
- @endif - @if($trabalho->modalidade != null) -
-
- Modalidade: - {{$trabalho->modalidade}} -
- @endif - @if ($trabalho->conflitosInteresse != null) -
-
- Conflitos de Interesse: - {{ $trabalho->conflitosInteresse }} -
- @endif -
-
-
-
-
-
- -
-
-
-
-
-
-
Discentes
-
- @if($substituicoesPendentes->count() > 0) - Substituições - Pendentes - - @else - Substituições/Desligamentos - @endif -
-
-
- -
- @foreach($trabalho->participantes as $participante) -
- -
-
-
{{$participante->user->name}}
-
- Informações -
-
- - - - @foreach($substituicoesProjeto as $subs) - - - - - - - @endforeach - @endforeach -
-
-
-
-
-
- - {{--Janelas para aprovação ou reprovação de substituição--}} - - - - - - -
-
-
-
-
-
-
Anexos
-
-
- - {{-- Anexo do Projeto --}} -
- {{-- Arquivo --}} -
- - - -
- - @if($evento->tipo != "PIBEX") -
- - - -
- @endif - - @if($evento->tipo != "PIBEX") -
- @if($trabalho->anexoAutorizacaoComiteEtica != null) - - - @else - - @if($trabalho->justificativaAutorizacaoEtica != null) - - @else - - - @endif - @endif -
- @endif - - @if($evento->tipo != "PIBEX") -
- - - -
- @endif - - @if($evento->tipo != "PIBEX") -
- - @if($trabalho->anexoGrupoPesquisa != null) - - @else - - - @endif -
- @endif - - @if($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM' || $evento->tipo == "PIBEX") - {{-- Decisão do CONSU --}} -
- - -
- @endif - @if($evento->nome_docExtra != null) - {{-- Documento Extra --}} -
- - @if($trabalho->anexo_docExtra) - - @else - - - - @endif -
- @endif - -
-
-
-
-
-
- - -
-
-
-
-
-
-
Relatórios
-
- @if($substituicoesPendentes->count() == 0) - Listar - Relatórios - @else - Listar - Relatórios - @endif -
-
-
- -
- {{-- Relatório Parcial --}} -
- -
-
- -
-
- -
-
- -
- {{-- Relatório Final --}} -
- -
-
- -
-
- -
-
- -
-
- -
-
Avaliações de - Relatórios
- @if((($evento->dt_fimRelatorioParcial < $hoje && $hoje<$evento->dt_inicioRelatorioFinal) - || ($hoje>$evento->dt_fimRelatorioFinal)) && ($substituicoesPendentes->count() == 0) ) -
- - - -
- @else -
- - - -
- @endif - - @if($substituicoesPendentes->count() == 0) - - @endif -
-
- - @if(count($AvalRelatParcial) >0) -
-
Avaliações de Relatórios Parciais
-
-
-
Media das avaliações: {{$MediaAvalRelatParcial}}
-
Avaliações pendentes: {{$AvalRelatParcialPendentes}}
-

-
-
- @foreach($AvalRelatParcial as $aval) -
- -
-
-
{{\App\User::find($aval->user_id)->name}}
-
- @if($aval->nota == null) Pendente @else Avaliação @endif
- @if($aval->nota == null) -
Remover
- @endif -
- - - - - - - - - @endforeach -
- @endif - - @if(count($AvalRelatFinal) >0) -
-
Avaliações de Relatórios Finais
-
-
-
Media das avaliações: {{$MediaAvalRelatFinal}}
-
Avaliações pendentes: {{$AvalRelatFinalPendentes}}
-

-
-
- @foreach($AvalRelatFinal as $aval) -
- -
-
-
{{\App\User::find($aval->user_id)->name}}
-
- @if($aval->nota == null) Pendente @else Avaliação @endif
- @if($aval->nota == null) -
Remover
- @endif - -
- - - - - - - @endforeach -
- @endif - -
-
-
-
-
- - -
-
-
-
-
-
-
Avaliadores
- @if($hoje >= $evento->inicioRevisao && $hoje <= $evento->fimRevisao) -
- - - -
- @endif - - - -
-
- - -
-
Avaliadores - - Internos
-
-
- @foreach($trabalho->avaliadors as $avaliador) - @if(($avaliador->tipo == 'Interno' && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 2 || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 3)) - || (($avaliador->user->instituicao == "UFAPE" || $avaliador->user->instituicao == "Universidade Federal do Agreste de Pernambuco") && $avaliador->tipo == null && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 2 || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 3))) -
- -
-
-
{{$avaliador->user->name}}
- @php - $parecerInterno = App\ParecerInterno::where([['avaliador_id',$avaliador->id],['trabalho_id',$trabalho->id]])->first(); - @endphp - @if($parecerInterno == null) Pendente @else Avaliado @endif - -
- - Remover - -
- - Reenviar convite - -
- @endif - - - @endforeach -
-
- -
-
Avaliadores - - Ad Hoc
-
-
- @foreach($trabalho->avaliadors as $avaliador) - @if( ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null && $avaliador->tipo == "Externo") || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 1 || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 3 - || (($avaliador->user->instituicao != "UFAPE" && $avaliador->user->instituicao != "Universidade Federal do Agreste de Pernambuco") && $avaliador->tipo == null && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 1 || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 3))) -
- -
-
-
{{$avaliador->user->name}}
- - @if($avaliador->trabalhos->where('id', $trabalho->id)->first()->pivot->status == false) - Pendente @else Avaliado @endif - - -
- - Remover - -
- - Reenviar convite - -
- @endif - - - - @endforeach -
-
-
-
-
-
- - -
-
-
-
-
-
-
Recomendação da Proposta
-
-
-
- @csrf -
-
- Comentário - -
-
- status=="aprovado") checked @endif> - Recomendada -
- - status=="reprovado") checked @endif> - Não Recomendada -
-
- - -
-
-
-
- - Voltar - -
-
- - - - - - - - - - -
- - -@endsection - -@section('javascript') - - - - - - - - - - - - - - - - - - - -@endsection +@extends('layouts.app') + +@section('styles') + +@endsection + +@section('content') + @php + $grandesAreas = \App\GrandeArea::all(); + $hoje = \Carbon\Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); + @endphp +
+
+ +
+ @if (session('sucesso')) +
+ {{ session('sucesso') }} +
+ @endif + @if($errors->any()) +
+ {{$errors->first()}} +
+ @endif +
+
+
+
+ +
+
Informações da Proposta + @if($trabalho->arquivado == false) + + +
+ @csrf + + +
+ @else + + + +
+ @csrf + + +
+ @endif +
+
+
+ +
+
{{$trabalho->titulo}} + @if(Auth::user()->tipo == 'administrador') + + + + @endif +
+
+ +
{{$evento->nome}}
+
+
+
+
+
+
+ +
+
+ @if($trabalho->evento->natureza_id != 3) +
+
+
+
Área de Ensino
+
+
+ {{App\GrandeArea::where('id', $trabalho->grande_area_id)->first()->nome}} > + {{App\Area::where('id', $trabalho->area_id)->first()->nome}} + @if(App\SubArea::where('id', $trabalho->sub_area_id)->first() != null) + > {{App\SubArea::where('id', $trabalho->sub_area_id)->first()->nome}}@endif + +
+
+
+
+
+ @endif +
+
+
+ +
+
+
+
+
+
+
+
Informações do + Proponente
+
+
+
+
+

+ Nome: {{ App\Proponente::find($trabalho->proponente_id)->user->name }}

+
+
+ Lattes: + @if(App\Proponente::where('id', $trabalho->proponente_id)->first()->linkLattes != null) + {{ App\Proponente::where('id', $trabalho->proponente_id)->first()->linkLattes }} + @endif +
+ + @if($evento->tipo != "PIBEX") +
+
+ Grupo de Pesquisa: + {{ $trabalho->linkGrupoPesquisa }} +
+ +
+
+ Valor da Planilha de Pontuação: + {{$trabalho->pontuacaoPlanilha}} +
+ @endif + @if($trabalho->modalidade != null) +
+
+ Modalidade: + {{$trabalho->modalidade}} +
+ @endif + @if ($evento->numParticipantes == 0) + @php + $arquivo = App\Arquivo::where("trabalhoId", $trabalho->id)->first(); + @endphp +
+
+ Título do Plano de Trabalho: + {{$arquivo->titulo}} +
+
+
+ + + + +
+ @endif + @if ($trabalho->conflitosInteresse != null) +
+
+ Conflitos de Interesse: + {{ $trabalho->conflitosInteresse }} +
+ @endif +
+
+
+
+
+
+ + @if ($evento->numParticipantes != 0) +
+
+
+
+
+
+
Discentes
+
+ @if($substituicoesPendentes->count() > 0) + Substituições + Pendentes + + @else + Substituições/Desligamentos + @endif +
+
+
+ +
+ @foreach($trabalho->participantes as $participante) +
+ +
+
+
{{$participante->user->name}}
+
+ Informações +
+
+ + + + @foreach($substituicoesProjeto as $subs) + + + + + + + @endforeach + @endforeach +
+
+
+
+
+
+ @endif + + {{--Janelas para aprovação ou reprovação de substituição--}} + + + + + + +
+
+
+
+
+
+
Anexos
+
+
+ + {{-- Anexo do Projeto --}} +
+ {{-- Arquivo --}} +
+ + + +
+ + @if($evento->tipo != "PIBEX") +
+ + + +
+ @endif + + @if($evento->tipo != "PIBEX") +
+ @if($trabalho->anexoAutorizacaoComiteEtica != null) + + + @else + + @if($trabalho->justificativaAutorizacaoEtica != null) + + @else + - + @endif + @endif +
+ @endif + + @if($evento->tipo != "PIBEX") +
+ + + +
+ @endif + + @if($evento->tipo != "PIBEX") +
+ + @if($trabalho->anexoGrupoPesquisa != null) + + @else + - + @endif +
+ @endif + + @if($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM' || $evento->tipo == "PIBEX") + {{-- Decisão do CONSU --}} +
+ + +
+ @endif + @if($evento->nome_docExtra != null) + {{-- Documento Extra --}} +
+ + @if($trabalho->anexo_docExtra) + + @else + + + + @endif +
+ @endif + +
+
+
+
+
+
+ + +
+
+
+
+
+
+
Relatórios
+
+ @if($substituicoesPendentes->count() == 0 || $evento->numParticipantes == 0) + Listar + Relatórios + @else + Listar + Relatórios + @endif +
+
+
+ +
+ {{-- Relatório Parcial --}} +
+ +
+
+ +
+
+ +
+
+ +
+ {{-- Relatório Final --}} +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
Avaliações de + Relatórios
+ @if((($evento->dt_fimRelatorioParcial < $hoje && $hoje<$evento->dt_inicioRelatorioFinal) + || ($hoje>$evento->dt_fimRelatorioFinal)) && ($substituicoesPendentes->count() == 0 || $evento->numParticipantes == 0) ) +
+ + + +
+ @else +
+ + + +
+ @endif + + @if($substituicoesPendentes->count() == 0 || $evento->numParticipantes == 0) + + @endif +
+
+ + @if(count($AvalRelatParcial) >0) +
+
Avaliações de Relatórios Parciais
+
+
+
Media das avaliações: {{$MediaAvalRelatParcial}}
+
Avaliações pendentes: {{$AvalRelatParcialPendentes}}
+

+
+
+ @foreach($AvalRelatParcial as $aval) +
+ +
+
+
{{\App\User::find($aval->user_id)->name}}
+
+ @if($aval->nota == null) Pendente @else Avaliação @endif
+ @if($aval->nota == null) +
Remover
+ @endif +
+ + + + + + + + + @endforeach +
+ @endif + + @if(count($AvalRelatFinal) >0) +
+
Avaliações de Relatórios Finais
+
+
+
Media das avaliações: {{$MediaAvalRelatFinal}}
+
Avaliações pendentes: {{$AvalRelatFinalPendentes}}
+

+
+
+ @foreach($AvalRelatFinal as $aval) +
+ +
+
+
{{\App\User::find($aval->user_id)->name}}
+
+ @if($aval->nota == null) Pendente @else Avaliação @endif
+ @if($aval->nota == null) +
Remover
+ @endif + +
+ + + + + + + @endforeach +
+ @endif + +
+
+
+
+
+ + +
+
+
+
+
+
+
Avaliadores
+ @if($hoje >= $evento->inicioRevisao && $hoje <= $evento->fimRevisao) +
+ + + +
+ @endif + + + +
+
+ + +
+
Avaliadores - + Internos
+
+
+ @foreach($trabalho->avaliadors as $avaliador) + @if(($avaliador->tipo == 'Interno' && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 2 || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 3)) + || (($avaliador->user->instituicao == "UFAPE" || $avaliador->user->instituicao == "Universidade Federal do Agreste de Pernambuco") && $avaliador->tipo == null && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 2 || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 3))) +
+ +
+
+
{{$avaliador->user->name}}
+ @php + $parecerInterno = App\ParecerInterno::where([['avaliador_id',$avaliador->id],['trabalho_id',$trabalho->id]])->first(); + @endphp + @if($parecerInterno == null) Pendente @else Avaliado @endif + +
+ + Remover + +
+ + Reenviar convite + +
+ @endif + + + @endforeach +
+
+ +
+
Avaliadores - + Ad Hoc
+
+
+ @foreach($trabalho->avaliadors as $avaliador) + @if( ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null && $avaliador->tipo == "Externo") || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 1 || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 3 + || (($avaliador->user->instituicao != "UFAPE" && $avaliador->user->instituicao != "Universidade Federal do Agreste de Pernambuco") && $avaliador->tipo == null && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 1 || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 3))) +
+ +
+
+
{{$avaliador->user->name}}
+ + @if($avaliador->trabalhos->where('id', $trabalho->id)->first()->pivot->status == false) + Pendente @else Avaliado @endif + + +
+ + Remover + +
+ + Reenviar convite + +
+ @endif + + + + @endforeach +
+
+
+
+
+
+ + +
+
+
+
+
+
+
Recomendação da Proposta
+
+
+
+ @csrf +
+
+ Comentário + +
+
+ status=="aprovado") checked @endif> + Recomendada +
+ + status=="reprovado") checked @endif> + Não Recomendada +
+
+ + +
+
+
+
+ + Voltar + +
+
+ + + + + + + + + + +
+ + +@endsection + +@section('javascript') + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/resources/views/administrador/resultadosProjetos.blade.php b/resources/views/administrador/resultadosProjetos.blade.php index 636f4fd51414a65ef167e0b2f9c78d87514983d6..b7dc5a05c6e41ad9cdfdb880f3da7c879b23903e 100644 --- a/resources/views/administrador/resultadosProjetos.blade.php +++ b/resources/views/administrador/resultadosProjetos.blade.php @@ -60,7 +60,9 @@ N. Planos Avaliador Status + @if ($evento->numParticipantes != 0) Bolsas + @endif @@ -84,7 +86,7 @@ @endif - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -119,11 +121,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif @@ -154,7 +158,9 @@ N. Planos Avaliador Status + @if ($evento->numParticipantes != 0) Bolsas + @endif @@ -178,7 +184,7 @@ @endif - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -213,11 +219,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif @@ -249,7 +257,9 @@ N. Planos Avaliador Status + @if ($evento->numParticipantes != 0) Bolsas + @endif @@ -273,7 +283,7 @@ @endif - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -308,11 +318,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif diff --git a/resources/views/administrador/resultadosProjetosCotas.blade.php b/resources/views/administrador/resultadosProjetosCotas.blade.php index 85dc144df8b44d2cb7bc607da778f981feefbd26..82e4683421375fda08c5e34691360eb5f51b9e4a 100644 --- a/resources/views/administrador/resultadosProjetosCotas.blade.php +++ b/resources/views/administrador/resultadosProjetosCotas.blade.php @@ -63,7 +63,9 @@ N. Planos Avaliador Status + @if ($evento->numParticipantes != 0) Bolsas + @endif @@ -84,7 +86,7 @@ {{$trabalho->area->nome}} - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -119,11 +121,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif @@ -151,7 +155,9 @@ N. Planos Avaliador Status + @if ($evento->numParticipantes != 0) Bolsas + @endif @@ -171,7 +177,7 @@ {{$trabalho->area->nome}} - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -206,11 +212,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif @@ -239,7 +247,9 @@ N. Planos Avaliador Status + @if ($evento->numParticipantes != 0) Bolsas + @endif @@ -260,7 +270,7 @@ {{$trabalho->area->nome}} - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -295,11 +305,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif @@ -320,7 +332,7 @@ {{$trabalho->area->nome}} - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -355,11 +367,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif @@ -387,7 +401,9 @@ N. Planos Avaliador Status + @if ($evento->numParticipantes != 0) Bolsas + @endif @@ -408,7 +424,7 @@ {{$trabalho->area->nome}} - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -443,11 +459,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif @@ -468,7 +486,7 @@ {{$trabalho->area->nome}} - {{$trabalho->participantes->count()}} + @if ($evento->numParticipantes != 0) {{$trabalho->participantes->count()}} @else {{$trabalho->proponente->count()}} @endif @if($trabalho->avaliadors->count() > 0) @@ -503,11 +521,13 @@ @else Pendente @endif + @if ($evento->numParticipantes != 0) + @endif @php $cont+=1;@endphp @endif diff --git a/resources/views/administrador/visualizarParecerInterno.blade.php b/resources/views/administrador/visualizarParecerInterno.blade.php index 51d647810f334ff92587de388410f1439a120f28..bedefe9a470a8e0f4891ca8bd0d804aa46c3644c 100644 --- a/resources/views/administrador/visualizarParecerInterno.blade.php +++ b/resources/views/administrador/visualizarParecerInterno.blade.php @@ -135,11 +135,18 @@ statusJustificativaAutorizacaoEtica =='recusado' ) checked @else disabled @endif>
- {{--Planos de trabalho--}} + {{--Planos de trabalho MUDAR AQUI--}}
@if ($trabalho->participantes != null) - Planos + @if ($evento->numParticipantes == 0) + @php + $arquivo = App\Arquivo::where("trabalhoId", $trabalho->id)->first(); + @endphp + Arquivo + @else + Planos + @endif @else - @endif diff --git a/resources/views/avaliacaoRelatorio/avaliacao.blade.php b/resources/views/avaliacaoRelatorio/avaliacao.blade.php index 69058b8e69b372f88e8a382a6f5d104c78e6c19b..d001b55f2fac8db9c816a982dba0970ee9a666a8 100644 --- a/resources/views/avaliacaoRelatorio/avaliacao.blade.php +++ b/resources/views/avaliacaoRelatorio/avaliacao.blade.php @@ -1,8 +1,13 @@ @php $arquivo = \App\Arquivo::find($aval->arquivo_id); @endphp
+ @if ($arquivo->trabalho->evento->numParticipante != 0)
Discente: {{\App\Participante::find($arquivo->participanteId)->user->name}}
+ @else +
Proponente: + {{$arquivo->trabalho->proponente->user->name}}
+ @endif
diff --git a/resources/views/avaliacaoRelatorio/index.blade.php b/resources/views/avaliacaoRelatorio/index.blade.php index 0ee0a00f637c519806f437dce8dd7d19a173574b..924add7897596c59b1906e2c52e90d63a7b46169 100644 --- a/resources/views/avaliacaoRelatorio/index.blade.php +++ b/resources/views/avaliacaoRelatorio/index.blade.php @@ -48,7 +48,7 @@ Nome do Evento Nome do Projeto Nome do plano - Discente + Nome Tipo do Relatório Status @@ -60,7 +60,7 @@ {{ $avaliacao->plano->trabalho->evento->nome }} {{ $avaliacao->plano->trabalho->titulo }} {{ $avaliacao->plano->titulo }} - {{ $avaliacao->plano->participante->user->name }} + {{ $avaliacao->plano->trabalho->evento->numParticipantes == 0 ? $avaliacao->plano->proponente->user->name : $avaliacao->plano->participante->user->name }} {{ $avaliacao->tipo }}
diff --git a/resources/views/avaliador/listarTrabalhos.blade.php b/resources/views/avaliador/listarTrabalhos.blade.php index 78c6ade3f567a84445b48c1bd58c49ff9ea11429..430c841af94627143594427e466530d7887f23e1 100755 --- a/resources/views/avaliador/listarTrabalhos.blade.php +++ b/resources/views/avaliador/listarTrabalhos.blade.php @@ -85,22 +85,31 @@ - @foreach( $trabalho->participantes as $participante) + @if ($evento->numParticipantes == 0) @php - if( App\Arquivo::where('participanteId', $participante->id)->first() != null){ - $planoTrabalho = App\Arquivo::where('participanteId', $participante->id)->first()->nome; - }else{ - $planoTrabalho = null; - } + $planoTrabalho = App\Arquivo::where("trabalhoId", $trabalho->id)->first(); @endphp - @if ($planoTrabalho != null) - - - - @else - Não há planos de trabalho. - @endif - @endforeach + + + + @else + @foreach( $trabalho->participantes as $participante) + @php + if( App\Arquivo::where('participanteId', $participante->id)->first() != null){ + $planoTrabalho = App\Arquivo::where('participanteId', $participante->id)->first()->nome; + }else{ + $planoTrabalho = null; + } + @endphp + @if ($planoTrabalho != null) + + + + @else + Não há planos de trabalho. + @endif + @endforeach + @endif
@@ -186,7 +195,15 @@ - + + @if ($evento->numParticipantes == 0) + @php + $planoTrabalho = App\Arquivo::where("trabalhoId", $trabalho->id)->first(); + @endphp + + + + @else @foreach( $trabalho->participantes as $participante) @php if( App\Arquivo::where('participanteId', $participante->id)->first() != null){ @@ -203,6 +220,7 @@ Não há planos de trabalho. @endif @endforeach + @endif @if($trabalho->pivot->recomendacao == 'RECOMENDADO') diff --git a/resources/views/avaliador/parecerInterno.blade.php b/resources/views/avaliador/parecerInterno.blade.php index 21163cd8c773f6264696092c70a62fd128e93dc5..cb3b9243ea3cb0b5c798e1db60fbc20afc177c14 100644 --- a/resources/views/avaliador/parecerInterno.blade.php +++ b/resources/views/avaliador/parecerInterno.blade.php @@ -20,6 +20,7 @@ @component('projeto.formularioVisualizar.anexos2', ['edital' => $trabalho->evento, 'projeto' => $trabalho]) @endcomponent
+ @if ($evento->numParticipantes != 0)
@@ -64,6 +65,7 @@
+ @endif
{{-- Parecer Interno --}} diff --git a/resources/views/evento/criarEvento.blade.php b/resources/views/evento/criarEvento.blade.php index 2ff0a7467d2a3a7929a469813f717f661e08088f..df6a9cfae422506788f49efbc4f2a36b2c6f86d1 100755 --- a/resources/views/evento/criarEvento.blade.php +++ b/resources/views/evento/criarEvento.blade.php @@ -60,7 +60,7 @@
- + @error('numParticipantes') diff --git a/resources/views/evento/editarEvento.blade.php b/resources/views/evento/editarEvento.blade.php index 026d58d11fab8ec8eba1356a2050f558d501a51c..d6c81078662cb755684c9fccd53fe78b73362ab6 100755 --- a/resources/views/evento/editarEvento.blade.php +++ b/resources/views/evento/editarEvento.blade.php @@ -64,7 +64,7 @@
- + @error('numParticipantes') diff --git a/resources/views/evento/formulario/proponente.blade.php b/resources/views/evento/formulario/proponente.blade.php index cbcf66a4ad64e9ad1a64fc3897037d3ba5136fd2..c870bf965a5dbb8fa4f31c55b427681917723882 100755 --- a/resources/views/evento/formulario/proponente.blade.php +++ b/resources/views/evento/formulario/proponente.blade.php @@ -85,6 +85,38 @@
@endif + @if ($edital->numParticipantes == 0) +
+
+ +
+
+
+ + + + @error('nomePlanoTrabalho') + + {{ $message }} + + @enderror +
+
+
+ +
+
+
+ + @error('anexoPlanoTrabalho') + + {{ $message }} + + @enderror +
+ @endif +

+ @if ($edital->numParticipantes != 0)
@component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ]) @endcomponent
+ @endif +@endsection + +@section('javascript') + + + + + + + + + @endsection \ No newline at end of file diff --git a/resources/views/planosTrabalho/listar.blade.php b/resources/views/planosTrabalho/listar.blade.php index ccf5feeda5162c90ac839ac923505335baf7c9ba..cac804e0e152649de99de10ae504c179f7696a87 100644 --- a/resources/views/planosTrabalho/listar.blade.php +++ b/resources/views/planosTrabalho/listar.blade.php @@ -21,18 +21,21 @@ Projeto Proponente Título do Plano + @if ($evento->numParticipantes != 0) Discente - Relatório Parcial - Relatório Final + @endif + Relatório Parcial + Relatório Final - @foreach($arquivos as $arquivo) {{$arquivo->trabalho->titulo}} {{$arquivo->trabalho->proponente->user->name}} {{$arquivo->titulo}} + @if ($evento->numParticipantes != 0) {{$arquivo->participante->user->name}} + @endif @if((Auth::user()->proponentes != null) && ($arquivo->relatorioParcial == null) && ($arquivo->trabalho->evento->dt_inicioRelatorioParcial <= $hoje) && ($hoje <= $arquivo->trabalho->evento->dt_fimRelatorioParcial)) diff --git a/resources/views/projeto/editaFormulario/anexos.blade.php b/resources/views/projeto/editaFormulario/anexos.blade.php index 2706755ccf17fde33a1b4b2761df528761de80ca..7b35ec3e21741b66690f5c79acf1a6dae5329ff7 100755 --- a/resources/views/projeto/editaFormulario/anexos.blade.php +++ b/resources/views/projeto/editaFormulario/anexos.blade.php @@ -181,7 +181,7 @@ - + - - - - - - +@extends('layouts.app') + +@section('content') + +
+ {{-- action="{{route('trabalho.store')}}" --}} +
+ @csrf + + +
+ {{-- @dd($errors->get('name.*')) --}} + {{-- @dd($errors->has('cpf.*')) --}} + {{-- @dd($errors->getBags()['default']->keys()) --}} + @if (session('mensagem')) + + @endif + + +
+ + @include('projeto.editaFormulario.projeto') + + + @include('projeto.editaFormulario.proponente') + + @if ($edital->numParticipantes != 0) + @include('projeto.editaFormulario.participantes') + @endif + + @if($edital->natureza_id == 3) + @include('projeto.editaFormulario.integrantes') + @endif + + @include('projeto.editaFormulario.anexos') + + @include('projeto.editaFormulario.finalizar') + + +
+
+
+ @if ($edital->numParticipantes != 0) +
+ @component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ]) + + @endcomponent +
+ @endif + + + +
+ + + +@endsection + +@section('javascript') + + + + + + + + + @endsection \ No newline at end of file diff --git a/resources/views/projeto/formularioVisualizar/proponente2.blade.php b/resources/views/projeto/formularioVisualizar/proponente2.blade.php index 678eac0b66668e1d82eb72f1c12fb8690d37b75d..0d5ca1169be895bea5105fbc27e504016e3155af 100644 --- a/resources/views/projeto/formularioVisualizar/proponente2.blade.php +++ b/resources/views/projeto/formularioVisualizar/proponente2.blade.php @@ -76,6 +76,23 @@ @endif + @if ($edital->numParticipantes == 0) + @php + $arquivo = App\Arquivo::where("trabalhoId", $projeto->id)->first(); + @endphp +
+
+ Título do Plano de Trabalho: + {{$arquivo->titulo}} +
+ +
+ + + +
+ @endif + @if ($projeto->conflitosInteresse != null && (Auth::user()->tipo == 'administrador' || Auth::user()->tipo == 'administradorResponsavel' || diff --git a/resources/views/projeto/visualizar.blade.php b/resources/views/projeto/visualizar.blade.php index 9d7a1dda5dadabdea38075f4c5a857f0caee26fb..d8b7ec15ffd737666019cbef447e3c0e94689ac0 100755 --- a/resources/views/projeto/visualizar.blade.php +++ b/resources/views/projeto/visualizar.blade.php @@ -1,779 +1,783 @@ -@extends('layouts.app') - -@section('content') - -
- {{-- action="{{route('trabalho.store')}}" --}} -
- @csrf - - -
- @if (session('mensagem')) - - @endif - @if($errors->any()) -
- {{$errors->first()}} -
- @endif - -
- - @component('projeto.formularioVisualizar.projeto2', - ['edital' => $edital, 'projeto' => $projeto]) - @endcomponent - - @component('projeto.formularioVisualizar.proponente2', ['projeto' => $projeto, 'edital' => $edital, 'areasTematicas' => $areasTematicas]) - @endcomponent - - @component('projeto.formularioVisualizar.anexos2', ['edital' => $edital,'projeto' => $projeto]) - @endcomponent - - @component('projeto.formularioVisualizar.participantes2', ['projeto' => $projeto, 'edital' => $edital]) - @endcomponent - @if($edital->natureza_id == 3) - @component('projeto.formularioVisualizar.integrantes', ['projeto' => $projeto, 'edital' => $edital, 'trabalhos_user' => $trabalhos_user]) - @endcomponent - @endif - @component('projeto.formularioVisualizar.relatorio',['edital' => $edital,'projeto' => $projeto,'flagSubstituicao' =>$flagSubstituicao, - 'AvalRelatParcial' => $AvalRelatParcial, 'AvalRelatFinal' => $AvalRelatFinal, 'cont' => 0]) - @endcomponent - - @component('projeto.formularioVisualizar.resultado2', - ['projeto' => $projeto]) - @endcomponent - - {{-- @component('projeto.formularioVisualizar.finalizar', ['projeto' => $projeto]) - @endcomponent --}} -
- -
- Voltar -
- -
-
- -
- @component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ]) - - @endcomponent -
- - - -
- - - -@endsection - -@section('javascript') - - - - - - - - - - -@endsection +@extends('layouts.app') + +@section('content') + +
+ {{-- action="{{route('trabalho.store')}}" --}} +
+ @csrf + + +
+ @if (session('mensagem')) + + @endif + @if($errors->any()) +
+ {{$errors->first()}} +
+ @endif + +
+ + @component('projeto.formularioVisualizar.projeto2', + ['edital' => $edital, 'projeto' => $projeto]) + @endcomponent + + @component('projeto.formularioVisualizar.proponente2', ['projeto' => $projeto, 'edital' => $edital, 'areasTematicas' => $areasTematicas]) + @endcomponent + + @component('projeto.formularioVisualizar.anexos2', ['edital' => $edital,'projeto' => $projeto]) + @endcomponent + + @if ($edital->numParticipantes != 0) + @component('projeto.formularioVisualizar.participantes2', ['projeto' => $projeto, 'edital' => $edital]) + @endcomponent + @endif + + @if($edital->natureza_id == 3) + @component('projeto.formularioVisualizar.integrantes', ['projeto' => $projeto, 'edital' => $edital, 'trabalhos_user' => $trabalhos_user]) + @endcomponent + @endif + + @component('projeto.formularioVisualizar.relatorio',['edital' => $edital,'projeto' => $projeto,'flagSubstituicao' =>$flagSubstituicao, + 'AvalRelatParcial' => $AvalRelatParcial, 'AvalRelatFinal' => $AvalRelatFinal, 'cont' => 0]) + @endcomponent + + @component('projeto.formularioVisualizar.resultado2', + ['projeto' => $projeto]) + @endcomponent + + {{-- @component('projeto.formularioVisualizar.finalizar', ['projeto' => $projeto]) + @endcomponent --}} +
+ +
+ Voltar +
+ +
+
+ +
+ @component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ]) + + @endcomponent +
+ + + +
+ + + +@endsection + +@section('javascript') + + + + + + + + + + +@endsection diff --git a/resources/views/proponente/projetos.blade.php b/resources/views/proponente/projetos.blade.php index e4e9f5b3394fb07597d3c537f6ae3c6a064c882f..86509b804495f3be2c9911707428cd1673f5dc4c 100755 --- a/resources/views/proponente/projetos.blade.php +++ b/resources/views/proponente/projetos.blade.php @@ -108,7 +108,7 @@ @endif - @if( $projeto->status== 'aprovado') + @if( $projeto->status== 'aprovado' && $projeto->evento->numParticipantes != 0) Solicitar Substituições diff --git a/resources/views/proponente/projetosEdital.blade.php b/resources/views/proponente/projetosEdital.blade.php index 49bcbf1eb6b35139354ffbaafbfa1ccb064fa657..c4a1a11f877b1ffb24fd18b143ad7e1f43b563da 100755 --- a/resources/views/proponente/projetosEdital.blade.php +++ b/resources/views/proponente/projetosEdital.blade.php @@ -124,7 +124,7 @@ @endif - @if( $projeto->status== 'aprovado') + @if( $projeto->status== 'aprovado' && $projeto->evento->numParticipantes != 0) Solicitar Substituições