Commit 3d0b7975 authored by Yuri Resende's avatar Yuri Resende
Browse files

Vinculando a adição de integrante a de um discente

parent f7687357
<?php
namespace App\Http\Controllers;
use PDF;
use App;
use App\Administrador;
use Auth;
use App\Area;
use App\User;
use App\Evento;
use App\AreaTematica;
use App\Arquivo;
use App\Coautor;
use App\Revisor;
use App\TrabalhoUser;
use App\SubArea;
use App\Endereco;
use App\Trabalho;
use App\Avaliador;
use Carbon\Carbon;
use App\AnexosTemp;
use App\Atribuicao;
use App\GrandeArea;
use App\Modalidade;
use App\Proponente;
use App\Participante;
use App\AreaModalidade;
use App\Certificado;
use Illuminate\Http\File;
use App\Mail\EventoCriado;
use Illuminate\Support\Str;
use App\CoordenadorComissao;
use App\FuncaoParticipantes;
use Illuminate\Http\Request;
use App\Mail\SubmissaoTrabalho;
use App\OutrasInfoParticipante;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\Http\Requests\StoreTrabalho;
use Illuminate\Support\Facades\Mail;
use App\Http\Requests\UpdateTrabalho;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use App\Mail\EmailParaUsuarioNaoCadastrado;
use App\Mail\SolicitacaoSubstituicao;
use App\Notificacao;
use App\Notifications\SolicitacaoCertificadoNotification;
use App\Notifications\SubmissaoNotification;
use App\Notifications\SubmissaoRecebidaNotification;
use App\SolicitacaoCertificado;
use App\SolicitacaoParticipante;
use App\Substituicao;
use Illuminate\Support\Facades\Notification;
use App\Desligamento;
use App\ObjetivoDeDesenvolvimentoSustentavel;
use App\AvaliacaoRelatorio;
class TrabalhoController extends Controller
{
public $estados = array(
'AC' => 'Acre',
'AL' => 'Alagoas',
'AP' => 'Amapá',
'AM' => 'Amazonas',
'BA' => 'Bahia',
'CE' => 'Ceará',
'DF' => 'Distrito Federal',
'ES' => 'Espirito Santo',
'GO' => 'Goiás',
'MA' => 'Maranhão',
'MS' => 'Mato Grosso do Sul',
'MT' => 'Mato Grosso',
'MG' => 'Minas Gerais',
'PA' => 'Pará',
'PB' => 'Paraíba',
'PR' => 'Paraná',
'PE' => 'Pernambuco',
'PI' => 'Piauí',
'RJ' => 'Rio de Janeiro',
'RN' => 'Rio Grande do Norte',
'RS' => 'Rio Grande do Sul',
'RO' => 'Rondônia',
'RR' => 'Roraima',
'SC' => 'Santa Catarina',
'SP' => 'São Paulo',
'SE' => 'Sergipe',
'TO' => 'Tocantins',
);
public function index($id)
{
$edital = Evento::find($id);
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::orderBy('nome')->get();
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
if($proponente == null){
return view('proponente.cadastro')->with(['mensagem' => 'Você não possui perfil de Proponente, para submeter algum projeto preencha o formulário.']);;
}
$rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$edital->id)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
// dd($estados);
return view('evento.submeterTrabalho',[
// return view('evento.backupForm',[
'edital' => $edital,
'grandeAreas' => $grandeAreas,
'funcaoParticipantes'=> $funcaoParticipantes,
'rascunho' => $rascunho,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
'ods' =>$ODS,
]);
}
public function arquivar(Request $request){
$trabalho = Trabalho::find($request->trabalho_id);
$arquivos = Arquivo::where('trabalhoId',$trabalho->id)->get();
if($request->arquivar_tipo == 1 ){
$trabalho->arquivado = true;
foreach ($arquivos as $arquivo){
$arquivo->arquivado = true;
$arquivo->update();
}
$message = "Projeto ".$trabalho->titulo." arquivado";
}else{
$trabalho->arquivado = false;
foreach ($arquivos as $arquivo){
$arquivo->arquivado = false;
$arquivo->update();
}
$message = "Projeto ".$trabalho->titulo." desarquivado";
}
$trabalho->update();
return redirect()->back()->with(['sucesso'=>$message ]);
}
public function storeParcial(Request $request){
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
$evento = Evento::find($request->editalId);
$coordenador = CoordenadorComissao::find($evento->coordenadorId);
//Relaciona o projeto criado com o proponente que criou o projeto
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$trabalho = "trabalho";
if ($evento->inicioSubmissao > $mytime) {
if ($mytime >= $evento->fimSubmissao) {
return redirect()->route('home');
}
}
//--Salvando os dados da submissão temporariamente
$this->armazenarInfoTemp($request, $proponente);
return redirect()->route('projetos.edital', ['id' => $request->editalId]);
}
//Armazena temporariamente dados da submissão, no banco de dados e no storage
public function armazenarInfoTemp(Request $request, $proponente)
{
//---Dados do Projeto
$trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$request->editalId)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
//dd($trabalho);
if($trabalho == null){
$trabalho = new Trabalho();
$trabalho->proponente_id = $proponente->id;
$trabalho->evento_id = $request->editalId;
$trabalho->status = 'Rascunho';
$stringKeys = ['titulo','linkGrupoPesquisa', 'linkLattesEstudante','pontuacaoPlanilha','anexoProjeto',
'anexoPlanilhaPontuacao', 'anexoLattesCoordenador', 'conflitosInteresse'];
$intKeys = ['grande_area_id','area_id','sub_area_id','coordenador_id'];
$trabalho->fill(
array_fill_keys($stringKeys, "") + array_fill_keys($intKeys, 1)
)->save();
//dd($trabalho);
}
if(!(is_null($request->nomeProjeto)) ) {
$trabalho->titulo = $request->nomeProjeto;
}
if(!(is_null($request->grandeArea))){
$trabalho->grande_area_id = $request->grandeArea;
}
if(!(is_null($request->area))){
$trabalho->area_id = $request->area;
}
if(!(is_null($request->subArea))){
$trabalho->sub_area_id = $request->subArea;
}
if(!(is_null($request->pontuacaoPlanilha))){
$trabalho->pontuacaoPlanilha = $request->pontuacaoPlanilha;
}
if(!(is_null($request->linkGrupo))){
$trabalho->linkGrupoPesquisa = $request->linkGrupo;
}
if(!(is_null($request->conflitosInteresse))){
$trabalho->conflitosInteresse = $request->conflitosInteresse;
}
//Anexos do projeto
$pasta = 'trabalhos/' . $request->editalId . '/' . $trabalho->id;
if(!(is_null($request->anexoDecisaoCONSU)) ) {
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, "CONSU.pdf");
}
if (!(is_null($request->anexoComiteEtica))) {
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, "Comite_de_etica.pdf");
}
if (!(is_null($request->justificativaAutorizacaoEtica))) {
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, "Justificativa.pdf");
}
if (!(is_null($request->anexoProjeto))) {
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, "Projeto.pdf");
}
if (!(is_null($request->anexoLattesCoordenador))) {
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, "Lattes_Coordenador.pdf");
}
if (!(is_null($request->anexoPlanilhaPontuacao))) {
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha.". $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
$trabalho->update();
//---Anexos planos de trabalho
//dd($trabalho);
return $trabalho;
}
public function validarAnexosRascunho(Request $request, $trabalho){
$validator = Validator::make($trabalho->getAttributes(),[
'anexoPlanilhaPontuacao' => $request->anexoPlanilhaPontuacao==null?['planilha']:[],
]);
if ($validator->fails()) {
//dd('asdf');
return back()->withErrors($validator)->withInput();
}
return 1;
}
public function armazenarAnexosFinais($request, $pasta, $trabalho, $evento){
// Checando se é um novo trabalho ou uma edição
if ($trabalho->anexoProjeto != null) {
// Anexo Projeto
if (isset($request->anexoProjeto)) {
if (Storage::disk()->exists($trabalho->anexoProjeto)) {
Storage::delete($trabalho->anexoProjeto);
}
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
// if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if (isset($request->anexoDecisaoCONSU)) {
if (Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) {
Storage::delete($trabalho->anexoDecisaoCONSU);
}
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf');
}
// }
//Autorização ou Justificativa
if (isset($request->anexoAutorizacaoComiteEtica)) {
if (Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) {
Storage::delete($trabalho->anexoAutorizacaoComiteEtica);
}
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf');
$trabalho->justificativaAutorizacaoEtica = null;
} elseif (isset($request->justificativaAutorizacaoEtica)) {
if (Storage::disk()->exists($trabalho->justificativaAutorizacaoEtica)) {
Storage::delete($trabalho->justificativaAutorizacaoEtica);
}
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
$trabalho->anexoAutorizacaoComiteEtica = null;
}
//Anexo Lattes
if (isset($request->anexoLattesCoordenador)) {
if (Storage::disk()->exists($trabalho->anexoLattesCoordenador)) {
Storage::delete($trabalho->anexoLattesCoordenador);
}
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if (isset($request->anexoPlanilhaPontuacao)) {
if (Storage::disk()->exists($trabalho->anexoPlanilhaPontuacao)) {
Storage::delete($trabalho->anexoPlanilhaPontuacao);
}
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
// Anexo grupo pesquisa
if (isset($request->anexoGrupoPesquisa)) {
if (Storage::disk()->exists($trabalho->anexoGrupoPesquisa)) {
Storage::delete($trabalho->anexoGrupoPesquisa);
}
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension());
}
//Anexo documentro extra
if (isset($request->anexo_docExtra)) {
if (Storage::disk()->exists($trabalho->anexo_docExtra)) {
Storage::delete($trabalho->anexo_docExtra);
}
$trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension());
}
$trabalho->save();
return $trabalho;
}
// Anexo Projeto
if (isset($request->anexoProjeto)) {
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
//if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if (isset($request->anexoDecisaoCONSU)) {
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf');
}
//}
//Autorização ou Justificativa
if (isset($request->anexoAutorizacaoComiteEtica)) {
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf');
$trabalho->justificativaAutorizacaoEtica = null;
} elseif (isset($request->justificativaAutorizacaoEtica)) {
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
$trabalho->anexoAutorizacaoComiteEtica = null;
}
//Anexo Lattes
if (isset($request->anexoLattesCoordenador)) {
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if (isset($request->anexoPlanilhaPontuacao)) {
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
// Anexo grupo pesquisa
if (isset($request->anexoGrupoPesquisa)) {
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension());
}
// Anexo documento extra
if (isset($request->anexo_docExtra)) {
$trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension());
}
//Anexo SIPAC
if (isset($request->anexo_SIPAC)) {
if (Storage::disk()->exists($trabalho->anexo_SIPAC)) {
Storage::delete($trabalho->anexo_SIPAC);
}
$trabalho->anexo_SIPAC = Storage::putFileAs($pasta, $request->anexo_SIPAC, "Anexo_SIPAC." . $request->file('anexo_SIPAC')->extension());
}
return $trabalho;
}
public function show($id)
{
$projeto = Trabalho::find($id);
if(Auth::user()->id != $projeto->proponente->user->id){
return redirect()->back();
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areas = Area::all();
$subareas = Subarea::all();
$areasTematicas = AreaTematica::all();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = $projeto->participantes;
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
$proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first();
// Verficação de pendencia de substituição
$aux = count(Substituicao::where('status','Em Aguardo')->whereIn('participanteSubstituido_id',$projeto->participantes->pluck('id'))->get());
$flagSubstituicao = 1;
if($aux != 0){
$flagSubstituicao = -1;
}
$trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get();
$avals_projeto = [];
$AvalRelatParcial = [];
$AvalRelatFinal = [];
if (isset($arquivos)) {
foreach ($arquivos as $arquivo) {
array_push($avals_projeto, AvaliacaoRelatorio::where('arquivo_id', $arquivo->id)->get());
}
}
foreach ($avals_projeto as $avals) {
foreach ($avals as $aval){
if ($aval->tipo == 'Parcial') {
array_push($AvalRelatParcial, $aval);
} else {
array_push($AvalRelatFinal, $aval);
}
}
}
return view('projeto.visualizar')->with(['projeto' => $projeto,
'grandeAreas' => $grandeAreas,
'areas' => $areas,
'subAreas' => $subareas,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,
'estados' => $this->estados,
'visualizar' => true,
'enum_turno' => Participante::ENUM_TURNO,
'areasTematicas' => $areasTematicas,
'flagSubstituicao' =>$flagSubstituicao,
'trabalhos_user' => $trabalhos_user,
'AvalRelatParcial' => $AvalRelatParcial,
'AvalRelatFinal' => $AvalRelatFinal,
'proponente' => $proponente
]);
}
public function exportProjeto($id)
{
$projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first();
if (!$projeto) {
return back()->withErrors(['Proposta não encontrada!']);
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areas = Area::all();
$subAreas = Subarea::all();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
$enum_turno = Participante::ENUM_TURNO;
view()->share('projeto.visualizar', [$projeto, $grandeAreas, $areas, $subAreas, $edital, $users, $funcaoParticipantes, $participantes, $arquivos, $enum_turno]);
$pdf = PDF::loadView('projeto.visualizar', compact('projeto', 'grandeAreas', 'areas', 'subAreas', 'edital', 'users', 'funcaoParticipantes', 'participantes', 'arquivos', 'enum_turno'))->setOptions(['defaultFont' => 'sans-serif']);
// download PDF file with download method
return $pdf->download('pdf_file.pdf');
}
public function edit($id)
{
if(Auth::user()->tipo=='administrador'){
$projeto = Trabalho::find($id);
}else{
$projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first();
}
$proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first();
if (!$projeto) {
return back()->withErrors(['Proposta não encontrada!']);
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$areas = Area::all();
$subareas = Subarea::all();
$ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
//dd(Participante::all());
$rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $edital->id)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
$trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get();
return view('projeto.editar')->with(['projeto' => $projeto,
'grandeAreas' => $grandeAreas,
'areas' => $areas,
'subAreas' => $subareas,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
'listaOds' => $ODS,
'trabalhos_user' => $trabalhos_user,
'proponente' => $proponente
]);
}
public function destroy(Request $request)
{
$projeto = Trabalho::find($request->id);
//dd($trabalho);
Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id);
$participantes = $projeto->participantes;
foreach ($participantes as $participante) {
$plano = $participante->planoTrabalho;
if ($plano)
$plano->delete();
$participante->delete();
}
$projeto->delete();
return redirect()->back()->with(['mensagem' => 'Projeto deletado com sucesso!']);
}
public function excluirParticipante($id)
{
$participante = Participante::where('id', $id)->first();
//$participante = Participante::where('user_id', Auth()->user()->id)
// ->where('trabalho_id', $id)->first();
//$participante->trabalhos()->detach($id);
$participante->delete();
return redirect()->back();
}
public function solicitarCertificado(Trabalho $trabalho, Request $request)
{
$users = User::find($request->users);
$coord = $trabalho->coordenador;
$SolicitacaoCertificado = SolicitacaoCertificado::create();
Notificacao::create([
'remetente_id' => auth()->user()->id,
'destinatario_id' => $coord->user_id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 6
]);
foreach ($users as $user) {
SolicitacaoParticipante::create([
'user_id' => $user->id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
]);
}
$admins = Administrador::all();
foreach ($admins as $admin) {
$userTemp = User::find($admin->user_id);
Notificacao::create([
'remetente_id' => auth()->user()->id,
'destinatario_id' => $admin->user_id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 6,
]);
}
$destinatarios = $admins->map(function($admin) {return $admin->user;})->push($coord->user);
Notification::send($destinatarios, new SolicitacaoCertificadoNotification($trabalho->proponente, $trabalho, $userTemp, $users));
return redirect()->route('trabalho.show', ['id' => $trabalho->id])->with('sucesso', 'Solicitação de certificado/declaração efetuada com sucesso!');
}
public function novaVersao(Request $request)
{
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
$evento = Evento::find($request->eventoId);
if ($evento->inicioSubmissao > $mytime) {
if ($mytime >= $evento->fimSubmissao) {
return redirect()->route('home');
}
}
$validatedData = $request->validate([
'arquivo' => ['required', 'file', 'mimes:pdf'],
'eventoId' => ['required', 'integer'],
'trabalhoId' => ['required', 'integer'],
]);
$trabalho = Trabalho::find($request->trabalhoId);
if (Auth::user()->id != $trabalho->autorId) {
return redirect()->route('home');
}
$arquivos = $trabalho->arquivo;
$count = 1;
foreach ($arquivos as $key) {
$key->versaoFinal = false;
$key->save();
$count++;
}
$file = $request->arquivo;
$path = 'trabalhos/' . $request->eventoId . '/' . $trabalho->id . '/';
$nome = $count . ".pdf";
Storage::putFileAs($path, $file, $nome);
$arquivo = Arquivo::create([
'nome' => $path . $nome,
'trabalhoId' => $trabalho->id,
'versaoFinal' => true,
]);
return redirect()->route('evento.visualizar', ['id' => $request->eventoId]);
}
public function detalhesAjax(Request $request)
{
$validatedData = $request->validate([
'trabalhoId' => ['required', 'integer']
]);
$trabalho = Trabalho::find($request->trabalhoId);
$revisores = Atribuicao::where('trabalhoId', $request->trabalhoId)->get();
$revisoresAux = [];
foreach ($revisores as $key) {
if ($key->revisor->user->name != null) {
array_push($revisoresAux, [
'id' => $key->revisor->id,
'nomeOuEmail' => $key->revisor->user->name
]);
} else {
array_push($revisoresAux, [
'id' => $key->revisor->id,
'nomeOuEmail' => $key->revisor->user->email
]);
}
}
$revisoresDisponeis = Revisor::where('eventoId', $trabalho->eventoId)->where('areaId', $trabalho->areaId)->get();
$revisoresAux1 = [];
foreach ($revisoresDisponeis as $key) {
//verificar se ja é um revisor deste trabalhos
$revisorNaoExiste = true;
foreach ($revisoresAux as $key1) {
if ($key->id == $key1['id']) {
$revisorNaoExiste = false;
}
}
//
if ($revisorNaoExiste) {
if ($key->user->name != null) {
array_push($revisoresAux1, [
'id' => $key->id,
'nomeOuEmail' => $key->user->name
]);
} else {
array_push($revisoresAux1, [
'id' => $key->id,
'nomeOuEmail' => $key->user->email
]);
}
}
}
return response()->json([
'titulo' => $trabalho->titulo,
'resumo' => $trabalho->resumo,
'revisores' => $revisoresAux,
'revisoresDisponiveis' => $revisoresAux1
], 200);
}
public function atribuirAvaliadorTrabalho(Request $request)
{
$request->trabalho_id;
$trabalho = Trabalho::find($request->trabalho_id);
$avaliadores = Avaliador::all();
return view('coordenadorComissao.gerenciarEdital.atribuirAvaliadorTrabalho', ['avaliadores' => $avaliadores, 'trabalho' => $trabalho, 'evento' => $trabalho->evento]);
}
public function atribuir(Request $request)
{
$trabalho = Trabalho::find($request->trabalho_id);
$todosAvaliadores = Avaliador::all();
$avaliadores = Avaliador::whereIn('id', $request->avaliadores)->with('user')->get();
$trabalho->avaliadors()->sync($request->avaliadores);
foreach ($avaliadores as $key => $avaliador) {
$user = $avaliador->user;
$subject = "Trabalho atribuido";
Mail::to($user->email)
->send(new EventoCriado($user, $subject));
}
return view('coordenadorComissao.detalhesEdital', ['evento' => $trabalho->evento]);
}
public function projetosDoEdital($id)
{
$edital = Evento::find($id);
$projetos = Trabalho::where('evento_id', '=', $id)->get();
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje' => $hoje]);
}
public function baixarAnexoProjeto($id)
{
$projeto = Trabalho::find($id);
//dd($projeto);
if (Storage::disk()->exists($projeto->anexoProjeto)) {
ob_end_clean();
return Storage::download($projeto->anexoProjeto);
}
return abort(404);
}
public function baixarAnexoGrupoPesquisa($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoGrupoPesquisa)) {
ob_end_clean();
return Storage::download($projeto->anexoGrupoPesquisa);
}
return abort(404);
}
public function baixarAnexoConsu($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoDecisaoCONSU)) {
ob_end_clean();
return Storage::download($projeto->anexoDecisaoCONSU);
}
return abort(404);
}
public function baixarAnexoComite($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoAutorizacaoComiteEtica)) {
ob_end_clean();
return Storage::download($projeto->anexoAutorizacaoComiteEtica);
}
return abort(404);
}
public function baixarAnexoLattes($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoLattesCoordenador)) {
ob_end_clean();
return Storage::download($projeto->anexoLattesCoordenador);
}
return abort(404);
}
public function baixarAnexoPlanilha($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoPlanilhaPontuacao)) {
ob_end_clean();
$file = $projeto->anexoPlanilhaPontuacao;
$ext = explode(".", $file);
switch ($ext[1]) {
case 'xlsx':
$hearder = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
break;
case 'xls':
$hearder = 'application/vnd.ms-excel';
break;
case 'ods':
$hearder = 'application/vnd.oasis.opendocument.spreadsheet';
break;
default:
$hearder = 'application/vnd.ms-excel';
break;
}
$headers = array(
"Content-type: {$hearder}",
);
return Storage::download($projeto->anexoPlanilhaPontuacao, "Planilha.{$ext[1]}", $headers);
}
return abort(404);
}
public function baixarAnexoJustificativa($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->justificativaAutorizacaoEtica)) {
ob_end_clean();
return Storage::download($projeto->justificativaAutorizacaoEtica);
}
return abort(404);
}
public function baixarAnexoDocExtra($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexo_docExtra)) {
ob_end_clean();
return Storage::download($projeto->anexo_docExtra);
}
return abort(404);
}
public function baixarAnexoSIPAC($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexo_SIPAC)) {
ob_end_clean();
return Storage::download($projeto->anexo_SIPAC);
}
return abort(404);
}
public function baixarAnexoTemp($eventoId, $nomeAnexo)
{
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $eventoId)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
if (Storage::disk()->exists($trabalho->$nomeAnexo)) {
ob_end_clean();
return Storage::download($trabalho->$nomeAnexo);
}
return abort(404);
}
public function baixarEventoTemp($nomeAnexo)
{
$eventoTemp = Evento::where('criador_id', Auth::user()->id)->where('anexosStatus', 'temporario')
->orderByDesc('updated_at')->first();
if (Storage::disk()->exists($eventoTemp->$nomeAnexo)) {
ob_end_clean();
return Storage::download($eventoTemp->$nomeAnexo);
}
return abort(404);
}
//xxfa
public function update(UpdateTrabalho $request, $id)
{
try {
if (!$request->has('rascunho')) {
$request->merge([
'status' => 'submetido'
]);
} else {
$request->merge([
'status' => 'rascunho'
]);
}
$evento = Evento::find($request->editalId);
$request->merge([
'coordenador_id' => $evento->coordenadorComissao->id
]);
$trabalho = Trabalho::find($id);
$trabalho->ods()->sync($request->ods);
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
DB::beginTransaction();
if (!$trabalho) {
return back()->withErrors(['Proposta não encontrada']);
}
if($evento->tipo=="PIBEX"){
$trabalho->update($request->except([
'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra'
]));
}else{
$trabalho->update($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra'
]));
}
$pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id;
$trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento);
$trabalho->save();
if($request->integrantesExistentes == null){
$request->integrantesExistentes = [];
}
$usuariosRemovidos = TrabalhoUser::where('trabalho_id', $trabalho->id)->whereNotIn('user_id', $request->integrantesExistentes)->get();
if($usuariosRemovidos->first() != null) {
foreach($usuariosRemovidos as $usuarioRemovido){
$usuarioRemovido->delete();
}
}
if($evento->natureza_id == 3 && $request->integrantes != null){
foreach($request->integrantes as $integrante){
$integrante = explode(',', $integrante);
$trabalho_user = new TrabalhoUser();
$trabalho_user->user_id = $integrante[0];
$trabalho_user->funcao_participante_id = $integrante[1];
$trabalho_user->trabalho_id = $trabalho->id;
$trabalho_user->save();
}
}
if ($evento->numParticipantes != 0) {
if ($request->marcado == null) {
$idExcluido = $trabalho->participantes->pluck('id');
} else {
$idExcluido = [];
}
foreach ($request->participante_id as $key => $value) {
if ($request->marcado != null && array_search($key, $request->marcado) === false) {
if ($value !== null)
array_push($idExcluido, $value);
}
}
foreach ($idExcluido as $key => $value) {
$trabalho->participantes()->find($value)->delete();
}
$trabalho->refresh();
}
if ($request->has('marcado')) {
foreach ($request->marcado as $key => $part) {
$part = intval($part);
$passwordTemporario = Str::random(8);
$data['name'] = $request->name[$part];
$data['email'] = $request->email[$part];
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento[$part];
$data['cpf'] = $request->cpf[$part];
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg[$part];
$data['celular'] = $request->celular[$part];
$data['cep'] = $request->cep[$part];
$data['uf'] = $request->uf[$part];
$data['cidade'] = $request->cidade[$part];
$data['rua'] = $request->rua[$part];
$data['numero'] = $request->numero[$part];
$data['bairro'] = $request->bairro[$part];
$data['complemento'] = $request->complemento[$part];
if ($request->instituicao[$part] != "Outra") {
$data['instituicao'] = $request->instituicao[$part];
} else {
$data['instituicao'] = $request->outrainstituicao[$part];
}
$data['total_periodos'] = $request->total_periodos[$part];
if ($request->curso[$part] != "Outro") {
$data['curso'] = $request->curso[$part];
} else {
$data['curso'] = $request->outrocurso[$part];
}
$data['turno'] = $request->turno[$part];
$data['periodo_atual'] = $request->periodo_atual[$part];
$data['ordem_prioridade'] = $request->ordem_prioridade[$part];
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso[$part];
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part];
if($request->participante_id[$part] != null){
$participante = Participante::find($request->participante_id[$part]);
$user = User::where('email', $participante->user->email)->first();
}else{
$user = User::where('email', $data['email'])->first();
}
if ($user == null) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
$participante = Participante::create($data);
$participante->data_entrada = $participante->created_at;
$user->participantes()->save($participante);
$trabalho->participantes()->save($participante);
$participante->trabalho_id = $trabalho->id;
$participante->save();
} else {
// $user = $participante->user;
$user->update($data);
if( $user->endereco == null){
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}else{
$endereco = $user->endereco;
$endereco->update($data);
}
$participante = $user->participantes->where('trabalho_id', $trabalho->id)->where('id', $request->participante_id[$part])->first();
// dd($participante);
if ($participante == null) {
// dd('part null');
$participante = Participante::create($data);
$user->participantes()->save($participante);
$trabalho->participantes()->save($participante);
} else {
// dd('part update');
$participante->update($data);
}
}
if ($request->has('anexoPlanoTrabalho') && array_key_exists($part, $request->anexoPlanoTrabalho) && $request->nomePlanoTrabalho[$part] != null) {
if (Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->count()) {
$arquivo = Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->first();
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$titulo = $data['nomePlanoTrabalho'];
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo->update([
'titulo' => $titulo,
'nome' => $path . $nome,
'data' => now(),
]);
} else {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
} else {
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho;
if (Arquivo::where('proponenteId', $proponente->id)->where('trabalhoId', $trabalho->id)->count()) {
$arquivo = Arquivo::where('proponenteId', $proponente->id)->where('trabalhoId', $trabalho->id)->first();
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$titulo = $data['nomePlanoTrabalho'];
if ($request->has('anexoPlanoTrabalho')) {
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
} else {
if($arquivo->nome != $path.$nome) {
Storage::rename( $arquivo->nome, $path.$nome );
}
}
$arquivo->update([
'titulo' => $titulo,
'nome' => $path . $nome,
'data' => now(),
]);
} else {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->proponenteId = $proponente->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
DB::commit();
if(Auth::user()->tipo == 'administrador'){
return redirect(route('admin.analisarProposta',['id'=>$trabalho->id]));
}
if (!$request->has('rascunho')) {
Notification::send($trabalho->proponente->user, new SubmissaoNotification($trabalho));
}
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta atualizada!']);
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]);
}
}
public function buscarUsuario(Request $request) {
$usuario = User::where('cpf', $request->cpf_consulta)->first();
$funcao = FuncaoParticipantes::where('id', $request->funcao)->first();
if($usuario){
return json_encode([$usuario, $funcao]);
}
return json_encode('inexistente');
}
public function salvar(StoreTrabalho $request)
{
try {
if (!$request->has('rascunho')) {
$request->merge([
'status' => 'submetido'
]);
}
$evento = Evento::find($request->editalId);
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$request->merge([
'coordenador_id' => $evento->coordenadorComissao->id
]);
DB::beginTransaction();
if($evento->tipo=="PIBEX"){
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra', 'anexo_SIPAC'
]));
}else if($evento->tipo=="CONTINUO"){
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra',
]));
} else {
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra', 'anexo_SIPAC'
]));
}
if ($request->has('marcado')) {
foreach ($request->marcado as $key => $part) {
$part = intval($part);
$passwordTemporario = Str::random(8);
$data['name'] = $request->name[$part];
$data['email'] = $request->email[$part];
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento[$part];
$data['cpf'] = $request->cpf[$part];
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg[$part];
$data['celular'] = $request->celular[$part];
$data['cep'] = $request->cep[$part];
$data['uf'] = $request->uf[$part];
$data['cidade'] = $request->cidade[$part];
$data['rua'] = $request->rua[$part];
$data['numero'] = $request->numero[$part];
$data['bairro'] = $request->bairro[$part];
$data['complemento'] = $request->complemento[$part];
if ($request->instituicao[$part] != "Outra") {
$data['instituicao'] = $request->instituicao[$part];
} else {
$data['instituicao'] = $request->outrainstituicao[$part];
}
$data['total_periodos'] = $request->total_periodos[$part];
if ($request->curso[$part] != "Outro") {
$data['curso'] = $request->curso[$part];
} else {
$data['curso'] = $request->outrocurso[$part];
}
$data['turno'] = $request->turno[$part];
$data['periodo_atual'] = $request->periodo_atual[$part];
$data['ordem_prioridade'] = $request->ordem_prioridade[$part];
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso[$part];
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part];
$user = User::where('email', $data['email'])->first();
if ($user == null) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}
// $participante = $user->participantes->where('trabalho_id', $trabalho->id)->first();
// if ($participante == null){
// $participante = Participante::create($data);
// }
$participante = Participante::create($data);
$participante->data_entrada = $participante->created_at;
$user->participantes()->save($participante);
$participante->trabalho_id = $trabalho->id;
$participante->save();
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
} else {
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho;
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->proponenteId = $proponente->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
$evento->trabalhos()->save($trabalho);
$pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id;
$trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento);
$trabalho->modalidade = $request->modalidade;
$trabalho->save();
if($evento->natureza_id == 3){
foreach($request->integrantes as $integrante){
$integrante = explode(',', $integrante);
$trabalho_user = new TrabalhoUser();
$trabalho_user->user_id = $integrante[0];
$trabalho_user->funcao_participante_id = $integrante[1];
$trabalho_user->trabalho_id = $trabalho->id;
$trabalho_user->save();
}
}
$trabalho->ods()->sync($request->ods);
DB::commit();
if (!$request->has('rascunho')) {
//Notificações
//Coordenador
$userTemp = User::find($evento->coordenadorComissao->user_id);
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 1,
]);
$notificacao->save();
// SubmissaoRecebidaNotification.php
Notification::send($userTemp, new SubmissaoRecebidaNotification($trabalho->id,$trabalho->titulo,$userTemp));
//Proponente
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => Auth::user()->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 1,
]);
$notificacao->save();
// submissao e notificação.php $trabalho->id,$trabalho->titulo
Notification::send(Auth::user(), new SubmissaoNotification($trabalho));
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta submetida!']);
} else {
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Rascunho salvo!']);
}
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]);
}
}
public function atribuirDados(Request $request, $edital, Trabalho $projeto = null)
{
if ($projeto == null) {
$projeto = new Trabalho();
}
$proponente = User::find(auth()->user()->id)->proponentes;
$hoje = now();
$projeto->titulo = $request->nomeProjeto;
$projeto->coordenador_id = $edital->coordenadorComissao->id;
$projeto->grande_area_id = $request->grandeArea;
$projeto->area_id = $request->area;
$projeto->sub_area_id = $request->subArea;
$projeto->pontuacaoPlanilha = $request->pontuacaoPlanilha;
$projeto->linkGrupoPesquisa = $request->linkGrupo;
$projeto->linkLattesEstudante = $request->linkLattesEstudante;
$projeto->data = $hoje;
$projeto->evento_id = $request->editalId;
$projeto->status = 'submetido';
$projeto->proponente_id = $proponente->id;
$projeto->conflitosInteresse = $request->conflitosInteresse;
// Salvando anexos no storage
$projeto->save();
$pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id;
$projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital);
return $projeto;
}
public function salvarParticipantes(Request $request, $edital, $projeto, $edicao = false)
{
if ($edicao) {
$participantes = $projeto->participantes;
$participantesPermanecem = collect();
// dd($request->all());
foreach ($request->participante_id as $key => $id) {
// Novo participante
if ($id == 0 || $id == null) {
$userParticipante = User::where('email', $request->emailParticipante[$key])->first();
$participante = new Participante();
if ($userParticipante == null) {
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $request->emailParticipante[$key];
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
if ($request->nomePlanoTrabalho[$key] != null) {
$usuario = User::where('email', $request->emailParticipante[$key])->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
// dd($arquivo);
}
// Editado
} elseif ($id > 0) {
// Removo dos cantidatos excluidos
$participante = Participante::find($id);
$participantesPermanecem->push($participante);
$usuario = $participante->user;
$endereco = $usuario->endereco;
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$usuario->update();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->update();
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->update();
if ($request->anexoPlanoTrabalho != null && array_key_exists($key, $request->anexoPlanoTrabalho) && $request->anexoPlanoTrabalho[$key] != null) {
$planoAtual = $participante->planoTrabalho;
if (Storage::disk()->exists($planoAtual->nome)) {
Storage::delete($planoAtual->nome);
}
$planoAtual->delete();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
// Excluidos
$participantesExcluidos = $participantes->diff($participantesPermanecem);
foreach ($participantesExcluidos as $participante) {
$plano = $participante->planoTrabalho;
if ($plano)
$plano->delete();
$participante->delete();
}
return true;
}
if ($request->emailParticipante != null) {
foreach ($request->emailParticipante as $key => $email) {
$userParticipante = User::where('email', $email)->first();
$participante = new Participante();
if ($userParticipante == null) {
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $email;
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$usuario = User::where('email', $email)->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$subject = "Participante de Projeto";
Mail::to($email)->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
if ($request->anexoPlanoTrabalho[$key]) {
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
$subject = "Participante de Projeto";
$time = Carbon::today('America/Recife');
$time = $time->isoFormat('às H:mm, dddd, D/M/YYYY');
Mail::to($email)
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
// if($request->nomePlanoTrabalho[$key] != null){
// $usuario = User::where('email', $email)->first();
// $participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
// $path = 'trabalhos/' . $edital->id . '/' . $projeto->id .'/';
// $nome = $request->nomePlanoTrabalho[$key] .".pdf";
// $file = $request->anexoPlanoTrabalho[$key];
// Storage::putFileAs($path, $file, $nome);
// $agora = now();
// $arquivo = new Arquivo();
// $arquivo->titulo = $request->nomePlanoTrabalho[$key];
// $arquivo->nome = $path . $nome;
// $arquivo->trabalhoId = $projeto->id;
// $arquivo->data = $agora;
// $arquivo->participanteId = $participante->id;
// $arquivo->versaoFinal = true;
// $arquivo->save();
// }
}
}
return true;
}
public function atualizar(Request $request, $id)
{
$edital = Evento::find($request->editalId);
$hoje = now();
$projeto = Trabalho::find($id);
if (!($edital->inicioSubmissao < $hoje && $edital->fimSubmissao >= $hoje)) {
return redirect()->route('inicial')->with(['error' => 0, 'mensagem' => 'As submissões para o edital ' . $edital->titulo . ' foram encerradas.']);
}
$projeto = $this->atribuirDados($request, $edital, $projeto);
$projeto->update();
// dd($request->all());
// Salvando participantes
$this->salvarParticipantes($request, $edital, $projeto, true);
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto atualizado com sucesso!']);
}
public function telaTrocaPart(Request $request)
{
$projeto = Trabalho::find($request->projeto_id);
$edital = Evento::find($projeto->evento_id);
if(Auth::user()->id != $projeto->proponente->user->id){
return redirect()->back();
}
$participantes = $projeto->participantes;
$substituicoesProjeto = Substituicao::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get();
$desligamentosProjeto = Desligamento::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get();
return view('administrador.substituirParticipante')->with(['projeto' => $projeto,
'edital' => $edital,
'participantes' => $participantes,
'substituicoesProjeto' => $substituicoesProjeto,
'estados' => $this->estados,
'enum_turno' => Participante::ENUM_TURNO,
'desligamentosProjeto' => $desligamentosProjeto,
]);
}
public function trocaParticipante(Request $request)
{
try {
DB::beginTransaction();
$trabalho = Trabalho::find($request->projetoId);
$evento = Evento::find($request->editalId);
$participanteSubstituido = Participante::where('id', $request->participanteId)->first();
$planoAntigo = Arquivo::where('id', $participanteSubstituido->planoTrabalho->id)->first();
$passwordTemporario = Str::random(8);
$data['name'] = $request->name;
$data['email'] = $request->email;
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento;
$data['data_entrada'] = $request->data_entrada;
$data['cpf'] = $request->cpf;
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg;
$data['celular'] = $request->celular;
$data['linkLattes'] = $request->linkLattes;
$data['cep'] = $request->cep;
$data['uf'] = $request->uf;
$data['cidade'] = $request->cidade;
$data['rua'] = $request->rua;
$data['numero'] = $request->numero;
$data['bairro'] = $request->bairro;
$data['complemento'] = $request->complemento;
if ($request->instituicao != "Outra") {
$data['instituicao'] = $request->instituicao;
} else {
$data['instituicao'] = $request->outrainstituicao;
}
$data['total_periodos'] = $request->total_periodos;
if ($request->curso != "Outro") {
$data['curso'] = $request->curso;
} else {
$data['curso'] = $request->outrocurso;
}
$data['turno'] = $request->turno;
$data['periodo_atual'] = $request->periodo_atual;
$data['ordem_prioridade'] = $request->ordem_prioridade;
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso;
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho;
if ($request->substituirApenasPlanoCheck == 'check') {
$substituicao = new Substituicao();
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participanteSubstituido->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'TrocarPlano';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participanteSubstituido->id;
$substituicao->planoSubstituto_id = $arquivo->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->save();
}
} else {
//$participanteSubstituido->delete();
$substituicao = new Substituicao();
$substituicao->observacao = $request->textObservacao;
if ($participanteSubstituido->data_entrada > $request->data_entrada) {
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Escolha uma data de entrada posterior a entrada do discente substituído"]);
}
$participanteSubstituido->data_saida = $request->data_entrada;
\App\Validator\CpfValidator::validate($request->all());
$user = User::where('email', $data['email'])->first();
if (!$user) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}
$participante = $user->participantes->where('trabalho_id', $trabalho->id)->first();
if (!$participante) {
$participante = Participante::create($data);
$participanteSubstituido->save();
}
$pasta = 'participantes/' . $participante->id;
$participante->anexoTermoCompromisso = Storage::putFileAs($pasta, $request->anexoTermoCompromisso, "Termo_de_Compromisso.pdf");
$participante->anexoComprovanteMatricula = Storage::putFileAs($pasta, $request->anexoComprovanteMatricula, "Comprovante_de_Matricula.pdf");
$participante->anexoLattes = Storage::putFileAs($pasta, $request->anexoCurriculoLattes, "Curriculo_Lattes.pdf");
if ($request->anexoAutorizacaoPais != null) {
$participante->anexoAutorizacaoPais = Storage::putFileAs($pasta, $request->anexoAutorizacaoPais, "Autorização_dos_Pais.pdf");
}
if ($request->anexoComprovanteBancario != null) {
$participante->anexoComprovanteBancario = Storage::putFileAs($pasta, $request->anexoComprovanteBancario, "Comprovante_Bancario." . $request->file('anexoComprovanteBancario')->getClientOriginalExtension());
}
$user->participantes()->save($participante);
//$trabalho->participantes()->save($participante);
if ($request->manterPlanoCheck == 'check') {
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'ManterPlano';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participante->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->planoSubstituto_id = $planoAntigo->id;
$planoAntigo->participanteId = $participante->id;
$substituicao->save();
$planoAntigo->save();
} else {
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'Completa';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participante->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->planoSubstituto_id = $arquivo->id;
$substituicao->save();
}
}
}
$evento->trabalhos()->save($trabalho);
$trabalho->save();
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 2,
]);
$notificacao->save();
DB::commit();
Mail::to($evento->coordenadorComissao->user->email)->send(new SolicitacaoSubstituicao($evento, $trabalho,'',$substituicao->tipo,$substituicao->status));
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['sucesso' => 'Pedido de substituição enviado com sucesso!']);
} catch (\App\Validator\ValidationException $th) {
DB::rollback();
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Cpf inválido"]);
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => $th->getMessage()]);
}
}
public function telaShowSubst(Request $request)
{
$trabalho = Trabalho::find($request->trabalho_id);
$substituicoesProjeto = Substituicao::where('trabalho_id', $trabalho->id)->orderBy('created_at', 'DESC')->get();
$substituicoesPendentes = Substituicao::where('trabalho_id', $trabalho->id)->where('status', 'Em Aguardo')->orderBy('created_at', 'DESC')->get();
return view('administrador.analiseSubstituicoes')->with(['substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,
'trabalho' => $trabalho]);
}
public function aprovarSubstituicao(Request $request)
{
$substituicao = Substituicao::find($request->substituicaoID);
$trabalho = Trabalho::find($substituicao->trabalho->id);
if ($request->aprovar == 'true') {
try {
if ($substituicao->tipo == 'TrocarPlano') {
if(!empty($substituicao->participanteSubstituido)){
$substituicao->participanteSubstituido->planoTrabalho()->where('id', '!=', $substituicao->planoSubstituto->id)->delete();
}
$substituicao->status = 'Finalizada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} else {
if(!empty($substituicao->participanteSubstituido)){
$substituicao->participanteSubstituido->delete();
}
$trabalho->participantes()->save($substituicao->participanteSubstituto);
$substituicao->status = 'Finalizada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
}
Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status));
return redirect()->back()->with(['sucesso' => 'Substituição concluída!']);
} catch (\Throwable $th) {
return redirect()->back()->with(['erro' => $th->getMessage()]);
}
} else {
try {
if ($substituicao->tipo == 'TrocarPlano') {
$substituicao->participanteSubstituido->planoTrabalho()->where('id', '=', $substituicao->planoSubstituto->id)->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} elseif ($substituicao->tipo == 'ManterPlano') {
$substituicao->planoSubstituto->participanteId = $substituicao->participanteSubstituido->id;
$substituicao->planoSubstituto->save();
$substituicao->participanteSubstituto->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} else {
$substituicao->participanteSubstituto->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
}
$trabalho = Trabalho::find($substituicao->trabalho->id);
Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status));
return redirect()->back()->with(['sucesso' => 'Substituição cancelada com sucesso!']);
} catch (\Throwable $th) {
return redirect()->back()->with(['erro' => $th->getMessage()]);
}
}
}
public function aprovarProposta(Request $request, $id)
{
$trabalho = Trabalho::find($id);
$trabalho->status = $request->statusProp;
$trabalho->comentario = $request->comentario;
$trabalho->save();
return redirect()->back()->with(['sucesso' => 'Proposta avaliada com sucesso']);
}
<?php
namespace App\Http\Controllers;
use PDF;
use App;
use App\Administrador;
use Auth;
use App\Area;
use App\User;
use App\Evento;
use App\AreaTematica;
use App\Arquivo;
use App\Coautor;
use App\Revisor;
use App\TrabalhoUser;
use App\SubArea;
use App\Endereco;
use App\Trabalho;
use App\Avaliador;
use Carbon\Carbon;
use App\AnexosTemp;
use App\Atribuicao;
use App\GrandeArea;
use App\Modalidade;
use App\Proponente;
use App\Participante;
use App\AreaModalidade;
use App\Certificado;
use Illuminate\Http\File;
use App\Mail\EventoCriado;
use Illuminate\Support\Str;
use App\CoordenadorComissao;
use App\FuncaoParticipantes;
use Illuminate\Http\Request;
use App\Mail\SubmissaoTrabalho;
use App\OutrasInfoParticipante;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\Http\Requests\StoreTrabalho;
use Illuminate\Support\Facades\Mail;
use App\Http\Requests\UpdateTrabalho;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use App\Mail\EmailParaUsuarioNaoCadastrado;
use App\Mail\SolicitacaoSubstituicao;
use App\Notificacao;
use App\Notifications\SolicitacaoCertificadoNotification;
use App\Notifications\SubmissaoNotification;
use App\Notifications\SubmissaoRecebidaNotification;
use App\SolicitacaoCertificado;
use App\SolicitacaoParticipante;
use App\Substituicao;
use Illuminate\Support\Facades\Notification;
use App\Desligamento;
use App\ObjetivoDeDesenvolvimentoSustentavel;
use App\AvaliacaoRelatorio;
class TrabalhoController extends Controller
{
public $estados = array(
'AC' => 'Acre',
'AL' => 'Alagoas',
'AP' => 'Amapá',
'AM' => 'Amazonas',
'BA' => 'Bahia',
'CE' => 'Ceará',
'DF' => 'Distrito Federal',
'ES' => 'Espirito Santo',
'GO' => 'Goiás',
'MA' => 'Maranhão',
'MS' => 'Mato Grosso do Sul',
'MT' => 'Mato Grosso',
'MG' => 'Minas Gerais',
'PA' => 'Pará',
'PB' => 'Paraíba',
'PR' => 'Paraná',
'PE' => 'Pernambuco',
'PI' => 'Piauí',
'RJ' => 'Rio de Janeiro',
'RN' => 'Rio Grande do Norte',
'RS' => 'Rio Grande do Sul',
'RO' => 'Rondônia',
'RR' => 'Roraima',
'SC' => 'Santa Catarina',
'SP' => 'São Paulo',
'SE' => 'Sergipe',
'TO' => 'Tocantins',
);
public function index($id)
{
$edital = Evento::find($id);
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::orderBy('nome')->get();
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
if($proponente == null){
return view('proponente.cadastro')->with(['mensagem' => 'Você não possui perfil de Proponente, para submeter algum projeto preencha o formulário.']);;
}
$rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$edital->id)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
// dd($estados);
return view('evento.submeterTrabalho',[
// return view('evento.backupForm',[
'edital' => $edital,
'grandeAreas' => $grandeAreas,
'funcaoParticipantes'=> $funcaoParticipantes,
'rascunho' => $rascunho,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
'ods' =>$ODS,
]);
}
public function arquivar(Request $request){
$trabalho = Trabalho::find($request->trabalho_id);
$arquivos = Arquivo::where('trabalhoId',$trabalho->id)->get();
if($request->arquivar_tipo == 1 ){
$trabalho->arquivado = true;
foreach ($arquivos as $arquivo){
$arquivo->arquivado = true;
$arquivo->update();
}
$message = "Projeto ".$trabalho->titulo." arquivado";
}else{
$trabalho->arquivado = false;
foreach ($arquivos as $arquivo){
$arquivo->arquivado = false;
$arquivo->update();
}
$message = "Projeto ".$trabalho->titulo." desarquivado";
}
$trabalho->update();
return redirect()->back()->with(['sucesso'=>$message ]);
}
public function storeParcial(Request $request){
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
$evento = Evento::find($request->editalId);
$coordenador = CoordenadorComissao::find($evento->coordenadorId);
//Relaciona o projeto criado com o proponente que criou o projeto
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$trabalho = "trabalho";
if ($evento->inicioSubmissao > $mytime) {
if ($mytime >= $evento->fimSubmissao) {
return redirect()->route('home');
}
}
//--Salvando os dados da submissão temporariamente
$this->armazenarInfoTemp($request, $proponente);
return redirect()->route('projetos.edital', ['id' => $request->editalId]);
}
//Armazena temporariamente dados da submissão, no banco de dados e no storage
public function armazenarInfoTemp(Request $request, $proponente)
{
//---Dados do Projeto
$trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$request->editalId)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
//dd($trabalho);
if($trabalho == null){
$trabalho = new Trabalho();
$trabalho->proponente_id = $proponente->id;
$trabalho->evento_id = $request->editalId;
$trabalho->status = 'Rascunho';
$stringKeys = ['titulo','linkGrupoPesquisa', 'linkLattesEstudante','pontuacaoPlanilha','anexoProjeto',
'anexoPlanilhaPontuacao', 'anexoLattesCoordenador', 'conflitosInteresse'];
$intKeys = ['grande_area_id','area_id','sub_area_id','coordenador_id'];
$trabalho->fill(
array_fill_keys($stringKeys, "") + array_fill_keys($intKeys, 1)
)->save();
//dd($trabalho);
}
if(!(is_null($request->nomeProjeto)) ) {
$trabalho->titulo = $request->nomeProjeto;
}
if(!(is_null($request->grandeArea))){
$trabalho->grande_area_id = $request->grandeArea;
}
if(!(is_null($request->area))){
$trabalho->area_id = $request->area;
}
if(!(is_null($request->subArea))){
$trabalho->sub_area_id = $request->subArea;
}
if(!(is_null($request->pontuacaoPlanilha))){
$trabalho->pontuacaoPlanilha = $request->pontuacaoPlanilha;
}
if(!(is_null($request->linkGrupo))){
$trabalho->linkGrupoPesquisa = $request->linkGrupo;
}
if(!(is_null($request->conflitosInteresse))){
$trabalho->conflitosInteresse = $request->conflitosInteresse;
}
//Anexos do projeto
$pasta = 'trabalhos/' . $request->editalId . '/' . $trabalho->id;
if(!(is_null($request->anexoDecisaoCONSU)) ) {
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, "CONSU.pdf");
}
if (!(is_null($request->anexoComiteEtica))) {
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, "Comite_de_etica.pdf");
}
if (!(is_null($request->justificativaAutorizacaoEtica))) {
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, "Justificativa.pdf");
}
if (!(is_null($request->anexoProjeto))) {
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, "Projeto.pdf");
}
if (!(is_null($request->anexoLattesCoordenador))) {
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, "Lattes_Coordenador.pdf");
}
if (!(is_null($request->anexoPlanilhaPontuacao))) {
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha.". $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
$trabalho->update();
//---Anexos planos de trabalho
//dd($trabalho);
return $trabalho;
}
public function validarAnexosRascunho(Request $request, $trabalho){
$validator = Validator::make($trabalho->getAttributes(),[
'anexoPlanilhaPontuacao' => $request->anexoPlanilhaPontuacao==null?['planilha']:[],
]);
if ($validator->fails()) {
//dd('asdf');
return back()->withErrors($validator)->withInput();
}
return 1;
}
public function armazenarAnexosFinais($request, $pasta, $trabalho, $evento){
// Checando se é um novo trabalho ou uma edição
if ($trabalho->anexoProjeto != null) {
// Anexo Projeto
if (isset($request->anexoProjeto)) {
if (Storage::disk()->exists($trabalho->anexoProjeto)) {
Storage::delete($trabalho->anexoProjeto);
}
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
// if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if (isset($request->anexoDecisaoCONSU)) {
if (Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) {
Storage::delete($trabalho->anexoDecisaoCONSU);
}
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf');
}
// }
//Autorização ou Justificativa
if (isset($request->anexoAutorizacaoComiteEtica)) {
if (Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) {
Storage::delete($trabalho->anexoAutorizacaoComiteEtica);
}
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf');
$trabalho->justificativaAutorizacaoEtica = null;
} elseif (isset($request->justificativaAutorizacaoEtica)) {
if (Storage::disk()->exists($trabalho->justificativaAutorizacaoEtica)) {
Storage::delete($trabalho->justificativaAutorizacaoEtica);
}
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
$trabalho->anexoAutorizacaoComiteEtica = null;
}
//Anexo Lattes
if (isset($request->anexoLattesCoordenador)) {
if (Storage::disk()->exists($trabalho->anexoLattesCoordenador)) {
Storage::delete($trabalho->anexoLattesCoordenador);
}
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if (isset($request->anexoPlanilhaPontuacao)) {
if (Storage::disk()->exists($trabalho->anexoPlanilhaPontuacao)) {
Storage::delete($trabalho->anexoPlanilhaPontuacao);
}
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
// Anexo grupo pesquisa
if (isset($request->anexoGrupoPesquisa)) {
if (Storage::disk()->exists($trabalho->anexoGrupoPesquisa)) {
Storage::delete($trabalho->anexoGrupoPesquisa);
}
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension());
}
//Anexo documentro extra
if (isset($request->anexo_docExtra)) {
if (Storage::disk()->exists($trabalho->anexo_docExtra)) {
Storage::delete($trabalho->anexo_docExtra);
}
$trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension());
}
$trabalho->save();
return $trabalho;
}
// Anexo Projeto
if (isset($request->anexoProjeto)) {
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
//if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if (isset($request->anexoDecisaoCONSU)) {
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf');
}
//}
//Autorização ou Justificativa
if (isset($request->anexoAutorizacaoComiteEtica)) {
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf');
$trabalho->justificativaAutorizacaoEtica = null;
} elseif (isset($request->justificativaAutorizacaoEtica)) {
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
$trabalho->anexoAutorizacaoComiteEtica = null;
}
//Anexo Lattes
if (isset($request->anexoLattesCoordenador)) {
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if (isset($request->anexoPlanilhaPontuacao)) {
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
// Anexo grupo pesquisa
if (isset($request->anexoGrupoPesquisa)) {
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension());
}
// Anexo documento extra
if (isset($request->anexo_docExtra)) {
$trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension());
}
//Anexo SIPAC
if (isset($request->anexo_SIPAC)) {
if (Storage::disk()->exists($trabalho->anexo_SIPAC)) {
Storage::delete($trabalho->anexo_SIPAC);
}
$trabalho->anexo_SIPAC = Storage::putFileAs($pasta, $request->anexo_SIPAC, "Anexo_SIPAC." . $request->file('anexo_SIPAC')->extension());
}
return $trabalho;
}
public function show($id)
{
$projeto = Trabalho::find($id);
if(Auth::user()->id != $projeto->proponente->user->id){
return redirect()->back();
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areas = Area::all();
$subareas = Subarea::all();
$areasTematicas = AreaTematica::all();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = $projeto->participantes;
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
$proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first();
// Verficação de pendencia de substituição
$aux = count(Substituicao::where('status','Em Aguardo')->whereIn('participanteSubstituido_id',$projeto->participantes->pluck('id'))->get());
$flagSubstituicao = 1;
if($aux != 0){
$flagSubstituicao = -1;
}
$trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get();
$avals_projeto = [];
$AvalRelatParcial = [];
$AvalRelatFinal = [];
if (isset($arquivos)) {
foreach ($arquivos as $arquivo) {
array_push($avals_projeto, AvaliacaoRelatorio::where('arquivo_id', $arquivo->id)->get());
}
}
foreach ($avals_projeto as $avals) {
foreach ($avals as $aval){
if ($aval->tipo == 'Parcial') {
array_push($AvalRelatParcial, $aval);
} else {
array_push($AvalRelatFinal, $aval);
}
}
}
return view('projeto.visualizar')->with(['projeto' => $projeto,
'grandeAreas' => $grandeAreas,
'areas' => $areas,
'subAreas' => $subareas,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,
'estados' => $this->estados,
'visualizar' => true,
'enum_turno' => Participante::ENUM_TURNO,
'areasTematicas' => $areasTematicas,
'flagSubstituicao' =>$flagSubstituicao,
'trabalhos_user' => $trabalhos_user,
'AvalRelatParcial' => $AvalRelatParcial,
'AvalRelatFinal' => $AvalRelatFinal,
'proponente' => $proponente
]);
}
public function exportProjeto($id)
{
$projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first();
if (!$projeto) {
return back()->withErrors(['Proposta não encontrada!']);
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areas = Area::all();
$subAreas = Subarea::all();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
$enum_turno = Participante::ENUM_TURNO;
view()->share('projeto.visualizar', [$projeto, $grandeAreas, $areas, $subAreas, $edital, $users, $funcaoParticipantes, $participantes, $arquivos, $enum_turno]);
$pdf = PDF::loadView('projeto.visualizar', compact('projeto', 'grandeAreas', 'areas', 'subAreas', 'edital', 'users', 'funcaoParticipantes', 'participantes', 'arquivos', 'enum_turno'))->setOptions(['defaultFont' => 'sans-serif']);
// download PDF file with download method
return $pdf->download('pdf_file.pdf');
}
public function edit($id)
{
if(Auth::user()->tipo=='administrador'){
$projeto = Trabalho::find($id);
}else{
$projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first();
}
$proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first();
if (!$projeto) {
return back()->withErrors(['Proposta não encontrada!']);
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$areas = Area::all();
$subareas = Subarea::all();
$ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
//dd(Participante::all());
$rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $edital->id)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
$trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get();
return view('projeto.editar')->with(['projeto' => $projeto,
'grandeAreas' => $grandeAreas,
'areas' => $areas,
'subAreas' => $subareas,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
'listaOds' => $ODS,
'trabalhos_user' => $trabalhos_user,
'proponente' => $proponente
]);
}
public function destroy(Request $request)
{
$projeto = Trabalho::find($request->id);
//dd($trabalho);
Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id);
$participantes = $projeto->participantes;
foreach ($participantes as $participante) {
$plano = $participante->planoTrabalho;
if ($plano)
$plano->delete();
$participante->delete();
}
$projeto->delete();
return redirect()->back()->with(['mensagem' => 'Projeto deletado com sucesso!']);
}
public function excluirParticipante($id)
{
$participante = Participante::where('id', $id)->first();
//$participante = Participante::where('user_id', Auth()->user()->id)
// ->where('trabalho_id', $id)->first();
//$participante->trabalhos()->detach($id);
$participante->delete();
return redirect()->back();
}
public function solicitarCertificado(Trabalho $trabalho, Request $request)
{
$users = User::find($request->users);
$coord = $trabalho->coordenador;
$SolicitacaoCertificado = SolicitacaoCertificado::create();
Notificacao::create([
'remetente_id' => auth()->user()->id,
'destinatario_id' => $coord->user_id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 6
]);
foreach ($users as $user) {
SolicitacaoParticipante::create([
'user_id' => $user->id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
]);
}
$admins = Administrador::all();
foreach ($admins as $admin) {
$userTemp = User::find($admin->user_id);
Notificacao::create([
'remetente_id' => auth()->user()->id,
'destinatario_id' => $admin->user_id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 6,
]);
}
$destinatarios = $admins->map(function($admin) {return $admin->user;})->push($coord->user);
Notification::send($destinatarios, new SolicitacaoCertificadoNotification($trabalho->proponente, $trabalho, $userTemp, $users));
return redirect()->route('trabalho.show', ['id' => $trabalho->id])->with('sucesso', 'Solicitação de certificado/declaração efetuada com sucesso!');
}
public function novaVersao(Request $request)
{
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
$evento = Evento::find($request->eventoId);
if ($evento->inicioSubmissao > $mytime) {
if ($mytime >= $evento->fimSubmissao) {
return redirect()->route('home');
}
}
$validatedData = $request->validate([
'arquivo' => ['required', 'file', 'mimes:pdf'],
'eventoId' => ['required', 'integer'],
'trabalhoId' => ['required', 'integer'],
]);
$trabalho = Trabalho::find($request->trabalhoId);
if (Auth::user()->id != $trabalho->autorId) {
return redirect()->route('home');
}
$arquivos = $trabalho->arquivo;
$count = 1;
foreach ($arquivos as $key) {
$key->versaoFinal = false;
$key->save();
$count++;
}
$file = $request->arquivo;
$path = 'trabalhos/' . $request->eventoId . '/' . $trabalho->id . '/';
$nome = $count . ".pdf";
Storage::putFileAs($path, $file, $nome);
$arquivo = Arquivo::create([
'nome' => $path . $nome,
'trabalhoId' => $trabalho->id,
'versaoFinal' => true,
]);
return redirect()->route('evento.visualizar', ['id' => $request->eventoId]);
}
public function detalhesAjax(Request $request)
{
$validatedData = $request->validate([
'trabalhoId' => ['required', 'integer']
]);
$trabalho = Trabalho::find($request->trabalhoId);
$revisores = Atribuicao::where('trabalhoId', $request->trabalhoId)->get();
$revisoresAux = [];
foreach ($revisores as $key) {
if ($key->revisor->user->name != null) {
array_push($revisoresAux, [
'id' => $key->revisor->id,
'nomeOuEmail' => $key->revisor->user->name
]);
} else {
array_push($revisoresAux, [
'id' => $key->revisor->id,
'nomeOuEmail' => $key->revisor->user->email
]);
}
}
$revisoresDisponeis = Revisor::where('eventoId', $trabalho->eventoId)->where('areaId', $trabalho->areaId)->get();
$revisoresAux1 = [];
foreach ($revisoresDisponeis as $key) {
//verificar se ja é um revisor deste trabalhos
$revisorNaoExiste = true;
foreach ($revisoresAux as $key1) {
if ($key->id == $key1['id']) {
$revisorNaoExiste = false;
}
}
//
if ($revisorNaoExiste) {
if ($key->user->name != null) {
array_push($revisoresAux1, [
'id' => $key->id,
'nomeOuEmail' => $key->user->name
]);
} else {
array_push($revisoresAux1, [
'id' => $key->id,
'nomeOuEmail' => $key->user->email
]);
}
}
}
return response()->json([
'titulo' => $trabalho->titulo,
'resumo' => $trabalho->resumo,
'revisores' => $revisoresAux,
'revisoresDisponiveis' => $revisoresAux1
], 200);
}
public function atribuirAvaliadorTrabalho(Request $request)
{
$request->trabalho_id;
$trabalho = Trabalho::find($request->trabalho_id);
$avaliadores = Avaliador::all();
return view('coordenadorComissao.gerenciarEdital.atribuirAvaliadorTrabalho', ['avaliadores' => $avaliadores, 'trabalho' => $trabalho, 'evento' => $trabalho->evento]);
}
public function atribuir(Request $request)
{
$trabalho = Trabalho::find($request->trabalho_id);
$todosAvaliadores = Avaliador::all();
$avaliadores = Avaliador::whereIn('id', $request->avaliadores)->with('user')->get();
$trabalho->avaliadors()->sync($request->avaliadores);
foreach ($avaliadores as $key => $avaliador) {
$user = $avaliador->user;
$subject = "Trabalho atribuido";
Mail::to($user->email)
->send(new EventoCriado($user, $subject));
}
return view('coordenadorComissao.detalhesEdital', ['evento' => $trabalho->evento]);
}
public function projetosDoEdital($id)
{
$edital = Evento::find($id);
$projetos = Trabalho::where('evento_id', '=', $id)->get();
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje' => $hoje]);
}
public function baixarAnexoProjeto($id)
{
$projeto = Trabalho::find($id);
//dd($projeto);
if (Storage::disk()->exists($projeto->anexoProjeto)) {
ob_end_clean();
return Storage::download($projeto->anexoProjeto);
}
return abort(404);
}
public function baixarAnexoGrupoPesquisa($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoGrupoPesquisa)) {
ob_end_clean();
return Storage::download($projeto->anexoGrupoPesquisa);
}
return abort(404);
}
public function baixarAnexoConsu($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoDecisaoCONSU)) {
ob_end_clean();
return Storage::download($projeto->anexoDecisaoCONSU);
}
return abort(404);
}
public function baixarAnexoComite($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoAutorizacaoComiteEtica)) {
ob_end_clean();
return Storage::download($projeto->anexoAutorizacaoComiteEtica);
}
return abort(404);
}
public function baixarAnexoLattes($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoLattesCoordenador)) {
ob_end_clean();
return Storage::download($projeto->anexoLattesCoordenador);
}
return abort(404);
}
public function baixarAnexoPlanilha($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoPlanilhaPontuacao)) {
ob_end_clean();
$file = $projeto->anexoPlanilhaPontuacao;
$ext = explode(".", $file);
switch ($ext[1]) {
case 'xlsx':
$hearder = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
break;
case 'xls':
$hearder = 'application/vnd.ms-excel';
break;
case 'ods':
$hearder = 'application/vnd.oasis.opendocument.spreadsheet';
break;
default:
$hearder = 'application/vnd.ms-excel';
break;
}
$headers = array(
"Content-type: {$hearder}",
);
return Storage::download($projeto->anexoPlanilhaPontuacao, "Planilha.{$ext[1]}", $headers);
}
return abort(404);
}
public function baixarAnexoJustificativa($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->justificativaAutorizacaoEtica)) {
ob_end_clean();
return Storage::download($projeto->justificativaAutorizacaoEtica);
}
return abort(404);
}
public function baixarAnexoDocExtra($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexo_docExtra)) {
ob_end_clean();
return Storage::download($projeto->anexo_docExtra);
}
return abort(404);
}
public function baixarAnexoSIPAC($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexo_SIPAC)) {
ob_end_clean();
return Storage::download($projeto->anexo_SIPAC);
}
return abort(404);
}
public function baixarAnexoTemp($eventoId, $nomeAnexo)
{
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $eventoId)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
if (Storage::disk()->exists($trabalho->$nomeAnexo)) {
ob_end_clean();
return Storage::download($trabalho->$nomeAnexo);
}
return abort(404);
}
public function baixarEventoTemp($nomeAnexo)
{
$eventoTemp = Evento::where('criador_id', Auth::user()->id)->where('anexosStatus', 'temporario')
->orderByDesc('updated_at')->first();
if (Storage::disk()->exists($eventoTemp->$nomeAnexo)) {
ob_end_clean();
return Storage::download($eventoTemp->$nomeAnexo);
}
return abort(404);
}
//xxfa
public function update(UpdateTrabalho $request, $id)
{
try {
if (!$request->has('rascunho')) {
$request->merge([
'status' => 'submetido'
]);
} else {
$request->merge([
'status' => 'rascunho'
]);
}
$evento = Evento::find($request->editalId);
$request->merge([
'coordenador_id' => $evento->coordenadorComissao->id
]);
$trabalho = Trabalho::find($id);
$trabalho->ods()->sync($request->ods);
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
DB::beginTransaction();
if (!$trabalho) {
return back()->withErrors(['Proposta não encontrada']);
}
if($evento->tipo=="PIBEX"){
$trabalho->update($request->except([
'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra'
]));
}else{
$trabalho->update($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra'
]));
}
$pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id;
$trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento);
$trabalho->save();
if($request->integrantesExistentes == null){
$request->integrantesExistentes = [];
}
$usuariosRemovidos = TrabalhoUser::where('trabalho_id', $trabalho->id)->whereNotIn('user_id', $request->integrantesExistentes)->get();
if($usuariosRemovidos->first() != null) {
foreach($usuariosRemovidos as $usuarioRemovido){
$usuarioRemovido->delete();
}
}
if($evento->natureza_id == 3 && $request->integrantes != null){
foreach($request->integrantes as $integrante){
$integrante = explode(',', $integrante);
$trabalho_user = new TrabalhoUser();
$trabalho_user->user_id = $integrante[0];
$trabalho_user->funcao_participante_id = $integrante[1];
$trabalho_user->trabalho_id = $trabalho->id;
$trabalho_user->save();
}
}
if ($evento->numParticipantes != 0) {
if ($request->marcado == null) {
$idExcluido = $trabalho->participantes->pluck('id');
} else {
$idExcluido = [];
}
foreach ($request->participante_id as $key => $value) {
if ($request->marcado != null && array_search($key, $request->marcado) === false) {
if ($value !== null)
array_push($idExcluido, $value);
}
}
foreach ($idExcluido as $key => $value) {
$trabalho->participantes()->find($value)->delete();
}
$trabalho->refresh();
}
if ($request->has('marcado')) {
foreach ($request->marcado as $key => $part) {
$part = intval($part);
$passwordTemporario = Str::random(8);
$data['name'] = $request->name[$part];
$data['email'] = $request->email[$part];
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento[$part];
$data['cpf'] = $request->cpf[$part];
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg[$part];
$data['celular'] = $request->celular[$part];
$data['cep'] = $request->cep[$part];
$data['uf'] = $request->uf[$part];
$data['cidade'] = $request->cidade[$part];
$data['rua'] = $request->rua[$part];
$data['numero'] = $request->numero[$part];
$data['bairro'] = $request->bairro[$part];
$data['complemento'] = $request->complemento[$part];
if ($request->instituicao[$part] != "Outra") {
$data['instituicao'] = $request->instituicao[$part];
} else {
$data['instituicao'] = $request->outrainstituicao[$part];
}
$data['total_periodos'] = $request->total_periodos[$part];
if ($request->curso[$part] != "Outro") {
$data['curso'] = $request->curso[$part];
} else {
$data['curso'] = $request->outrocurso[$part];
}
$data['turno'] = $request->turno[$part];
$data['periodo_atual'] = $request->periodo_atual[$part];
$data['ordem_prioridade'] = $request->ordem_prioridade[$part];
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso[$part];
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part];
if($request->participante_id[$part] != null){
$participante = Participante::find($request->participante_id[$part]);
$user = User::where('email', $participante->user->email)->first();
}else{
$user = User::where('email', $data['email'])->first();
}
if ($user == null) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
$participante = Participante::create($data);
$participante->data_entrada = $participante->created_at;
$user->participantes()->save($participante);
$trabalho->participantes()->save($participante);
$participante->trabalho_id = $trabalho->id;
$participante->save();
} else {
// $user = $participante->user;
$user->update($data);
if( $user->endereco == null){
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}else{
$endereco = $user->endereco;
$endereco->update($data);
}
$participante = $user->participantes->where('trabalho_id', $trabalho->id)->where('id', $request->participante_id[$part])->first();
// dd($participante);
if ($participante == null) {
// dd('part null');
$participante = Participante::create($data);
$user->participantes()->save($participante);
$trabalho->participantes()->save($participante);
} else {
// dd('part update');
$participante->update($data);
}
}
if ($request->has('anexoPlanoTrabalho') && array_key_exists($part, $request->anexoPlanoTrabalho) && $request->nomePlanoTrabalho[$part] != null) {
if (Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->count()) {
$arquivo = Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->first();
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$titulo = $data['nomePlanoTrabalho'];
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo->update([
'titulo' => $titulo,
'nome' => $path . $nome,
'data' => now(),
]);
} else {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
} else {
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho;
if (Arquivo::where('proponenteId', $proponente->id)->where('trabalhoId', $trabalho->id)->count()) {
$arquivo = Arquivo::where('proponenteId', $proponente->id)->where('trabalhoId', $trabalho->id)->first();
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$titulo = $data['nomePlanoTrabalho'];
if ($request->has('anexoPlanoTrabalho')) {
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
} else {
if($arquivo->nome != $path.$nome) {
Storage::rename( $arquivo->nome, $path.$nome );
}
}
$arquivo->update([
'titulo' => $titulo,
'nome' => $path . $nome,
'data' => now(),
]);
} else {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->proponenteId = $proponente->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
DB::commit();
if(Auth::user()->tipo == 'administrador'){
return redirect(route('admin.analisarProposta',['id'=>$trabalho->id]));
}
if (!$request->has('rascunho')) {
Notification::send($trabalho->proponente->user, new SubmissaoNotification($trabalho));
}
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta atualizada!']);
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]);
}
}
public function buscarUsuario(Request $request) {
$usuario = User::where('cpf', $request->cpf_consulta)->first();
$funcao = FuncaoParticipantes::where('id', $request->funcao)->first();
$participante = $usuario->participantes()->first();
if($usuario){
return json_encode([$usuario, $funcao, $participante, $usuario->endereco()->first()]);
}
return json_encode('inexistente');
}
public function salvar(StoreTrabalho $request)
{
//dd($request->all());
try {
if (!$request->has('rascunho')) {
$request->merge([
'status' => 'submetido'
]);
}
$evento = Evento::find($request->editalId);
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$request->merge([
'coordenador_id' => $evento->coordenadorComissao->id
]);
DB::beginTransaction();
if($evento->tipo=="PIBEX"){
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra', 'anexo_SIPAC'
]));
}else if($evento->tipo=="CONTINUO"){
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra',
]));
} else {
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra', 'anexo_SIPAC'
]));
}
if ($request->has('marcado')) {
foreach ($request->marcado as $key => $part) {
$part = intval($part);
$passwordTemporario = Str::random(8);
$data['name'] = $request->name[$part];
$data['email'] = $request->email[$part];
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento[$part];
$data['cpf'] = $request->cpf[$part];
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg[$part];
$data['celular'] = $request->celular[$part];
$data['cep'] = $request->cep[$part];
$data['uf'] = $request->uf[$part];
$data['cidade'] = $request->cidade[$part];
$data['rua'] = $request->rua[$part];
$data['numero'] = $request->numero[$part];
$data['bairro'] = $request->bairro[$part];
$data['complemento'] = $request->complemento[$part];
if ($request->instituicao[$part] != "Outra") {
$data['instituicao'] = $request->instituicao[$part];
} else {
$data['instituicao'] = $request->outrainstituicao[$part];
}
$data['total_periodos'] = $request->total_periodos[$part];
if ($request->curso[$part] != "Outro") {
$data['curso'] = $request->curso[$part];
} else {
$data['curso'] = $request->outrocurso[$part];
}
$data['turno'] = $request->turno[$part];
$data['periodo_atual'] = $request->periodo_atual[$part];
$data['ordem_prioridade'] = $request->ordem_prioridade[$part];
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso[$part];
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part];
$user = User::where('email', $data['email'])->first();
if ($user == null) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}
// $participante = $user->participantes->where('trabalho_id', $trabalho->id)->first();
// if ($participante == null){
// $participante = Participante::create($data);
// }
$participante = Participante::create($data);
$participante->data_entrada = $participante->created_at;
$user->participantes()->save($participante);
$participante->trabalho_id = $trabalho->id;
$participante->save();
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
} else {
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho;
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->proponenteId = $proponente->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
$evento->trabalhos()->save($trabalho);
$pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id;
$trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento);
$trabalho->modalidade = $request->modalidade;
$trabalho->save();
if($evento->natureza_id == 3){
foreach($request->integrantes as $integrante){
$integrante = explode(',', $integrante);
$trabalho_user = new TrabalhoUser();
$trabalho_user->user_id = $integrante[0];
$trabalho_user->funcao_participante_id = $integrante[1];
$trabalho_user->trabalho_id = $trabalho->id;
$trabalho_user->save();
}
}
$trabalho->ods()->sync($request->ods);
DB::commit();
if (!$request->has('rascunho')) {
//Notificações
//Coordenador
$userTemp = User::find($evento->coordenadorComissao->user_id);
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 1,
]);
$notificacao->save();
// SubmissaoRecebidaNotification.php
Notification::send($userTemp, new SubmissaoRecebidaNotification($trabalho->id,$trabalho->titulo,$userTemp));
//Proponente
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => Auth::user()->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 1,
]);
$notificacao->save();
// submissao e notificação.php $trabalho->id,$trabalho->titulo
Notification::send(Auth::user(), new SubmissaoNotification($trabalho));
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta submetida!']);
} else {
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Rascunho salvo!']);
}
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]);
}
}
public function atribuirDados(Request $request, $edital, Trabalho $projeto = null)
{
if ($projeto == null) {
$projeto = new Trabalho();
}
$proponente = User::find(auth()->user()->id)->proponentes;
$hoje = now();
$projeto->titulo = $request->nomeProjeto;
$projeto->coordenador_id = $edital->coordenadorComissao->id;
$projeto->grande_area_id = $request->grandeArea;
$projeto->area_id = $request->area;
$projeto->sub_area_id = $request->subArea;
$projeto->pontuacaoPlanilha = $request->pontuacaoPlanilha;
$projeto->linkGrupoPesquisa = $request->linkGrupo;
$projeto->linkLattesEstudante = $request->linkLattesEstudante;
$projeto->data = $hoje;
$projeto->evento_id = $request->editalId;
$projeto->status = 'submetido';
$projeto->proponente_id = $proponente->id;
$projeto->conflitosInteresse = $request->conflitosInteresse;
// Salvando anexos no storage
$projeto->save();
$pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id;
$projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital);
return $projeto;
}
public function salvarParticipantes(Request $request, $edital, $projeto, $edicao = false)
{
if ($edicao) {
$participantes = $projeto->participantes;
$participantesPermanecem = collect();
// dd($request->all());
foreach ($request->participante_id as $key => $id) {
// Novo participante
if ($id == 0 || $id == null) {
$userParticipante = User::where('email', $request->emailParticipante[$key])->first();
$participante = new Participante();
if ($userParticipante == null) {
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $request->emailParticipante[$key];
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
if ($request->nomePlanoTrabalho[$key] != null) {
$usuario = User::where('email', $request->emailParticipante[$key])->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
// dd($arquivo);
}
// Editado
} elseif ($id > 0) {
// Removo dos cantidatos excluidos
$participante = Participante::find($id);
$participantesPermanecem->push($participante);
$usuario = $participante->user;
$endereco = $usuario->endereco;
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$usuario->update();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->update();
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->update();
if ($request->anexoPlanoTrabalho != null && array_key_exists($key, $request->anexoPlanoTrabalho) && $request->anexoPlanoTrabalho[$key] != null) {
$planoAtual = $participante->planoTrabalho;
if (Storage::disk()->exists($planoAtual->nome)) {
Storage::delete($planoAtual->nome);
}
$planoAtual->delete();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
// Excluidos
$participantesExcluidos = $participantes->diff($participantesPermanecem);
foreach ($participantesExcluidos as $participante) {
$plano = $participante->planoTrabalho;
if ($plano)
$plano->delete();
$participante->delete();
}
return true;
}
if ($request->emailParticipante != null) {
foreach ($request->emailParticipante as $key => $email) {
$userParticipante = User::where('email', $email)->first();
$participante = new Participante();
if ($userParticipante == null) {
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $email;
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$usuario = User::where('email', $email)->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$subject = "Participante de Projeto";
Mail::to($email)->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
if ($request->anexoPlanoTrabalho[$key]) {
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
$subject = "Participante de Projeto";
$time = Carbon::today('America/Recife');
$time = $time->isoFormat('às H:mm, dddd, D/M/YYYY');
Mail::to($email)
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
// if($request->nomePlanoTrabalho[$key] != null){
// $usuario = User::where('email', $email)->first();
// $participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
// $path = 'trabalhos/' . $edital->id . '/' . $projeto->id .'/';
// $nome = $request->nomePlanoTrabalho[$key] .".pdf";
// $file = $request->anexoPlanoTrabalho[$key];
// Storage::putFileAs($path, $file, $nome);
// $agora = now();
// $arquivo = new Arquivo();
// $arquivo->titulo = $request->nomePlanoTrabalho[$key];
// $arquivo->nome = $path . $nome;
// $arquivo->trabalhoId = $projeto->id;
// $arquivo->data = $agora;
// $arquivo->participanteId = $participante->id;
// $arquivo->versaoFinal = true;
// $arquivo->save();
// }
}
}
return true;
}
public function atualizar(Request $request, $id)
{
$edital = Evento::find($request->editalId);
$hoje = now();
$projeto = Trabalho::find($id);
if (!($edital->inicioSubmissao < $hoje && $edital->fimSubmissao >= $hoje)) {
return redirect()->route('inicial')->with(['error' => 0, 'mensagem' => 'As submissões para o edital ' . $edital->titulo . ' foram encerradas.']);
}
$projeto = $this->atribuirDados($request, $edital, $projeto);
$projeto->update();
// dd($request->all());
// Salvando participantes
$this->salvarParticipantes($request, $edital, $projeto, true);
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto atualizado com sucesso!']);
}
public function telaTrocaPart(Request $request)
{
$projeto = Trabalho::find($request->projeto_id);
$edital = Evento::find($projeto->evento_id);
if(Auth::user()->id != $projeto->proponente->user->id){
return redirect()->back();
}
$participantes = $projeto->participantes;
$substituicoesProjeto = Substituicao::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get();
$desligamentosProjeto = Desligamento::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get();
return view('administrador.substituirParticipante')->with(['projeto' => $projeto,
'edital' => $edital,
'participantes' => $participantes,
'substituicoesProjeto' => $substituicoesProjeto,
'estados' => $this->estados,
'enum_turno' => Participante::ENUM_TURNO,
'desligamentosProjeto' => $desligamentosProjeto,
]);
}
public function trocaParticipante(Request $request)
{
try {
DB::beginTransaction();
$trabalho = Trabalho::find($request->projetoId);
$evento = Evento::find($request->editalId);
$participanteSubstituido = Participante::where('id', $request->participanteId)->first();
$planoAntigo = Arquivo::where('id', $participanteSubstituido->planoTrabalho->id)->first();
$passwordTemporario = Str::random(8);
$data['name'] = $request->name;
$data['email'] = $request->email;
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento;
$data['data_entrada'] = $request->data_entrada;
$data['cpf'] = $request->cpf;
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg;
$data['celular'] = $request->celular;
$data['linkLattes'] = $request->linkLattes;
$data['cep'] = $request->cep;
$data['uf'] = $request->uf;
$data['cidade'] = $request->cidade;
$data['rua'] = $request->rua;
$data['numero'] = $request->numero;
$data['bairro'] = $request->bairro;
$data['complemento'] = $request->complemento;
if ($request->instituicao != "Outra") {
$data['instituicao'] = $request->instituicao;
} else {
$data['instituicao'] = $request->outrainstituicao;
}
$data['total_periodos'] = $request->total_periodos;
if ($request->curso != "Outro") {
$data['curso'] = $request->curso;
} else {
$data['curso'] = $request->outrocurso;
}
$data['turno'] = $request->turno;
$data['periodo_atual'] = $request->periodo_atual;
$data['ordem_prioridade'] = $request->ordem_prioridade;
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso;
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho;
if ($request->substituirApenasPlanoCheck == 'check') {
$substituicao = new Substituicao();
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participanteSubstituido->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'TrocarPlano';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participanteSubstituido->id;
$substituicao->planoSubstituto_id = $arquivo->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->save();
}
} else {
//$participanteSubstituido->delete();
$substituicao = new Substituicao();
$substituicao->observacao = $request->textObservacao;
if ($participanteSubstituido->data_entrada > $request->data_entrada) {
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Escolha uma data de entrada posterior a entrada do discente substituído"]);
}
$participanteSubstituido->data_saida = $request->data_entrada;
\App\Validator\CpfValidator::validate($request->all());
$user = User::where('email', $data['email'])->first();
if (!$user) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}
$participante = $user->participantes->where('trabalho_id', $trabalho->id)->first();
if (!$participante) {
$participante = Participante::create($data);
$participanteSubstituido->save();
}
$pasta = 'participantes/' . $participante->id;
$participante->anexoTermoCompromisso = Storage::putFileAs($pasta, $request->anexoTermoCompromisso, "Termo_de_Compromisso.pdf");
$participante->anexoComprovanteMatricula = Storage::putFileAs($pasta, $request->anexoComprovanteMatricula, "Comprovante_de_Matricula.pdf");
$participante->anexoLattes = Storage::putFileAs($pasta, $request->anexoCurriculoLattes, "Curriculo_Lattes.pdf");
if ($request->anexoAutorizacaoPais != null) {
$participante->anexoAutorizacaoPais = Storage::putFileAs($pasta, $request->anexoAutorizacaoPais, "Autorização_dos_Pais.pdf");
}
if ($request->anexoComprovanteBancario != null) {
$participante->anexoComprovanteBancario = Storage::putFileAs($pasta, $request->anexoComprovanteBancario, "Comprovante_Bancario." . $request->file('anexoComprovanteBancario')->getClientOriginalExtension());
}
$user->participantes()->save($participante);
//$trabalho->participantes()->save($participante);
if ($request->manterPlanoCheck == 'check') {
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'ManterPlano';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participante->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->planoSubstituto_id = $planoAntigo->id;
$planoAntigo->participanteId = $participante->id;
$substituicao->save();
$planoAntigo->save();
} else {
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'Completa';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participante->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->planoSubstituto_id = $arquivo->id;
$substituicao->save();
}
}
}
$evento->trabalhos()->save($trabalho);
$trabalho->save();
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 2,
]);
$notificacao->save();
DB::commit();
Mail::to($evento->coordenadorComissao->user->email)->send(new SolicitacaoSubstituicao($evento, $trabalho,'',$substituicao->tipo,$substituicao->status));
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['sucesso' => 'Pedido de substituição enviado com sucesso!']);
} catch (\App\Validator\ValidationException $th) {
DB::rollback();
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Cpf inválido"]);
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => $th->getMessage()]);
}
}
public function telaShowSubst(Request $request)
{
$trabalho = Trabalho::find($request->trabalho_id);
$substituicoesProjeto = Substituicao::where('trabalho_id', $trabalho->id)->orderBy('created_at', 'DESC')->get();
$substituicoesPendentes = Substituicao::where('trabalho_id', $trabalho->id)->where('status', 'Em Aguardo')->orderBy('created_at', 'DESC')->get();
return view('administrador.analiseSubstituicoes')->with(['substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,
'trabalho' => $trabalho]);
}
public function aprovarSubstituicao(Request $request)
{
$substituicao = Substituicao::find($request->substituicaoID);
$trabalho = Trabalho::find($substituicao->trabalho->id);
if ($request->aprovar == 'true') {
try {
if ($substituicao->tipo == 'TrocarPlano') {
if(!empty($substituicao->participanteSubstituido)){
$substituicao->participanteSubstituido->planoTrabalho()->where('id', '!=', $substituicao->planoSubstituto->id)->delete();
}
$substituicao->status = 'Finalizada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} else {
if(!empty($substituicao->participanteSubstituido)){
$substituicao->participanteSubstituido->delete();
}
$trabalho->participantes()->save($substituicao->participanteSubstituto);
$substituicao->status = 'Finalizada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
}
Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status));
return redirect()->back()->with(['sucesso' => 'Substituição concluída!']);
} catch (\Throwable $th) {
return redirect()->back()->with(['erro' => $th->getMessage()]);
}
} else {
try {
if ($substituicao->tipo == 'TrocarPlano') {
$substituicao->participanteSubstituido->planoTrabalho()->where('id', '=', $substituicao->planoSubstituto->id)->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} elseif ($substituicao->tipo == 'ManterPlano') {
$substituicao->planoSubstituto->participanteId = $substituicao->participanteSubstituido->id;
$substituicao->planoSubstituto->save();
$substituicao->participanteSubstituto->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} else {
$substituicao->participanteSubstituto->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
}
$trabalho = Trabalho::find($substituicao->trabalho->id);
Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status));
return redirect()->back()->with(['sucesso' => 'Substituição cancelada com sucesso!']);
} catch (\Throwable $th) {
return redirect()->back()->with(['erro' => $th->getMessage()]);
}
}
}
public function aprovarProposta(Request $request, $id)
{
$trabalho = Trabalho::find($id);
$trabalho->status = $request->statusProp;
$trabalho->comentario = $request->comentario;
$trabalho->save();
return redirect()->back()->with(['sucesso' => 'Proposta avaliada com sucesso']);
}
}
\ No newline at end of file
......@@ -98,14 +98,14 @@ class StoreTrabalho extends FormRequest
}
$rules['linkLattesEstudante'] = ['required', 'string'];
$rules['anexoDecisaoCONSU'] = [Rule::requiredIf($evento->consu), 'mimes:pdf'];
if($evento->tipo!="CONTINUO"){
$rules['anexoDecisaoCONSU'] = [Rule::requiredIf($evento->consu), 'mimes:pdf'];
$rules['anexoProjeto'] = ['required', 'mimes:pdf'];
} else {
$rules['anexo_SIPAC'] = ['required', 'mimes:pdf'];
}
//dd($rules, $evento);
return $rules;
}
......@@ -143,6 +143,12 @@ class StoreTrabalho extends FormRequest
'media_do_curso.*.required' => 'O :attribute é obrigatório',
'anexoPlanoTrabalho.*.required' => 'O :attribute é obrigatório',
'nomePlanoTrabalho.*.required' => 'O :attribute é obrigatório',
'area_id' => "area id",
'area_tematica_id' => 'area tematica id',
'ods.*' => 'Deve ser selecionada pelo menos uma ODS',
'linkLattesEstudante.*' => "O link do currículo lattes do estudante é obrigatório",
'anexoDecisaoCONSU.*' => 'anexoDecisaoCONSU',
'anexo_SIPAC.*' => 'anexo_SIPAC'
];
}
}
\ No newline at end of file
......@@ -122,7 +122,7 @@
@endif
</div>
@if($evento->tipo != "PIBEX")
@if($evento->tipo != "PIBEX" && $evento->tipo != "CONTINUO")
<div class="col-md-12">
<br>
<b style="color: #4D4D4D;">Grupo de Pesquisa: </b>
......
......@@ -16,6 +16,9 @@
</div>
@if($errors->any())
<div class="alert alert-danger">
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
Verifique se todos os campos obrigatórios/Dados do discente foram preenchidos!
</div>
@endif
......
......@@ -16,6 +16,9 @@
<hr style="border-top: 1px solid#1492E6">
<div class="row" id="integrante">
</div>
@include('evento.formulario.participantes')
</div>
</div>
</div>
......@@ -149,7 +152,7 @@
if(data == 'inexistente' || $('#cpf_consulta').val() == ""){
exibirModalUsuarioInexistente();
}else {
exibirUsuarioAdicionado();
exibirUsuarioAdicionado(data);
$('#integrante').append(`
<div id="integrante${data[0]['id']}" class="col-md-6">
<div class="row">
......@@ -176,8 +179,27 @@
$('#aviso-modal-usuario-nao-existe').modal('show');
}
function exibirUsuarioAdicionado() {
$('#aviso-modal-usuario-adicionado').modal('show');;
let modal_id = 0;
function exibirUsuarioAdicionado(data) {
$('#modalIntegrante').modal('hide');
document.getElementById(`nome${modal_id}`).value = data[0]['name'];
document.getElementById(`email${modal_id}`).value = data[0]['email'];
document.getElementById(`data_de_nascimento${modal_id}`).value = (new Date(data[2]['data_de_nascimento'])).toLocaleDateString();
document.getElementById(`cpf${modal_id}`).value = data[0]['cpf'];
document.getElementById(`rg${modal_id}`).value = data[2]['rg'];
document.getElementById(`celular${modal_id}`).value = data[0]['celular'];
document.getElementById(`cep${modal_id}`).value = data[3]['cep'];
document.getElementById(`uf${modal_id}`).value = data[3]['uf'];
document.getElementById(`cidade${modal_id}`).value = data[3]['cidade'];
document.getElementById(`bairro${modal_id}`).value = data[3]['bairro'];
document.getElementById(`rua${modal_id}`).value = data[3]['rua'];
document.getElementById(`numero${modal_id}`).value = data[3]['numero'];
document.getElementById(`complemento${modal_id}`).value = data[3]['complemento'];
document.getElementById(`instituicao[${modal_id}]`).value = data[0]['instituicao'];
document.getElementById(`curso[${modal_id}]`).value = data[2]['curso'];
$(`#exampleModal${modal_id}`).modal('show');
console.log(data);
}
</script>
\ No newline at end of file
<!-- Participantes -->
@php $cont= 0; @endphp
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<!-- <div class="col-md-12" style="margin-top: 20px"> -->
<!-- <div style="border-radius: 5px"> -->
<!-- <div style="padding-top: 0.2rem;"> -->
<!-- <div class="container"> -->
<!-- <div class="form-row mt-3">
<div class="col-md-11">
<h5 style="color: #234B8B; font-weight: bold">Dados do(s) Discente(s)</h5>
<strong>
......@@ -18,14 +18,14 @@
<img class="" src="{{asset('img/icons/add.ico')}}" style="width:30px" alt="">
</a>
</div>
</div>
</div> -->
<hr style="border-top: 1px solid#1492E6">
<div class="row-cols-sm-12 justify-content-start">
<ol style="counter-reset: item;list-style-type: none; margin-left:-20px; margin-right:20px; margin-top:10px">
<li id="item">
<div style="margin-bottom:15px">
<div id="participante" class="row">
@for($i = 0; $i < $edital->numParticipantes; $i++)
<!-- @for($i = 0; $i < $edital->numParticipantes; $i++) -->
<div @if(!isset(old('marcado')[$i])) hidden @endif class="form-row mb-1 col-md-6" style="margin-top: 10px" id="part{{$i}}">
<div class="col-sm-2" style="display: flex; align-items: center;">
......@@ -48,7 +48,7 @@
</div>
</div>
<div class="modal fade" id="exampleModal{{$i}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal fade" id="exampleModal{{$i}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" style="overflow:auto;">
<div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content">
<div class="modal-header">
......@@ -98,7 +98,7 @@
</div>
<div class="col-6">
@component('componentes.input', ['label' => 'Data de nascimento'])
<input type="date" class="form-control" value="{{old('data_de_nascimento')[$i] ?? "" }}" name="data_de_nascimento[{{$i}}]" placeholder="Data de nascimento" />
<input type="text" class="form-control" value="{{old('data_de_nascimento')[$i] ?? "" }}" name="data_de_nascimento[{{$i}}]" placeholder="Data de nascimento" id="data_de_nascimento{{$i}}" />
@error('data_de_nascimento.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block">
<strong>{{ $message }}</strong>
......@@ -108,7 +108,7 @@
</div>
<div class="col-6">
@component('componentes.input', ['label' => 'CPF'])
<input type="text" class="form-control cpf" value="{{old('cpf')[$i] ?? "" }}" name="cpf[{{$i}}]" placeholder="CPF" />
<input type="text" class="form-control cpf" value="{{old('cpf')[$i] ?? "" }}" name="cpf[{{$i}}]" placeholder="CPF" id="cpf{{$i}}"/>
@error('cpf.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block">
......@@ -119,7 +119,7 @@
</div>
<div class="col-6">
@component('componentes.input', ['label' => 'RG'])
<input type="text" class="form-control rg" min="9" maxlength="9" value="{{old('rg')[$i] ?? "" }}" name="rg[{{$i}}]" placeholder="RG" />
<input type="text" class="form-control rg" min="9" maxlength="9" value="{{old('rg')[$i] ?? "" }}" name="rg[{{$i}}]" placeholder="RG" id="rg{{$i}}"/>
@error('rg.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block">
<strong>{{ $message }}</strong>
......@@ -129,7 +129,7 @@
</div>
<div class="col-6">
@component('componentes.input', ['label' => 'Celular'])
<input type="tel" class="form-control celular" value="{{old('celular')[$i] ?? "" }}" name="celular[{{$i}}]" placeholder="Celular" />
<input type="tel" class="form-control celular" value="{{old('celular')[$i] ?? "" }}" name="celular[{{$i}}]" placeholder="Celular" id="celular{{$i}}"/>
@error('celular.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block">
<strong>{{ $message }}</strong>
......@@ -142,7 +142,7 @@
</div>
<div class="col-6">
@component('componentes.input', ['label' => 'CEP'])
<input name="cep[{{$i}}]" type="text" id="cep{{$i}}" value="{{ old('cep')[$i] ?? ''}}" class="form-control cep" onblur="pesquisacep(this.value, {{$i}})" />
<input name="cep[{{$i}}]" type="text" id="cep{{$i}}" value="{{ old('cep')[$i] ?? ''}}" class="form-control cep" onblur="pesquisacep(this.value, {{$i}})" id="cep{{$i}}" />
@error('cep.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block"><strong>{{ $message }}</strong></span>
@enderror
......@@ -160,7 +160,7 @@
<div class="col-6">
@component('componentes.input', ['label' => 'Cidade'])
<input name="cidade[{{$i}}]" type="text" id="cidade{{$i}}" class="form-control" value="{{ old('cidade')[$i] ?? '' }}" />
<input name="cidade[{{$i}}]" type="text" id="cidade{{$i}}" class="form-control" value="{{ old('cidade')[$i] ?? '' }}" id="cidade{{$i}}"/>
@error('cidade.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block"><strong>{{ $message }}</strong></span>
@enderror
......@@ -169,7 +169,7 @@
<div class="col-6">
@component('componentes.input', ['label' => 'Bairro'])
<input name="bairro[{{$i}}]" type="text" id="bairro{{$i}}" class="form-control" value="{{ old('bairro')[$i] ?? '' }}" />
<input name="bairro[{{$i}}]" type="text" id="bairro{{$i}}" class="form-control" value="{{ old('bairro')[$i] ?? '' }}" id="bairro{{$i}}"/>
@error('bairro.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block"><strong>{{ $message }}</strong></span>
@enderror
......@@ -178,7 +178,7 @@
<div class="col-6">
@component('componentes.input', ['label' => 'Rua'])
<input name="rua[{{$i}}]" type="text" id="rua{{$i}}" class="form-control" value="{{ old('rua')[$i] ?? '' }}" />
<input name="rua[{{$i}}]" type="text" id="rua{{$i}}" class="form-control" value="{{ old('rua')[$i] ?? '' }}" id="rua{{$i}}"/>
@error('rua.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block"><strong>{{ $message }}</strong></span>
@enderror
......@@ -187,7 +187,7 @@
<div class="col-6">
@component('componentes.input', ['label' => 'Número'])
<input name="numero[{{$i}}]" type="text" class="form-control" value="{{ old('numero')[$i] ?? '' }}" />
<input name="numero[{{$i}}]" type="text" class="form-control" value="{{ old('numero')[$i] ?? '' }}" id="numero{{$i}}"/>
@error('numero.'.$i)
<span class="invalid-feedback" role="alert" style="overflow: visible; display:block"><strong>{{ $message }}</strong></span>
@enderror
......@@ -216,7 +216,7 @@
</div>
<div class="col-6">
@component('componentes.input', ['label' => 'Instituição de Ensino'])
<select style="display: inline" onchange="showInstituicao(this)" class="form-control" name="instituicao[{{$i}}]">
<select style="display: inline" onchange="showInstituicao(this)" class="form-control" name="instituicao[{{$i}}]" id="instituicao[{{$i}}]">
<option value="" disabled selected hidden>-- Instituição --</option>
<option @if((old('instituicao')[$i] ?? "" )=='UFAPE' )) selected @endif value="UFAPE">Universidade Federal do Agreste de Pernambuco - UFAPE</option>
<option @if((old('instituicao')[$i] ?? "" )=='Outra' )) selected @endif value="Outra">Outra</option>
......@@ -240,7 +240,7 @@
</div>
<div class="col-6">
@component('componentes.input', ['label' => 'Curso'])
<select style="display: inline" class="form-control" name="curso[{{$i}}]" onchange="showCurso(this)">
<select style="display: inline" class="form-control" name="curso[{{$i}}]" onchange="showCurso(this)" id="curso[{{$i}}]">
<option value="" disabled selected hidden>-- Selecione uma opção--</option>
<option @if((old('curso')[$i] ?? "" )=='Bacharelado em Agronomia' ) selected @endif value="Bacharelado em Agronomia">Bacharelado em Agronomia</option>
<option @if((old('curso')[$i] ?? "" )=='Bacharelado em Ciência da Computação' ) selected @endif value="Bacharelado em Ciência da Computação">Bacharelado em Ciência da Computação</option>
......@@ -399,24 +399,20 @@
</div>
@endfor
<!-- @endfor -->
</div>
</li>
</ol>
</div>
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<script>
<!-- </div> -->
<!-- </div> -->
<!-- </div> -->
<!-- </div> -->
</script>
<!-- Adicionando Javascript -->
<script>
function limpa_formulário_cep(id) {
......
......@@ -18,11 +18,7 @@
@include('evento.formulario.proponente')
@if ($edital->numParticipantes != 0)
@include('evento.formulario.participantes')
@endif
@if($edital->natureza_id == 3)
@include('evento.formulario.integrantes')
@include('evento.formulario.integrantes')
@endif
@include('evento.formulario.anexos')
......@@ -217,7 +213,8 @@
}
document.getElementById("checkB"+id).checked = true;
$("#atribuir1").attr('data-target','#exampleModal'+(id+1));
//$("#atribuir1").attr('data-target','#modalIntegrante'+(id+1));
modal_id = id+1;
document.getElementById("part"+id).removeAttribute("hidden");
document.getElementById("exampleModal"+id).modal('hide');
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment