diff --git a/app/DocumentacaoComplementar.php b/app/DocumentacaoComplementar.php new file mode 100644 index 0000000000000000000000000000000000000000..5828f91bb156a816404076d0776a3647323ca5cb --- /dev/null +++ b/app/DocumentacaoComplementar.php @@ -0,0 +1,22 @@ +belongsTo(Participante::class, 'participante_id', 'id'); + } +} diff --git a/app/Evento.php b/app/Evento.php index 24ce692cc03da2281059e0b275ff80408e5b08d2..6724cead2789545c6203062b89eae8191b0b9e7d 100755 --- a/app/Evento.php +++ b/app/Evento.php @@ -16,7 +16,8 @@ class Evento extends Model 'inicioSubmissao', 'fimSubmissao', 'inicioRevisao', 'fimRevisao', 'resultado_final','resultado_preliminar', 'coordenadorId', 'numMaxTrabalhos', 'numMaxCoautores', 'hasResumo', 'criador_id', 'numParticipantes', - 'dt_inicioRelatorioParcial', 'dt_fimRelatorioParcial', 'dt_inicioRelatorioFinal', 'dt_fimRelatorioFinal' + 'dt_inicioRelatorioParcial', 'dt_fimRelatorioParcial', 'dt_inicioRelatorioFinal', 'dt_fimRelatorioFinal', + 'formAvaliacaoExterno', 'formAvaliacaoInterno' ]; public function endereco(){ diff --git a/app/Http/Controllers/AdministradorController.php b/app/Http/Controllers/AdministradorController.php index 8a5f37c844f88ee6e6149411910645dd89058b14..736cdce2bb08fcb82064108cd0dcd35551ae8b50 100755 --- a/app/Http/Controllers/AdministradorController.php +++ b/app/Http/Controllers/AdministradorController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Notificacao; use App\Substituicao; use Illuminate\Http\Request; use App\Administrador; @@ -16,6 +17,7 @@ use App\GrandeArea; use App\Natureza; use App\Trabalho; use App\FuncaoParticipantes; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Str; use Illuminate\Support\Facades\Hash; use App\Evento; @@ -26,6 +28,9 @@ use Illuminate\Support\Facades\Mail; use App\Mail\EventoCriado; use Illuminate\Support\Facades\Storage; use App\Http\Controllers\Response; +use Illuminate\Pagination\Paginator; +use Illuminate\Support\Collection; +use Illuminate\Pagination\LengthAwarePaginator; class AdministradorController extends Controller { @@ -54,9 +59,9 @@ class AdministradorController extends Controller public function pareceres(Request $request){ $evento = Evento::where('id', $request->evento_id)->first(); - $trabalhosSubmetidos = $evento->trabalhos->where('status', 'submetido'); - $trabalhosAvaliados = $evento->trabalhos->Where('status', 'avaliado'); - $trabalhos = $trabalhosSubmetidos->merge($trabalhosAvaliados); + $trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho'); + // $trabalhosAvaliados = $evento->trabalhos->Where('status', 'avaliado'); + // $trabalhos = $trabalhosSubmetidos->merge($trabalhosAvaliados); return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]); } @@ -68,9 +73,12 @@ class AdministradorController extends Controller $trabalhosAprovados = $evento->trabalhos->Where('status', 'aprovado'); $trabalhosReprovados = $evento->trabalhos->Where('status', 'reprovado'); $trabalhosCorrigidos = $evento->trabalhos->Where('status', 'corrigido'); - $trabalhos = $trabalhosSubmetidos + $trabalhos = $this->paginate($trabalhosSubmetidos); + $trabalhos = $this->paginate($trabalhosSubmetidos ->merge($trabalhosAvaliados)->merge($trabalhosAprovados) - ->merge($trabalhosReprovados)->merge($trabalhosCorrigidos)->sortBy('titulo'); + ->merge($trabalhosReprovados)->merge($trabalhosCorrigidos)->sortBy('titulo')) + ->withPath('/usuarios/analisarProjetos?evento_id='.$evento->id); + $funcaoParticipantes = FuncaoParticipantes::all(); // $participantes = Participante::where('trabalho_id', $id)->get(); @@ -80,6 +88,15 @@ class AdministradorController extends Controller return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes]); } + // Utilizado para paginação de Collection + public function paginate($items, $perPage = 5, $page = null, $options = []) + { + + $page = $page ?: (Paginator::resolveCurrentPage() ?: 1); + $items = $items instanceof Collection ? $items : Collection::make($items); + return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options); + } + public function analisarProposta(Request $request){ $trabalho = Trabalho::where('id',$request->id)->first(); @@ -521,6 +538,18 @@ class AdministradorController extends Controller $evento->avaliadors()->syncWithoutDetaching($avaliadores); $trabalho->save(); + foreach ($avaliadores as $avaliador){ + $notificacao = Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $avaliador->user_id, + 'trabalho_id' => $request->trabalho_id, + 'lido' => false, + 'tipo' => 5, + ]); + $notificacao->save(); + } + + return redirect()->back(); } diff --git a/app/Http/Controllers/ArquivoController.php b/app/Http/Controllers/ArquivoController.php index 190176098f27934508de8be8c32c8a97679c5b25..58ad612305649e526246a2f2240931d824f13709 100755 --- a/app/Http/Controllers/ArquivoController.php +++ b/app/Http/Controllers/ArquivoController.php @@ -3,10 +3,17 @@ namespace App\Http\Controllers; use App\Arquivo; +use App\Notificacao; +use App\User; +use Auth; +use Illuminate\Support\Facades\Notification; use Illuminate\Support\Facades\Storage; use Illuminate\Http\Request; use mysql_xdevapi\Exception; use Carbon\Carbon; +use App\Notifications\RelatorioRecebimentoNotification; +use App\Administrador; + class ArquivoController extends Controller { @@ -109,12 +116,67 @@ class ArquivoController extends Controller $pasta = 'planoTrabalho/' . $arquivo->id; if($request->relatorioParcial != null) { $arquivo->relatorioParcial = Storage::putFileAs($pasta, $request->relatorioParcial, "RelatorioParcial.pdf"); + //Coordenador + $userTemp = User::find($arquivo->trabalho->evento->coordenadorComissao->user_id); + $notificacao = Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $arquivo->trabalho->evento->coordenadorComissao->user_id, + 'trabalho_id' => $arquivo->trabalho->id, + 'lido' => false, + 'tipo' => 3, + ]); + $notificacao->save(); + Notification::send($userTemp, new RelatorioRecebimentoNotification($arquivo->trabalho->id,$userTemp, + $arquivo->trabalho->evento->nome,$arquivo->trabalho->titulo,'Parcial')); + //Admins + $admins = Administrador::all(); + foreach ($admins as $admin) { + $userTemp = User::find($admin->user_id); + $notificacao = Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $admin->user_id, + 'trabalho_id' => $arquivo->trabalho->id, + 'lido' => false, + 'tipo' => 3, + ]); + $notificacao->save(); + Notification::send($userTemp, new RelatorioRecebimentoNotification($arquivo->trabalho->id,$userTemp, + $arquivo->trabalho->evento->nome,$arquivo->trabalho->titulo,'Parcial')); + } + } if($request->relatorioFinal != null) { $arquivo->relatorioFinal = Storage::putFileAs($pasta, $request->relatorioFinal, "RelatorioFinal.pdf"); + //Coordenador + $userTemp = User::find($arquivo->trabalho->evento->coordenadorComissao->user_id); + $notificacao = Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $arquivo->trabalho->evento->coordenadorComissao->user_id, + 'trabalho_id' => $arquivo->trabalho->id, + 'lido' => false, + 'tipo' => 4, + ]); + $notificacao->save(); + Notification::send($userTemp, new RelatorioRecebimentoNotification($arquivo->trabalho->id,$userTemp, + $arquivo->trabalho->evento->nome,$arquivo->trabalho->titulo,'Final')); + //Admins + $admins = Administrador::all(); + foreach ($admins as $admin) { + $userTemp = User::find($admin->user_id); + $notificacao = Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $admin->user_id, + 'trabalho_id' => $arquivo->trabalho->id, + 'lido' => false, + 'tipo' => 4, + ]); + $notificacao->save(); + Notification::send($userTemp, new RelatorioRecebimentoNotification($arquivo->trabalho->id,$userTemp, + $arquivo->trabalho->evento->nome,$arquivo->trabalho->titulo,'Final')); + } } $arquivo->save(); - return redirect(route('planos.listar', ['id' => $request->projId])); + return redirect(route('planos.listar', ['id' => $request->projId]))->with(['sucesso' => "Relatório enviado com sucesso"]); }catch (Exception $th){ } diff --git a/app/Http/Controllers/AvaliadorController.php b/app/Http/Controllers/AvaliadorController.php index 801c765250589479a272ca81946e1395bdc7f353..53166d0df2e5250f75f6d897d77abc268a1a8873 100755 --- a/app/Http/Controllers/AvaliadorController.php +++ b/app/Http/Controllers/AvaliadorController.php @@ -126,9 +126,9 @@ class AvaliadorController extends Controller $statusParecer = "NAO-RECOMENDADO"; if( $request->anexoLinkLattes=='aceito' && $request->anexoGrupoPesquisa=='aceito' && $request->anexoProjeto=='aceito' && - $request->anexoConsu=='aceito' && $request->anexoPlanilha=='aceito' && $request->anexoLattesCoordenador=='aceito' && - $request->anexoGrupoPesquisa=='aceito' && $request->anexoComiteEtica=='aceito' && $request->anexoJustificativa=='aceito' && - $request->anexoPlano=='aceito'){ + $request->anexoConsu=='aceito' && $request->anexoLattesCoordenador=='aceito' && $request->anexoPlano=='aceito' && + $request->anexoGrupoPesquisa=='aceito' && $request->anexoComiteEtica=='aceito' && $request->anexoJustificativa=='aceito' + ){ $statusParecer = "RECOMENDADO"; } if($parecerInterno == null) { @@ -145,6 +145,7 @@ class AvaliadorController extends Controller 'statusJustificativaAutorizacaoEtica' => $request->anexoJustificativa, 'statusPlanoTrabalho' => $request->anexoPlano, 'statusParecer' => $statusParecer, + 'comentario' => $request->comentario, 'trabalho_id' => $request->trabalho_id, 'avaliador_id' => $request->avaliador_id, ]); @@ -160,6 +161,7 @@ class AvaliadorController extends Controller $parecerInterno->statusAnexoAtuorizacaoComiteEtica = $request->anexoComiteEtica; $parecerInterno->statusJustificativaAutorizacaoEtica = $request->anexoJustificativa; $parecerInterno->statusPlanoTrabalho = $request->anexoPlano; + $parecerInterno->comentario = $request->comentario; $parecerInterno->statusParecer = $statusParecer; $parecerInterno->update(); } diff --git a/app/Http/Controllers/DocumentacaoComplementarController.php b/app/Http/Controllers/DocumentacaoComplementarController.php new file mode 100644 index 0000000000000000000000000000000000000000..7c3687beaf973c1b7888bceab7027ddf97aacc74 --- /dev/null +++ b/app/Http/Controllers/DocumentacaoComplementarController.php @@ -0,0 +1,38 @@ +docId != null){ + $docComp = DocumentacaoComplementar::find($request->docId); + }else{ + $docComp = new DocumentacaoComplementar; + $docComp->save(); + } + + $pasta = 'docComplementar/' . $docComp->id; + + $docComp->termoCompromisso = Storage::putFileAs($pasta, $request->termoCompromisso, "Termo De Compromisso.pdf"); + $docComp->comprovanteMatricula = Storage::putFileAs($pasta, $request->comprovanteMatricula, "Comprovante De Matricula.pdf"); + $docComp->pdfLattes = Storage::putFileAs($pasta, $request->pdfLattes, "Lattes.pdf"); + $docComp->termoCompromisso = Storage::putFileAs($pasta, $request->termoCompromisso, "TermoDeCompromisso.pdf"); + $docComp->participante_id = $request->partcipanteId; + $docComp->linkLattes = $request->linkLattes; + + $docComp->update(); + + + return redirect()->back()->with(['sucesso' => "Documentação complementar enviada com sucesso"]); + + } +} diff --git a/app/Http/Controllers/EventoController.php b/app/Http/Controllers/EventoController.php index e5c214a11e3518d368576d276a7c1dfe15b5c065..26df2ed80014d09a1855b5dad3b6bf8879f63a9a 100755 --- a/app/Http/Controllers/EventoController.php +++ b/app/Http/Controllers/EventoController.php @@ -32,18 +32,18 @@ class EventoController extends Controller public function index(Request $request) { if($request->buscar == null){ - $eventos = Evento::all()->sortBy('nome'); - // $comissaoEvento = ComissaoEvento::all(); - // $eventos = Evento::where('coordenadorId', Auth::user()->id)->get(); - $hoje = Carbon::today('America/Recife'); - $hoje = $hoje->toDateString(); + $eventos = Evento::all()->sortBy('nome'); + // $comissaoEvento = ComissaoEvento::all(); + // $eventos = Evento::where('coordenadorId', Auth::user()->id)->get(); + $hoje = Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); - return view('coordenador.home',['eventos'=>$eventos, 'hoje'=>$hoje, 'palavra'=>'', 'flag'=>'false']); + return view('coordenador.home',['eventos'=>$eventos, 'hoje'=>$hoje, 'palavra'=>'', 'flag'=>'false']); }else{ - $eventos = Evento::where('nome','ilike','%'.$request->buscar.'%')->get(); - $hoje = Carbon::today('America/Recife'); - $hoje = $hoje->toDateString(); - return view('coordenador.home',['eventos'=>$eventos, 'hoje'=>$hoje, 'palavra'=>$request->buscar, 'flag'=>'true']); + $eventos = Evento::where('nome','ilike','%'.$request->buscar.'%')->get(); + $hoje = Carbon::today('America/Recife'); + $hoje = $hoje->toDateString(); + return view('coordenador.home',['eventos'=>$eventos, 'hoje'=>$hoje, 'palavra'=>$request->buscar, 'flag'=>'true']); } } @@ -90,9 +90,9 @@ class EventoController extends Controller //dd($user_id); if(isset($request->modeloDocumento)){ - $request->validate([ - 'modeloDocumento' => ['file', 'max:2048', new ExcelRule($request->file('modeloDocumento'))], - ]); + $request->validate([ + 'modeloDocumento' => ['file', 'max:2048', new ExcelRule($request->file('modeloDocumento'))], + ]); } //--Salvando os anexos da submissão temporariamente @@ -100,62 +100,68 @@ class EventoController extends Controller // validar datas nulas antes, pois pode gerar um bug if( - $request->inicioSubmissao == null || - $request->fimSubmissao == null || - $request->inicioRevisao == null || - $request->fimRevisao == null || - $request->resultado == null + $request->inicioSubmissao == null || + $request->fimSubmissao == null || + $request->inicioRevisao == null || + $request->fimRevisao == null || + $request->resultado == null ){ - $validatedData = $request->validate([ - 'nome' => ['required', 'string'], - 'descricao' => ['required', 'string'], - 'tipo' => ['required', 'string'], - 'natureza' => ['required'], - 'coordenador_id' => ['required'], - 'numParticipantes' => ['required'], - 'inicioSubmissao' => ['required', 'date'], - 'fimSubmissao' => ['required', 'date'], - 'inicioRevisao' => ['required', 'date'], - 'fimRevisao' => ['required', 'date'], - 'inicio_recurso' => ['required', 'date'], - 'fim_recurso' => ['required', 'date'], - 'resultado_final' => ['required', 'date'], - 'resultado_preliminar'=> ['required', 'date'], - 'dt_inicioRelatorioParcial' => ['required', 'date'], - 'dt_fimRelatorioParcial' => ['required', 'date'], - 'dt_inicioRelatorioFinal' => ['required', 'date'], - 'dt_fimRelatorioFinal' => ['required', 'date'], - 'pdfEdital' => [($request->pdfEditalPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'], - //'modeloDocumento' => [], - ]); + $validatedData = $request->validate([ + 'nome' => ['required', 'string'], + 'descricao' => ['required', 'string'], + 'tipo' => ['required', 'string'], + 'natureza' => ['required'], + 'coordenador_id' => ['required'], + 'numParticipantes' => ['required'], + 'inicioSubmissao' => ['required', 'date'], + 'fimSubmissao' => ['required', 'date'], + 'inicioRevisao' => ['required', 'date'], + 'fimRevisao' => ['required', 'date'], + 'inicio_recurso' => ['required', 'date'], + 'fim_recurso' => ['required', 'date'], + 'resultado_final' => ['required', 'date'], + 'resultado_preliminar'=> ['required', 'date'], + 'dt_inicioRelatorioParcial' => ['required', 'date'], + 'dt_fimRelatorioParcial' => ['required', 'date'], + 'dt_inicioRelatorioFinal' => ['required', 'date'], + 'dt_fimRelatorioFinal' => ['required', 'date'], + 'pdfFormAvalExterno' => [($request->pdfFormAvalExternoPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'], + 'pdfFormAvalInterno' => [($request->pdfFormAvalInternoPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'] , + + 'pdfFormAvalInterno' => ['required', 'file'], + 'pdfEdital' => [($request->pdfEditalPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'], + //'modeloDocumento' => [], + ]); } // validacao normal //after = depois //before = antes $validatedData = $request->validate([ - 'nome' => ['required', 'string'], - 'descricao' => ['required', 'string','max:1500'], - 'tipo' => ['required', 'string'], - 'natureza' => ['required'], - 'coordenador_id' => ['required'], - 'numParticipantes' => ['required'], - #---------------------------------------------- - 'inicioSubmissao' => ['required', 'date', 'after:yesterday'], - 'fimSubmissao' => ['required', 'date', 'after_or_equal:inicioSubmissao'], - 'inicioRevisao' => ['required', 'date', 'after:yesterday'], - 'fimRevisao' => ['required', 'date', 'after:inicioRevisao', 'after:fimSubmissao'], - 'resultado_preliminar'=> ['required', 'date', 'after_or_equal:fimRevisao'], - 'inicio_recurso' => ['required', 'date', 'after_or_equal:resultado_preliminar'], - 'fim_recurso' => ['required', 'date', 'after:inicio_recurso'], - 'resultado_final' => ['required', 'date', 'after:fim_recurso'], - 'dt_inicioRelatorioParcial' => ['required', 'date', 'after:resultado_final'], - 'dt_fimRelatorioParcial' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioParcial'], - 'dt_inicioRelatorioFinal' => ['required', 'date', 'after:dt_fimRelatorioParcial'], - 'dt_fimRelatorioFinal' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioFinal'], - 'pdfEdital' => [($request->pdfEditalPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'], - //'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,pdf', 'max:2048'], + 'nome' => ['required', 'string'], + 'descricao' => ['required', 'string','max:1500'], + 'tipo' => ['required', 'string'], + 'natureza' => ['required'], + 'coordenador_id' => ['required'], + 'numParticipantes' => ['required'], + #---------------------------------------------- + 'inicioSubmissao' => ['required', 'date', 'after:yesterday'], + 'fimSubmissao' => ['required', 'date', 'after_or_equal:inicioSubmissao'], + 'inicioRevisao' => ['required', 'date', 'after:yesterday'], + 'fimRevisao' => ['required', 'date', 'after:inicioRevisao', 'after:fimSubmissao'], + 'resultado_preliminar'=> ['required', 'date', 'after_or_equal:fimRevisao'], + 'inicio_recurso' => ['required', 'date', 'after_or_equal:resultado_preliminar'], + 'fim_recurso' => ['required', 'date', 'after:inicio_recurso'], + 'resultado_final' => ['required', 'date', 'after:fim_recurso'], + 'dt_inicioRelatorioParcial' => ['required', 'date', 'after:resultado_final'], + 'dt_fimRelatorioParcial' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioParcial'], + 'dt_inicioRelatorioFinal' => ['required', 'date', 'after:dt_fimRelatorioParcial'], + 'dt_fimRelatorioFinal' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioFinal'], + 'pdfFormAvalExterno' => [($request->pdfFormAvalExternoPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'], + 'pdfFormAvalInterno' => [($request->pdfFormAvalInternoPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'], + 'pdfEdital' => [($request->pdfEditalPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'], + //'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,pdf', 'max:2048'], ]); //$evento = Evento::create([ @@ -197,21 +203,41 @@ class EventoController extends Controller //-- Salvando anexos finais if(isset($request->pdfEdital)){ - $pdfEdital = $request->pdfEdital; - $path = 'pdfEdital/' . $evento->id . '/'; - $nome = "edital.pdf"; - Storage::putFileAs($path, $pdfEdital, $nome); - $evento->pdfEdital = $path . $nome; + $pdfEdital = $request->pdfEdital; + $path = 'pdfEdital/' . $evento->id . '/'; + $nome = "edital.pdf"; + Storage::putFileAs($path, $pdfEdital, $nome); + $evento->pdfEdital = $path . $nome; } if(isset($request->modeloDocumento)){ - $modeloDocumento = $request->modeloDocumento; - $extension = $modeloDocumento->extension(); - $path = 'modeloDocumento/' . $evento->id . '/'; - $nome = "modelo" . "." . $extension; - Storage::putFileAs($path, $modeloDocumento, $nome); + $modeloDocumento = $request->modeloDocumento; + $extension = $modeloDocumento->extension(); + $path = 'modeloDocumento/' . $evento->id . '/'; + $nome = "modelo" . "." . $extension; + Storage::putFileAs($path, $modeloDocumento, $nome); + + $evento->modeloDocumento = $path . $nome; + } + + if(isset($request->pdfFormAvalInterno)){ + $pdfFormAvalInterno = $request->pdfFormAvalInterno; + $extension = $pdfFormAvalInterno->extension(); + $path = 'pdfFormAvalInterno/' . $evento->id . '/'; + $nome = "formulario de avaliação interno" . "." . $extension; + Storage::putFileAs($path, $pdfFormAvalInterno, $nome); + + $evento->formAvaliacaoInterno = $path . $nome; + } + + if(isset($request->pdfFormAvalExterno)){ + $pdfFormAvalExterno = $request->pdfFormAvalExterno; + $extension = $pdfFormAvalExterno->extension(); + $path = 'pdfFormAvalExterno/' . $evento->id . '/'; + $nome = "formulario de avaliação externo" . "." . $extension; + Storage::putFileAs($path, $pdfFormAvalExterno, $nome); - $evento->modeloDocumento = $path . $nome; + $evento->formAvaliacaoExterno = $path . $nome; } $evento->update(); @@ -226,31 +252,39 @@ class EventoController extends Controller public function armazenarAnexosTemp(Request $request){ - //---Anexos do Projeto - $eventoTemp = Evento::where('criador_id', Auth::user()->id)->where('anexosStatus', 'temporario') - ->orderByDesc('updated_at')->first(); - - if($eventoTemp == null){ - $eventoTemp = new Evento(); - $eventoTemp->criador_id = Auth::user()->id; - $eventoTemp->anexosStatus = 'temporario'; - $eventoTemp->save(); - } - - if(!(is_null($request->pdfEdital)) ) { - $pasta = 'pdfEdital/' . $eventoTemp->id; - $eventoTemp->pdfEdital = Storage::putFileAs($pasta, $request->pdfEdital, 'edital.pdf'); - } - if (!(is_null($request->modeloDocumento))) { - $extension = $request->modeloDocumento->extension(); - $path = 'modeloDocumento/' . $eventoTemp->id; - $nome = "modelo" . "." . $extension; - $eventoTemp->modeloDocumento = Storage::putFileAs($path, $request->modeloDocumento, $nome); - } - - $eventoTemp->update(); - - return $eventoTemp; + //---Anexos do Projeto + $eventoTemp = Evento::where('criador_id', Auth::user()->id)->where('anexosStatus', 'temporario') + ->orderByDesc('updated_at')->first(); + + if($eventoTemp == null){ + $eventoTemp = new Evento(); + $eventoTemp->criador_id = Auth::user()->id; + $eventoTemp->anexosStatus = 'temporario'; + $eventoTemp->save(); + } + + if(!(is_null($request->pdfEdital)) ) { + $pasta = 'pdfEdital/' . $eventoTemp->id; + $eventoTemp->pdfEdital = Storage::putFileAs($pasta, $request->pdfEdital, 'edital.pdf'); + } + if (!(is_null($request->modeloDocumento))) { + $extension = $request->modeloDocumento->extension(); + $path = 'modeloDocumento/' . $eventoTemp->id; + $nome = "modelo" . "." . $extension; + $eventoTemp->modeloDocumento = Storage::putFileAs($path, $request->modeloDocumento, $nome); + } + if(!(is_null($request->pdfFormAvalExterno)) ) { + $pasta = 'pdfFormAvalExterno/' . $eventoTemp->id; + $eventoTemp->formAvaliacaoExterno = Storage::putFileAs($pasta, $request->pdfFormAvalExterno, 'formulario de avaliação externo.pdf'); + } + if(!(is_null($request->pdfFormAvalInterno)) ) { + $pasta = 'pdfFormAvalInterno/' . $eventoTemp->id; + $eventoTemp->formAvaliacaoInterno = Storage::putFileAs($pasta, $request->pdfFormAvalInterno, 'formulario de avaliação interno.pdf'); + } + + $eventoTemp->update(); + + return $eventoTemp; } /** @@ -264,20 +298,20 @@ class EventoController extends Controller $evento = Evento::find($id); $proponente = Proponente::where('user_id', Auth::user()->id)->first(); if($proponente != null){ - $hasTrabalho = false; - $hasFile = false; - $trabalhos = $proponente->trabalhos()->where('evento_id', $evento->id )->get(); - $trabalhosCount = $proponente->trabalhos()->where('evento_id', $evento->id )->count(); - - if($trabalhosCount != 0){ - $hasTrabalho = true; - $hasFile = true; - } + $hasTrabalho = false; + $hasFile = false; + $trabalhos = $proponente->trabalhos()->where('evento_id', $evento->id )->get(); + $trabalhosCount = $proponente->trabalhos()->where('evento_id', $evento->id )->count(); + + if($trabalhosCount != 0){ + $hasTrabalho = true; + $hasFile = true; + } }else{ - $hasTrabalho = false; - $hasFile = false; - $trabalhos = 0; - $trabalhosCount = 0; + $hasTrabalho = false; + $hasFile = false; + $trabalhos = 0; + $trabalhosCount = 0; } $trabalhosId = Trabalho::where('evento_id', $evento->id)->select('id')->get(); @@ -285,14 +319,14 @@ class EventoController extends Controller $mytime = Carbon::now('America/Recife'); // dd(false); return view('evento.visualizarEvento', [ - 'evento' => $evento, - 'trabalhos' => $trabalhos, - // 'trabalhosCoautor' => $trabalhosCoautor, - 'hasTrabalho' => $hasTrabalho, - // 'hasTrabalhoCoautor' => $hasTrabalhoCoautor, - 'hasFile' => $hasFile, - 'mytime' => $mytime - ]); + 'evento' => $evento, + 'trabalhos' => $trabalhos, + // 'trabalhosCoautor' => $trabalhosCoautor, + 'hasTrabalho' => $hasTrabalho, + // 'hasTrabalhoCoautor' => $hasTrabalhoCoautor, + 'hasFile' => $hasFile, + 'mytime' => $mytime + ]); } public function showNaoLogado($id) @@ -307,14 +341,14 @@ class EventoController extends Controller $mytime = Carbon::now('America/Recife'); // dd(false); return view('evento.visualizarEvento', [ - 'evento' => $evento, - 'trabalhos' => $trabalhos, - 'trabalhosCoautor' => $trabalhosCoautor, - 'hasTrabalho' => $hasTrabalho, - 'hasTrabalhoCoautor' => $hasTrabalhoCoautor, - 'hasFile' => $hasFile, - 'mytime' => $mytime - ]); + 'evento' => $evento, + 'trabalhos' => $trabalhos, + 'trabalhosCoautor' => $trabalhosCoautor, + 'hasTrabalho' => $hasTrabalho, + 'hasTrabalhoCoautor' => $hasTrabalhoCoautor, + 'hasFile' => $hasFile, + 'mytime' => $mytime + ]); } /** @@ -332,9 +366,9 @@ class EventoController extends Controller $yesterday = Carbon::yesterday('America/Recife'); $yesterday = $yesterday->toDateString(); return view('evento.editarEvento',['evento'=>$evento, - 'coordenadores'=>$coordenadors, - 'naturezas'=>$naturezas, - 'ontem'=>$yesterday]); + 'coordenadores'=>$coordenadors, + 'naturezas'=>$naturezas, + 'ontem'=>$yesterday]); } /** @@ -351,55 +385,59 @@ class EventoController extends Controller $yesterday = Carbon::yesterday('America/Recife'); $yesterday = $yesterday->toDateString(); if( - $request->inicioSubmissao == null || - $request->fimSubmissao == null || - $request->inicioRevisao == null || - $request->fimRevisao == null || - $request->resultado == null + $request->inicioSubmissao == null || + $request->fimSubmissao == null || + $request->inicioRevisao == null || + $request->fimRevisao == null || + $request->resultado == null ){ - $validatedData = $request->validate([ + $validatedData = $request->validate([ + 'nome' => ['required', 'string'], + 'descricao' => ['required', 'string'], + 'tipo' => ['required', 'string'], + 'natureza' => ['required'], + 'numParticipantes' => ['required'], + 'inicioSubmissao' => ['required', 'date'], + 'fimSubmissao' => ['required', 'date'], + 'inicioRevisao' => ['required', 'date', 'after:fimSubmissao'], + 'fimRevisao' => ['required', 'date'], + 'resultado_preliminar'=> ['required', 'date'], + 'inicio_recurso' => ['required', 'date'], + 'fim_recurso' => ['required', 'date'], + 'resultado_final' => ['required', 'date'], + 'dt_inicioRelatorioParcial' => ['required', 'date'], + 'dt_fimRelatorioParcial' => ['required', 'date'], + 'dt_inicioRelatorioFinal' => ['required', 'date'], + 'dt_fimRelatorioFinal' => ['required', 'date'], + 'pdfEdital' => ['file', 'mimes:pdf', 'max:2048'], + 'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,pdf', 'max:2048'], + 'pdfFormAvalExterno' => ['file', 'mimes:pdf', 'max:2048'], + 'pdfFormAvalInterno' => ['file', 'mimes:pdf', 'max:2048'], + ]); + } + + $validated = $request->validate([ 'nome' => ['required', 'string'], - 'descricao' => ['required', 'string'], + 'descricao' => ['required', 'string', 'max:1500'], 'tipo' => ['required', 'string'], 'natureza' => ['required'], 'numParticipantes' => ['required'], - 'inicioSubmissao' => ['required', 'date'], - 'fimSubmissao' => ['required', 'date'], + 'inicioSubmissao' => ['required', 'date', 'after_or_equal:inicioSubmissao'], + 'fimSubmissao' => ['required', 'date', 'after_or_equal:inicioSubmissao'], 'inicioRevisao' => ['required', 'date', 'after:fimSubmissao'], - 'fimRevisao' => ['required', 'date'], - 'resultado_preliminar'=> ['required', 'date'], - 'inicio_recurso' => ['required', 'date'], - 'fim_recurso' => ['required', 'date'], - 'resultado_final' => ['required', 'date'], - 'dt_inicioRelatorioParcial' => ['required', 'date'], - 'dt_fimRelatorioParcial' => ['required', 'date'], - 'dt_inicioRelatorioFinal' => ['required', 'date'], - 'dt_fimRelatorioFinal' => ['required', 'date'], - 'pdfEdital' => ['file', 'mimes:pdf', 'max:2048'], + 'fimRevisao' => ['required', 'date', 'after:inicioRevisao'], + 'resultado_preliminar'=> ['required', 'date', 'after_or_equal:fimRevisao'], + 'inicio_recurso' => ['required', 'date', 'after_or_equal:resultado_preliminar'], + 'fim_recurso' => ['required', 'date', 'after:inicio_recurso'], + 'resultado_final' => ['required', 'date', 'after:fim_recurso'], + 'dt_inicioRelatorioParcial' => ['required', 'date', 'after:resultado_final'], + 'dt_fimRelatorioParcial' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioParcial'], + 'dt_inicioRelatorioFinal' => ['required', 'date', 'after:dt_fimRelatorioParcial'], + 'dt_fimRelatorioFinal' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioFinal'], 'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,pdf', 'max:2048'], - ]); - } - - $validated = $request->validate([ - 'nome' => ['required', 'string'], - 'descricao' => ['required', 'string', 'max:1500'], - 'tipo' => ['required', 'string'], - 'natureza' => ['required'], - 'numParticipantes' => ['required'], - 'inicioSubmissao' => ['required', 'date', 'after_or_equal:inicioSubmissao'], - 'fimSubmissao' => ['required', 'date', 'after_or_equal:inicioSubmissao'], - 'inicioRevisao' => ['required', 'date', 'after:fimSubmissao'], - 'fimRevisao' => ['required', 'date', 'after:inicioRevisao'], - 'resultado_preliminar'=> ['required', 'date', 'after_or_equal:fimRevisao'], - 'inicio_recurso' => ['required', 'date', 'after_or_equal:resultado_preliminar'], - 'fim_recurso' => ['required', 'date', 'after:inicio_recurso'], - 'resultado_final' => ['required', 'date', 'after:fim_recurso'], - 'dt_inicioRelatorioParcial' => ['required', 'date', 'after:resultado_final'], - 'dt_fimRelatorioParcial' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioParcial'], - 'dt_inicioRelatorioFinal' => ['required', 'date', 'after:dt_fimRelatorioParcial'], - 'dt_fimRelatorioFinal' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioFinal'], - 'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,pdf', 'max:2048'], + 'pdfFormAvalExterno' => ['file', 'mimes:pdf', 'max:2048'], + 'pdfFormAvalInterno' => ['file', 'mimes:pdf', 'max:2048'], ]); $evento->nome = $request->nome; @@ -422,19 +460,39 @@ class EventoController extends Controller $evento->coordenadorId = $request->coordenador_id; $evento->consu = $request->has('consu'); if($request->pdfEdital != null){ - $pdfEdital = $request->pdfEdital; - $path = 'pdfEdital/' . $evento->id . '/'; - $nome = "edital.pdf"; - Storage::putFileAs($path, $pdfEdital, $nome); + $pdfEdital = $request->pdfEdital; + $path = 'pdfEdital/' . $evento->id . '/'; + $nome = "edital.pdf"; + Storage::putFileAs($path, $pdfEdital, $nome); } if($request->modeloDocumento != null){ - $modeloDocumento = $request->modeloDocumento; - $extension = $modeloDocumento->extension(); - $path = 'modeloDocumento/' . $evento->id . '/'; - $nome = "modelo" . "." . $extension; - Storage::putFileAs($path, $modeloDocumento, $nome); - $evento->modeloDocumento = $path . $nome; + $modeloDocumento = $request->modeloDocumento; + $extension = $modeloDocumento->extension(); + $path = 'modeloDocumento/' . $evento->id . '/'; + $nome = "modelo" . "." . $extension; + Storage::putFileAs($path, $modeloDocumento, $nome); + $evento->modeloDocumento = $path . $nome; + } + + if(isset($request->pdfFormAvalInterno)){ + $pdfFormAvalInterno = $request->pdfFormAvalInterno; + $extension = $pdfFormAvalInterno->extension(); + $path = 'pdfFormAvalInterno/' . $evento->id . '/'; + $nome = "formulario de avaliação interno" . "." . $extension; + Storage::putFileAs($path, $pdfFormAvalInterno, $nome); + + $evento->formAvaliacaoInterno = $path . $nome; + } + + if(isset($request->pdfFormAvalExterno)){ + $pdfFormAvalExterno = $request->pdfFormAvalExterno; + $extension = $pdfFormAvalExterno->extension(); + $path = 'pdfFormAvalExterno/' . $evento->id . '/'; + $nome = "formulario de avaliação externo" . "." . $extension; + Storage::putFileAs($path, $pdfFormAvalExterno, $nome); + + $evento->formAvaliacaoExterno = $path . $nome; } $evento->update(); @@ -464,17 +522,17 @@ class EventoController extends Controller // $areas->delete(); // } if(isset($atividades)){ - $atividades->delete(); + $atividades->delete(); } if(isset($comissao)){ - $comissao->delete(); + $comissao->delete(); } if(isset($revisores)){ - $revisores->delete(); + $revisores->delete(); } if(isset($trabalhos)){ - $trabalhos->delete(); - Trabalho::withTrashed()->where('evento_id', $id)->update(['evento_id' => null]); + $trabalhos->delete(); + Trabalho::withTrashed()->where('evento_id', $id)->update(['evento_id' => null]); } Storage::deleteDirectory('pdfEdital/' . $evento->id ); @@ -493,7 +551,7 @@ class EventoController extends Controller // dd($ComissaoEventos); $ids = []; foreach($ComissaoEvento as $ce){ - array_push($ids,$ce->userId); + array_push($ids,$ce->userId); } $users = User::find($ids); @@ -515,128 +573,128 @@ class EventoController extends Controller $revs = Revisor::where('eventoId', $evento->id)->with('user')->get(); return view('coordenador.detalhesEvento', [ - 'evento' => $evento, - 'areas' => $areas, - 'revisores' => $revisores, - 'revs' => $revs, - 'users' => $users, - 'modalidades' => $modalidades, - 'areaModalidades' => $areaModalidades, - 'trabalhos' => $trabalhos, - 'trabalhosEnviados' => $trabalhosEnviados, - 'trabalhosAvaliados' => $trabalhosAvaliados, - 'trabalhosPendentes' => $trabalhosPendentes, - 'numeroRevisores' => $numeroRevisores, - 'numeroComissao' => $numeroComissao - ]); + 'evento' => $evento, + 'areas' => $areas, + 'revisores' => $revisores, + 'revs' => $revs, + 'users' => $users, + 'modalidades' => $modalidades, + 'areaModalidades' => $areaModalidades, + 'trabalhos' => $trabalhos, + 'trabalhosEnviados' => $trabalhosEnviados, + 'trabalhosAvaliados' => $trabalhosAvaliados, + 'trabalhosPendentes' => $trabalhosPendentes, + 'numeroRevisores' => $numeroRevisores, + 'numeroComissao' => $numeroComissao + ]); } public function numTrabalhos(Request $request){ - $evento = Evento::find($request->eventoId); - $this->authorize('isCoordenador', $evento); - $validatedData = $request->validate([ - 'eventoId' => ['required', 'integer'], - 'trabalhosPorAutor' => ['required', 'integer'], - 'numCoautor' => ['required', 'integer'] - ]); - - $evento->numMaxTrabalhos = $request->trabalhosPorAutor; - $evento->numMaxCoautores = $request->numCoautor; - $evento->save(); - - return redirect()->route('coord.detalhesEvento', ['eventoId' => $request->eventoId]); + $evento = Evento::find($request->eventoId); + $this->authorize('isCoordenador', $evento); + $validatedData = $request->validate([ + 'eventoId' => ['required', 'integer'], + 'trabalhosPorAutor' => ['required', 'integer'], + 'numCoautor' => ['required', 'integer'] + ]); + + $evento->numMaxTrabalhos = $request->trabalhosPorAutor; + $evento->numMaxCoautores = $request->numCoautor; + $evento->save(); + + return redirect()->route('coord.detalhesEvento', ['eventoId' => $request->eventoId]); } public function setResumo(Request $request){ - $evento = Evento::find($request->eventoId); - $this->authorize('isCoordenador', $evento); - $validatedData = $request->validate([ - 'eventoId' => ['required', 'integer'], - 'hasResumo' => ['required', 'string'] - ]); - if($request->hasResumo == 'true'){ - $evento->hasResumo = true; - } - else{ - $evento->hasResumo = false; - } - - $evento->save(); - return redirect()->route('coord.detalhesEvento', ['eventoId' => $request->eventoId]); + $evento = Evento::find($request->eventoId); + $this->authorize('isCoordenador', $evento); + $validatedData = $request->validate([ + 'eventoId' => ['required', 'integer'], + 'hasResumo' => ['required', 'string'] + ]); + if($request->hasResumo == 'true'){ + $evento->hasResumo = true; + } + else{ + $evento->hasResumo = false; + } + + $evento->save(); + return redirect()->route('coord.detalhesEvento', ['eventoId' => $request->eventoId]); } public function setFotoEvento(Request $request){ - $evento = Evento::find($request->eventoId); - $this->authorize('isCoordenador', $evento); - // dd($request); - $validatedData = $request->validate([ - 'eventoId' => ['required', 'integer'], - 'fotoEvento' => ['required', 'file', 'mimes:png'] - ]); - - $file = $request->fotoEvento; - $path = 'public/eventos/' . $evento->id; - $nome = '/logo.png'; - Storage::putFileAs($path, $file, $nome); - $evento->fotoEvento = $path . $nome; - $evento->save(); - return redirect()->route('coord.detalhesEvento', ['eventoId' => $request->eventoId]); + $evento = Evento::find($request->eventoId); + $this->authorize('isCoordenador', $evento); + // dd($request); + $validatedData = $request->validate([ + 'eventoId' => ['required', 'integer'], + 'fotoEvento' => ['required', 'file', 'mimes:png'] + ]); + + $file = $request->fotoEvento; + $path = 'public/eventos/' . $evento->id; + $nome = '/logo.png'; + Storage::putFileAs($path, $file, $nome); + $evento->fotoEvento = $path . $nome; + $evento->save(); + return redirect()->route('coord.detalhesEvento', ['eventoId' => $request->eventoId]); } public function areaParticipante() { - $eventos = Evento::all(); + $eventos = Evento::all(); - return view('user.areaParticipante',['eventos'=>$eventos]); + return view('user.areaParticipante',['eventos'=>$eventos]); } public function listComissao() { - $comissaoEvento = ComissaoEvento::where('userId', Auth::user()->id)->get(); - $eventos = Evento::all(); - $evnts = []; + $comissaoEvento = ComissaoEvento::where('userId', Auth::user()->id)->get(); + $eventos = Evento::all(); + $evnts = []; - foreach ($comissaoEvento as $comissao) { - foreach ($eventos as $evento) { - if($comissao->eventosId == $evento->id){ - array_push($evnts,$evento); - } + foreach ($comissaoEvento as $comissao) { + foreach ($eventos as $evento) { + if($comissao->eventosId == $evento->id){ + array_push($evnts,$evento); + } + } } - } - return view('user.comissoes',['eventos'=>$evnts]); + return view('user.comissoes',['eventos'=>$evnts]); } public function listComissaoTrabalhos(Request $request) { - $evento = Evento::find($request->eventoId); - $areasId = Area::where('eventoId', $evento->id)->select('id')->get(); - $trabalhos = Trabalho::whereIn('areaId', $areasId)->orderBy('id')->get(); + $evento = Evento::find($request->eventoId); + $areasId = Area::where('eventoId', $evento->id)->select('id')->get(); + $trabalhos = Trabalho::whereIn('areaId', $areasId)->orderBy('id')->get(); - return view('user.areaComissao', ['trabalhos' => $trabalhos]); + return view('user.areaComissao', ['trabalhos' => $trabalhos]); } public function baixarEdital($id) { - $evento = Evento::find($id); + $evento = Evento::find($id); - if (Storage::disk()->exists($evento->pdfEdital)) { - ob_end_clean(); - return Storage::download($evento->pdfEdital); - } + if (Storage::disk()->exists($evento->pdfEdital)) { + ob_end_clean(); + return Storage::download($evento->pdfEdital); + } - return abort(404); + return abort(404); } public function baixarModelos($id) { - $evento = Evento::find($id); + $evento = Evento::find($id); - if (Storage::disk()->exists($evento->modeloDocumento)) { - ob_end_clean(); - return Storage::download($evento->modeloDocumento); - } + if (Storage::disk()->exists($evento->modeloDocumento)) { + ob_end_clean(); + return Storage::download($evento->modeloDocumento); + } - return abort(404); + return abort(404); } } diff --git a/app/Http/Controllers/NotificacaoController.php b/app/Http/Controllers/NotificacaoController.php index fc8ca17e4e269b1bdeed7f2a487c26f4cd5bb20f..2d93027b0899c2b71a2b025aca76e07bf363b621 100644 --- a/app/Http/Controllers/NotificacaoController.php +++ b/app/Http/Controllers/NotificacaoController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use App\Notificacao; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; class NotificacaoController extends Controller { @@ -30,7 +31,7 @@ class NotificacaoController extends Controller /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) @@ -41,7 +42,7 @@ class NotificacaoController extends Controller /** * Display the specified resource. * - * @param \App\Notificacao $notificacao + * @param \App\Notificacao $notificacao * @return \Illuminate\Http\Response */ public function show(Notificacao $notificacao) @@ -52,7 +53,7 @@ class NotificacaoController extends Controller /** * Show the form for editing the specified resource. * - * @param \App\Notificacao $notificacao + * @param \App\Notificacao $notificacao * @return \Illuminate\Http\Response */ public function edit(Notificacao $notificacao) @@ -63,8 +64,8 @@ class NotificacaoController extends Controller /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request - * @param \App\Notificacao $notificacao + * @param \Illuminate\Http\Request $request + * @param \App\Notificacao $notificacao * @return \Illuminate\Http\Response */ public function update(Request $request, Notificacao $notificacao) @@ -75,7 +76,7 @@ class NotificacaoController extends Controller /** * Remove the specified resource from storage. * - * @param \App\Notificacao $notificacao + * @param \App\Notificacao $notificacao * @return \Illuminate\Http\Response */ public function destroy(Notificacao $notificacao) @@ -86,14 +87,46 @@ class NotificacaoController extends Controller public function listar() { $notificacoes = Notificacao::all()->sortByDesc('created_at'); - return view('notificacao.listar',['notificacoes'=>$notificacoes]); + return view('notificacao.listar', ['notificacoes' => $notificacoes]); } public function listarTrab() { - $destinatarios = Notificacao::where('destinatario_id',Auth()->user()->id)->get(); - $remetentes = Notificacao::where('remetente_id',Auth()->user()->id)->get(); - $notificacoes = $destinatarios->merge($remetentes)->sortByDesc('created_at'); - return view('notificacao.listar',['notificacoes'=>$notificacoes]); + $notificacoes = Notificacao::where('destinatario_id', Auth()->user()->id)->get()->sortByDesc('created_at'); + + return view('notificacao.listar', ['notificacoes' => $notificacoes]); + } + + public function ler($id) + { + $notificacao = Notificacao::find($id); + if (!$notificacao->lido) { + $notificacao->lido = true; + $notificacao->update(); + } + if ($notificacao->tipo == 1) { + if ($notificacao->destinatario_id == Auth()->user()->id && Auth()->user()->tipo != 'proponente') { + return redirect()->route('admin.analisarProposta', ['id' => $notificacao->trabalho->id]); + } else { + return redirect()->route('trabalho.show', ['id' => $notificacao->trabalho->id]); + } + } elseif ($notificacao->tipo == 2) { + if ($notificacao->destinatario_id == Auth()->user()->id && Auth()->user()->tipo != 'proponente') { + return redirect()->route('admin.analisarProposta', ['id' => $notificacao->trabalho->id]); + } else { + return redirect()->route('trabalho.trocaParticipante', ['evento_id' => $notificacao->trabalho->evento->id, 'projeto_id' => $notificacao->trabalho->id]); + } + } elseif ($notificacao->tipo == 3 || $notificacao->tipo == 4) { + return redirect()->route('planos.listar', ['id' => $notificacao->trabalho->id]); + } elseif ($notificacao->tipo == 5) { + if (!is_null(Auth::user()->avaliadors->eventos->where('id', $notificacao->trabalho->evento->id)->first()->pivot->convite) + && Auth::user()->avaliadors->eventos->where('id', $notificacao->trabalho->evento->id)->first()->pivot->convite == true) { + return redirect()->route('avaliador.visualizarTrabalho', ['evento_id' => $notificacao->trabalho->evento->id]); + } else { + return redirect()->route('avaliador.editais'); + } + } } + + } diff --git a/app/Http/Controllers/ParticipanteController.php b/app/Http/Controllers/ParticipanteController.php index 705f0b14ec805d306726df00c6b6c108ba2127ec..510b45823e61d0cf39de7f84a40154cbbdefe7f0 100755 --- a/app/Http/Controllers/ParticipanteController.php +++ b/app/Http/Controllers/ParticipanteController.php @@ -92,6 +92,13 @@ class ParticipanteController extends Controller return view('administrador.listarBolsas')->with(['participantes' => $participantes, 'trabalhos' => $trabalhos]); } + public function listarParticipanteProjeto(Request $request){ + $trabalho = Trabalho::find($request->projeto_id); + $participantes = $trabalho->participantes; + + return view('documentacaoComplementar.listar')->with(['participantes' => $participantes, 'trabalho' => $trabalho]); + } + public function alterarBolsa($id,$tipo){ $participante = Participante::find($id); if($participante->tipoBolsa ==null){ diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php index dd2ab0ff4c57df3b4d231850bb295261f8f0a798..924731094fce11601f4da265877f2b68d3cb8f30 100755 --- a/app/Http/Controllers/TrabalhoController.php +++ b/app/Http/Controllers/TrabalhoController.php @@ -42,6 +42,7 @@ use Illuminate\Support\Facades\Validator; use App\Mail\EmailParaUsuarioNaoCadastrado; use App\Mail\SolicitacaoSubstituicao; use App\Notifications\SubmissaoNotification; +use App\Notifications\SubmissaoRecebidaNotification; use App\Substituicao; use Illuminate\Support\Facades\Notification; @@ -110,24 +111,25 @@ class TrabalhoController extends Controller $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(); + //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'); + $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); + //--Salvando os dados da submissão temporariamente + $this->armazenarInfoTemp($request, $proponente); - return redirect()->route('projetos.edital',['id'=>$request->editalId]); + 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){ + public function armazenarInfoTemp(Request $request, $proponente) + { //---Dados do Projeto $trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$request->editalId)->where('status', 'Rascunho') @@ -168,9 +170,9 @@ class TrabalhoController extends Controller $trabalho->linkGrupoPesquisa = $request->linkGrupo; } - //Anexos do projeto + //Anexos do projeto - $pasta = 'trabalhos/' . $request->editalId . '/' . $trabalho->id; + $pasta = 'trabalhos/' . $request->editalId . '/' . $trabalho->id; if(!(is_null($request->anexoDecisaoCONSU)) ) { $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, "CONSU.pdf"); @@ -191,13 +193,13 @@ class TrabalhoController extends Controller $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha.". $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension()); } - $trabalho->update(); + $trabalho->update(); - //---Anexos planos de trabalho + //---Anexos planos de trabalho - //dd($trabalho); + //dd($trabalho); - return $trabalho; + return $trabalho; } public function validarAnexosRascunho(Request $request, $trabalho){ @@ -214,122 +216,122 @@ class TrabalhoController extends Controller public function armazenarAnexosFinais($request, $pasta, $trabalho, $evento){ - // Checando se é um novo trabalho ou uma edição - - if ($trabalho->anexoProjeto != null) { - // Anexo Projeto - if(isset($request->anexoProjeto)){ - if(Storage::disk()->exists($trabalho->anexoProjeto)) { - Storage::delete($trabalho->anexoProjeto); - } - $trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf'); - } - - //Anexo Decisão CONSU - if( $evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') { - if(isset($request->anexoDecisaoCONSU)){ - if(Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) { - Storage::delete($trabalho->anexoDecisaoCONSU); - } - $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'CONSU.pdf'); + // 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'); } - } - //Autorização ou Justificativa - if( isset($request->anexoAutorizacaoComiteEtica)){ - if(Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) { - Storage::delete($trabalho->anexoAutorizacaoComiteEtica); + //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, 'CONSU.pdf'); + } } - $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); + //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; } - $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); + //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'); } - $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); + //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()); } - - $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); + + // 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()); } - $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa.". $request->file('anexoGrupoPesquisa')->extension()); - } - $trabalho->save(); - return $trabalho; - } + $trabalho->save(); + return $trabalho; + } - // Anexo Projeto - if(isset($request->anexoProjeto)){ - $trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf'); - } + // 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, 'CONSU.pdf'); + //Anexo Decisão CONSU + if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') { + if (isset($request->anexoDecisaoCONSU)) { + $trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'CONSU.pdf'); + } } - } - //Autorização ou Justificativa - if( isset($request->anexoAutorizacaoComiteEtica)){ - $trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf'); - $trabalho->justificativaAutorizacaoEtica = null; + //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; - - } + } 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 Lattes + if (isset($request->anexoLattesCoordenador)) { + $trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf'); + } - // Anexo grupo pesquisa - if(isset($request->anexoGrupoPesquisa)){ - $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa.". $request->file('anexoGrupoPesquisa')->extension()); - } + //Anexo Planilha + if (isset($request->anexoPlanilhaPontuacao)) { + $trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension()); + } - return $trabalho; + // Anexo grupo pesquisa + if (isset($request->anexoGrupoPesquisa)) { + $trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension()); + } + + return $trabalho; } - + public function show($id) { - + // $projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first(); // if(Auth::user()->tipo == 'administrador'){ // $projeto = Trabalho::find($id); // } // if(!$projeto){ // // $projeto = Auth::user()->coordenadorComissao->trabalho()->where('id', $id)->first(); - + // return back()->withErrors(['Proposta não encontrada!']); // } $projeto = Trabalho::find($id); @@ -343,25 +345,25 @@ class TrabalhoController extends Controller $users = User::whereIn('id', $participantesUsersIds)->get(); $arquivos = Arquivo::where('trabalhoId', $id)->get(); 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, - ]); + '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, + ]); } - public function exportProjeto($id) + public function exportProjeto($id) { $projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first(); - if(!$projeto){ - return back()->withErrors(['Proposta não encontrada!']); + if (!$projeto) { + return back()->withErrors(['Proposta não encontrada!']); } $edital = Evento::find($projeto->evento_id); $grandeAreas = GrandeArea::all(); @@ -372,9 +374,9 @@ class TrabalhoController extends Controller $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]); - + $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 @@ -383,180 +385,183 @@ class TrabalhoController extends Controller public function edit($id) { - $proponente = Proponente::where('user_id', Auth::user()->id)->first(); - $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(); - //dd(Participante::all()); - $rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$edital->id)->where('status', 'Rascunho') - ->orderByDesc('updated_at')->first(); - - 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, - ]); + $proponente = Proponente::where('user_id', Auth::user()->id)->first(); + $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(); + //dd(Participante::all()); + $rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $edital->id)->where('status', 'Rascunho') + ->orderByDesc('updated_at')->first(); + + 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, + ]); } public function destroy(Request $request) { $projeto = Trabalho::find($request->id); //dd($trabalho); - Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id ); + Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id); $participantes = $projeto->participantes; foreach ($participantes as $participante) { - $plano = $participante->planoTrabalho; - if($plano) - $plano->delete(); - $participante->delete(); + $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(); + 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(); + //$participante->trabalhos()->detach($id); + $participante->delete(); - return redirect()->back(); + return redirect()->back(); } - 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'); + 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'], - ]); + $validatedData = $request->validate([ + 'arquivo' => ['required', 'file', 'mimes:pdf'], + 'eventoId' => ['required', 'integer'], + 'trabalhoId' => ['required', 'integer'], + ]); - $trabalho = Trabalho::find($request->trabalhoId); + $trabalho = Trabalho::find($request->trabalhoId); - if(Auth::user()->id != $trabalho->autorId){ - return redirect()->route('home'); - } + 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++; - } + $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); + $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, - ]); + $arquivo = Arquivo::create([ + 'nome' => $path . $nome, + 'trabalhoId' => $trabalho->id, + 'versaoFinal' => true, + ]); - return redirect()->route('evento.visualizar',['id'=>$request->eventoId]); + return redirect()->route('evento.visualizar', ['id' => $request->eventoId]); } - public function detalhesAjax(Request $request){ - $validatedData = $request->validate([ - 'trabalhoId' => ['required', 'integer'] - ]); + 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; - } + $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 + ]); + } } - // - 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 - ]); - } + $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); + 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); + public function atribuirAvaliadorTrabalho(Request $request) + { - $avaliadores = Avaliador::all(); + $request->trabalho_id; + $trabalho = Trabalho::find($request->trabalho_id); + $avaliadores = Avaliador::all(); - return view('coordenadorComissao.gerenciarEdital.atribuirAvaliadorTrabalho', ['avaliadores'=>$avaliadores, 'trabalho'=>$trabalho, 'evento'=> $trabalho->evento ]); + return view('coordenadorComissao.gerenciarEdital.atribuirAvaliadorTrabalho', ['avaliadores' => $avaliadores, 'trabalho' => $trabalho, 'evento' => $trabalho->evento]); } - public function atribuir(Request $request){ + public function atribuir(Request $request) + { $trabalho = Trabalho::find($request->trabalho_id); @@ -568,1101 +573,1144 @@ class TrabalhoController extends Controller foreach ($avaliadores as $key => $avaliador) { - $user = $avaliador->user; - $subject = "Trabalho atribuido"; - Mail::to($user->email) - ->send(new EventoCriado($user, $subject)); + $user = $avaliador->user; + $subject = "Trabalho atribuido"; + Mail::to($user->email) + ->send(new EventoCriado($user, $subject)); } - return view('coordenadorComissao.detalhesEdital', ['evento'=> $trabalho->evento ]); + 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(); + 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]); + 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 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 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); + 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); + 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); + 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); + 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); + 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); + 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); + 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}", - ); - + 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; + } - return Storage::download($projeto->anexoPlanilhaPontuacao, "Planilha.{$ext[1]}",$headers); - } - return abort(404); + $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); + public function baixarAnexoJustificativa($id) + { + $projeto = Trabalho::find($id); - if (Storage::disk()->exists($projeto->justificativaAutorizacaoEtica)) { - ob_end_clean(); - return Storage::download($projeto->justificativaAutorizacaoEtica); - } + if (Storage::disk()->exists($projeto->justificativaAutorizacaoEtica)) { + ob_end_clean(); + return Storage::download($projeto->justificativaAutorizacaoEtica); + } - return abort(404); + return abort(404); } - public function baixarAnexoTemp($eventoId, $nomeAnexo) { - $proponente = Proponente::where('user_id', Auth::user()->id)->first(); + 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(); + $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); + 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(); + 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); + if (Storage::disk()->exists($eventoTemp->$nomeAnexo)) { + ob_end_clean(); + return Storage::download($eventoTemp->$nomeAnexo); + } + return abort(404); } - 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 = Auth::user()->proponentes->trabalhos()->where('id', $id)->first(); - - DB::beginTransaction(); - if(!$trabalho){ - return back()->withErrors(['Proposta não encontrada']); - } - - $trabalho->update($request->except([ - 'anexoProjeto', 'anexoDecisaoCONSU','anexoPlanilhaPontuacao', - 'anexoLattesCoordenador','anexoGrupoPesquisa','justificativaAutorizacaoEtica','anexoAutorizacaoComiteEtica' - - ])); - $pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id; - $trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento); - $trabalho->save(); - - if ($request->marcado == null) { - $idExcluido = $trabalho->participantes->pluck('id'); - - }else{ - $idExcluido = []; - } - - foreach ($request->participante_id as $key => $value) { - if($request->marcado != null && array_search( $key, $request->marcado) === false){ - if($value !== null) - array_push($idExcluido, $value); - } - } - - foreach ($idExcluido as $key => $value) { - $trabalho->participantes()->find($value)->delete(); - } - $trabalho->refresh(); - if($request->has('marcado')){ - foreach ($request->marcado as $key => $part) { - $part = intval($part); - - $passwordTemporario = Str::random(8); - $data['name'] = $request->name[$part]; - $data['email'] = $request->email[$part]; - $data['password'] = bcrypt($passwordTemporario); - $data['data_de_nascimento'] = $request->data_de_nascimento[$part]; - $data['cpf'] = $request->cpf[$part]; - $data['tipo'] = 'participante'; - $data['funcao_participante_id'] = 4; - $data['rg'] = $request->rg[$part]; - $data['celular'] = $request->celular[$part]; - $data['cep'] = $request->cep[$part]; - $data['uf'] = $request->uf[$part]; - $data['cidade'] = $request->cidade[$part]; - $data['rua'] = $request->rua[$part]; - $data['numero'] = $request->numero[$part]; - $data['bairro'] = $request->bairro[$part]; - $data['complemento'] = $request->complemento[$part]; - - if($request->instituicao[$part] != "Outra"){ - $data['instituicao'] = $request->instituicao[$part]; - }else{ - $data['instituicao'] = $request->outrainstituicao[$part]; - } - - $data['total_periodos'] = $request->total_periodos[$part]; - if($request->curso[$part] != "Outro"){ - $data['curso'] = $request->curso[$part]; - }else{ - $data['curso'] = $request->outrocurso[$part]; + 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 = Auth::user()->proponentes->trabalhos()->where('id', $id)->first(); - $data['turno'] = $request->turno[$part]; - $data['periodo_atual'] = $request->periodo_atual[$part]; - $data['ordem_prioridade'] = $request->ordem_prioridade[$part]; - $data['media_do_curso'] = $request->media_do_curso[$part]; - $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part]; - - // $participante = Participante::find($request->participante_id[$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 = Participante::create($data); - $user->participantes()->save($participante); - $trabalho->participantes()->save($participante); - - }else{ - // $user = $participante->user; - $user->update($data); - $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); - } - + DB::beginTransaction(); + if (!$trabalho) { + return back()->withErrors(['Proposta não encontrada']); } - - - - if ( $request->has('anexoPlanoTrabalho') && array_key_exists($part,$request->anexoPlanoTrabalho) ) { - if(Arquivo::where('participanteId', $participante->id)->count()){ - $arquivo = Arquivo::where('participanteId', $participante->id)->first(); - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id .'/'; - $nome = $data['nomePlanoTrabalho'] .".pdf"; - $file = $request->anexoPlanoTrabalho[$part] ; - Storage::putFileAs($path, $file, $nome); - $arquivo->update([ - 'titulo' => $nome, - 'nome' => $path . $nome, - 'data' => now() , - ]); - }else{ - $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id .'/'; - $nome = $data['nomePlanoTrabalho'] .".pdf"; - $file = $request->anexoPlanoTrabalho[$part] ; - Storage::putFileAs($path, $file, $nome); - $arquivo = new Arquivo(); - $arquivo->titulo = $data['nomePlanoTrabalho']; - $arquivo->nome = $path . $nome; - $arquivo->trabalhoId = $trabalho->id; - $arquivo->data = now(); - $arquivo->participanteId = $participante->id; - $arquivo->versaoFinal = true; - $arquivo->save(); - - } - - } - - } - - } - - - DB::commit(); - if (!$request->has('rascunho') ) { - Notification::send(Auth::user(), new SubmissaoNotification($id)); - }else{ - - } - return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta atualizada!']); - - } catch (\Throwable $th) { - DB::rollback(); - return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]); - } - - } + $trabalho->update($request->except([ + 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', + 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'justificativaAutorizacaoEtica', 'anexoAutorizacaoComiteEtica' + ])); + $pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id; + $trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento); + $trabalho->save(); - public function salvar(StoreTrabalho $request) { + if ($request->marcado == null) { + $idExcluido = $trabalho->participantes->pluck('id'); - try { - if (!$request->has('rascunho') ) { - $request->merge([ - 'status' => 'submetido' - ]); - } - $evento = Evento::find($request->editalId); - $request->merge([ - 'coordenador_id' => $evento->coordenadorComissao->id - ]); - - DB::beginTransaction(); - - $trabalho = Auth::user()->proponentes->trabalhos() - ->create($request->except([ - 'anexoProjeto', 'anexoDecisaoCONSU','anexoPlanilhaPontuacao', - 'anexoLattesCoordenador','anexoGrupoPesquisa','anexoAutorizacaoComiteEtica', - 'justificativaAutorizacaoEtica' - ])); - 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]; + } else { + $idExcluido = []; } - $data['total_periodos'] = $request->total_periodos[$part]; - - if($request->curso[$part] != "Outro"){ - $data['curso'] = $request->curso[$part]; - }else{ - $data['curso'] = $request->outrocurso[$part]; + foreach ($request->participante_id as $key => $value) { + if ($request->marcado != null && array_search($key, $request->marcado) === false) { + if ($value !== null) + array_push($idExcluido, $value); + } } - $data['turno'] = $request->turno[$part]; - $data['periodo_atual'] = $request->periodo_atual[$part]; - $data['ordem_prioridade'] = $request->ordem_prioridade[$part]; - $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(); - + foreach ($idExcluido as $key => $value) { + $trabalho->participantes()->find($value)->delete(); } - - } - } - $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(); + $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]; + $data['media_do_curso'] = $request->media_do_curso[$part]; + $data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part]; + + // $participante = Participante::find($request->participante_id[$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 = Participante::create($data); + $user->participantes()->save($participante); + $trabalho->participantes()->save($participante); + + } else { + // $user = $participante->user; + $user->update($data); + $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)) { + if (Arquivo::where('participanteId', $participante->id)->count()) { + $arquivo = Arquivo::where('participanteId', $participante->id)->first(); + $path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/'; + $nome = $data['nomePlanoTrabalho'] . ".pdf"; + $file = $request->anexoPlanoTrabalho[$part]; + Storage::putFileAs($path, $file, $nome); + $arquivo->update([ + 'titulo' => $nome, + '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(); + + } + + } + + } + } - $evento->trabalhos()->save($trabalho); - $pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id; - $trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento); - $trabalho->save(); + DB::commit(); + if (!$request->has('rascunho')) { + Notification::send(Auth::user(), new SubmissaoNotification($id)); + } else { - DB::commit(); - if (!$request->has('rascunho') ) { - Notification::send(Auth::user(), new SubmissaoNotification($trabalho->id)); - return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta submetida!']); - }else{ - return redirect(route('proponente.projetos'))->with(['mensagem' => 'Rascunho salvo!']); + } + return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta atualizada!']); + } catch (\Throwable $th) { + DB::rollback(); + return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]); } - } 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; - - // 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]; - $participante->media_do_curso = $request->media_geral_curso[$key]; - $participante->save(); - - - $subject = "Participante de Projeto"; - Mail::to($request->emailParticipante[$key])->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject)); - } else { - - $participante->user_id = $userParticipante->id; - $participante->trabalho_id = $projeto->id; - $participante->funcao_participante_id = $request->funcaoParticipante[$key]; - $participante->confirmacao_convite = true; - $participante->rg = $request->rg[$key]; - $participante->data_de_nascimento = $request->data_de_nascimento[$key]; - $participante->curso = $request->curso[$key]; - $participante->turno = $request->turno[$key]; - $participante->ordem_prioridade = $request->ordem_prioridade[$key]; - $participante->periodo_atual = $request->periodo_atual[$key]; - $participante->total_periodos = $request->total_periodos[$key]; - $participante->media_do_curso = $request->media_geral_curso[$key]; - $participante->save(); - - $subject = "Participante de Projeto"; - Mail::to($request->emailParticipante[$key]) - ->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto)); + public function salvar(StoreTrabalho $request) + { + try { + if (!$request->has('rascunho')) { + $request->merge([ + 'status' => 'submetido' + ]); } - - 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); + $evento = Evento::find($request->editalId); + $request->merge([ + 'coordenador_id' => $evento->coordenadorComissao->id + ]); + + DB::beginTransaction(); + + $trabalho = Auth::user()->proponentes->trabalhos() + ->create($request->except([ + 'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao', + 'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica', + 'justificativaAutorizacaoEtica' + ])); + 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]; + $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(); + + } + + } } - // 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]; - $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(); + + $evento->trabalhos()->save($trabalho); + + $pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id; + $trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento); + $trabalho->save(); + + 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(); + Notification::send($userTemp, new SubmissaoRecebidaNotification($trabalho->id,$evento->nome,$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(); + Notification::send(Auth::user(), new SubmissaoNotification($trabalho->id)); + //Admins + $admins = App\Administrador::all(); + foreach ($admins as $admin) { + $userTemp = User::find($admin->user_id); + $notificacao = App\Notificacao::create([ + 'remetente_id' => Auth::user()->id, + 'destinatario_id' => $admin->user_id, + 'trabalho_id' => $trabalho->id, + 'lido' => false, + 'tipo' => 1, + ]); + $notificacao->save(); + Notification::send($userTemp, new SubmissaoRecebidaNotification($trabalho->id,$evento->nome,$userTemp)); + + } + + + return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta submetida!']); + } else { + return redirect(route('proponente.projetos'))->with(['mensagem' => 'Rascunho salvo!']); + } - } - } - // Excluidos - $participantesExcluidos = $participantes->diff($participantesPermanecem); - foreach ($participantesExcluidos as $participante) { - $plano = $participante->planoTrabalho; - if($plano) - $plano->delete(); - $participante->delete(); + } catch (\Throwable $th) { + DB::rollback(); + return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]); } - 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]; - $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)); - } 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]; - $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(); - + 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; + + // 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]; + $participante->media_do_curso = $request->media_geral_curso[$key]; + $participante->save(); + + + $subject = "Participante de Projeto"; + Mail::to($request->emailParticipante[$key])->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject)); + } else { + + $participante->user_id = $userParticipante->id; + $participante->trabalho_id = $projeto->id; + $participante->funcao_participante_id = $request->funcaoParticipante[$key]; + $participante->confirmacao_convite = true; + $participante->rg = $request->rg[$key]; + $participante->data_de_nascimento = $request->data_de_nascimento[$key]; + $participante->curso = $request->curso[$key]; + $participante->turno = $request->turno[$key]; + $participante->ordem_prioridade = $request->ordem_prioridade[$key]; + $participante->periodo_atual = $request->periodo_atual[$key]; + $participante->total_periodos = $request->total_periodos[$key]; + $participante->media_do_curso = $request->media_geral_curso[$key]; + $participante->save(); + + $subject = "Participante de Projeto"; + Mail::to($request->emailParticipante[$key]) + ->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto)); + + } + + if ($request->nomePlanoTrabalho[$key] != null) { + $usuario = User::where('email', $request->emailParticipante[$key])->first(); + $participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first(); + + $path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/'; + $nome = $request->nomePlanoTrabalho[$key] . ".pdf"; + $file = $request->anexoPlanoTrabalho[$key]; + Storage::putFileAs($path, $file, $nome); + + $agora = now(); + $arquivo = new Arquivo(); + $arquivo->titulo = $request->nomePlanoTrabalho[$key]; + $arquivo->nome = $path . $nome; + $arquivo->trabalhoId = $projeto->id; + $arquivo->data = $agora; + $arquivo->participanteId = $participante->id; + $arquivo->versaoFinal = true; + $arquivo->save(); + // 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]; + $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(); } - $subject = "Participante de Projeto"; - 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; + } + 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]; + $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)); + } 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]; + $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"; + 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; + return true; } - public function atualizar(Request $request, $id) { - $edital = Evento::find($request->editalId); - $hoje = now(); + public function atualizar(Request $request, $id) + { + $edital = Evento::find($request->editalId); + $hoje = now(); - $projeto = Trabalho::find($id); + $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.']); - } + 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(); + $projeto = $this->atribuirDados($request, $edital, $projeto); + $projeto->update(); - // dd($request->all()); - // Salvando participantes - $this->salvarParticipantes($request, $edital, $projeto, true); + // dd($request->all()); + // Salvando participantes + $this->salvarParticipantes($request, $edital, $projeto, true); - return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto atualizado com sucesso!']); + 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); - - $participantes = $projeto->participantes; - $substituicoesProjeto = Substituicao::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get(); + public function telaTrocaPart(Request $request) + { + $projeto = Trabalho::find($request->projeto_id); + $edital = Evento::find($projeto->evento_id); - return view('administrador.substituirParticipante')->with(['projeto' => $projeto, - 'edital' => $edital, - 'participantes' => $participantes, - 'substituicoesProjeto' => $substituicoesProjeto, - 'estados' => $this->estados, - 'enum_turno' => Participante::ENUM_TURNO, - ]); - } + $participantes = $projeto->participantes; + $substituicoesProjeto = Substituicao::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, + ]); + } - 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; - } + 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(); - $data['total_periodos'] = $request->total_periodos; + $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; + } - if($request->curso != "Outro"){ - $data['curso'] = $request->curso; - }else{ - $data['curso'] = $request->outrocurso; - } + $data['total_periodos'] = $request->total_periodos; - $data['turno'] = $request->turno; - $data['periodo_atual'] = $request->periodo_atual; - $data['ordem_prioridade'] = $request->ordem_prioridade; - $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"]); - } + if ($request->curso != "Outro") { + $data['curso'] = $request->curso; + } else { + $data['curso'] = $request->outrocurso; + } - $participanteSubstituido->data_saida = $request->data_entrada; + $data['turno'] = $request->turno; + $data['periodo_atual'] = $request->periodo_atual; + $data['ordem_prioridade'] = $request->ordem_prioridade; + $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()); + } - \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(); + } + + } + } - $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)); + 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()]); } - } - - $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)); - 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); + 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(); - if($request->aprovar == 'true'){ - try{ - if($substituicao->tipo == 'TrocarPlano'){ - $substituicao->participanteSubstituido->planoTrabalho()->where('id', '!=', $substituicao->planoSubstituto->id)->delete(); - $substituicao->status = 'Finalizada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; + return view('administrador.analiseSubstituicoes')->with(['substituicoesPendentes' => $substituicoesPendentes, + 'substituicoesProjeto' => $substituicoesProjeto, + 'trabalho' => $trabalho]); + } - $substituicao->concluida_em = now(); - $substituicao->save(); + public function aprovarSubstituicao(Request $request) + { + $substituicao = Substituicao::find($request->substituicaoID); + $trabalho = Trabalho::find($substituicao->trabalho->id); - }else{ - $substituicao->participanteSubstituido->delete(); - $trabalho->participantes()->save($substituicao->participanteSubstituto); + if ($request->aprovar == 'true') { + try { + if ($substituicao->tipo == 'TrocarPlano') { + $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 { + $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')); + return redirect()->back()->with(['sucesso' => 'Substituição concluida!']); + } catch (\Throwable $th) { + return redirect()->back()->with(['erro' => $th->getMessage()]); + } - $substituicao->status = 'Finalizada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; - $substituicao->concluida_em = now(); - $substituicao->save(); - } + } else { - Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado')); - return redirect()->back()->with(['sucesso' => 'Substituição concluida!']); - }catch(\Throwable $th){ - return redirect()->back()->with(['erro' => $th->getMessage()]); - } + try { - }else{ + if ($substituicao->tipo == 'TrocarPlano') { + $substituicao->participanteSubstituido->planoTrabalho()->where('id', '=', $substituicao->planoSubstituto->id)->delete(); + $substituicao->status = 'Negada'; + $substituicao->justificativa = $request->textJustificativa; + $substituicao->causa = $request->selectJustificativa; - try{ + $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(); - 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->save(); + } else { + $substituicao->participanteSubstituto->delete(); - $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->status = 'Negada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; - $substituicao->concluida_em = now(); + $substituicao->save(); + } - $substituicao->save(); - }else{ - $substituicao->participanteSubstituto->delete(); + $trabalho = Trabalho::find($substituicao->trabalho->id); + Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado')); + return redirect()->back()->with(['sucesso' => 'Substituição cancelada com sucesso!']); + } catch (\Throwable $th) { - $substituicao->status = 'Negada'; - $substituicao->justificativa = $request->textJustificativa; - $substituicao->causa = $request->selectJustificativa; - $substituicao->concluida_em = now(); + return redirect()->back()->with(['erro' => $th->getMessage()]); - $substituicao->save(); + } } - $trabalho = Trabalho::find($substituicao->trabalho->id); - Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado')); - 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){ + public function aprovarProposta(Request $request, $id) + { $trabalho = Trabalho::find($id); $trabalho->status = $request->statusProp; $trabalho->comentario = $request->comentario; @@ -1670,4 +1718,5 @@ class TrabalhoController extends Controller return redirect()->back()->with(['sucesso' => 'Proposta avaliada com sucesso']); -}} \ No newline at end of file + } +} \ No newline at end of file diff --git a/app/Notifications/RelatorioRecebimentoNotification.php b/app/Notifications/RelatorioRecebimentoNotification.php new file mode 100644 index 0000000000000000000000000000000000000000..4de5a0f944e7af7230b7699b280726867b9820c5 --- /dev/null +++ b/app/Notifications/RelatorioRecebimentoNotification.php @@ -0,0 +1,75 @@ +data = date('d/m/Y \à\s H:i\h', strtotime(now())); + $url = "/projeto/planosTrabalho/".$id; + $this->url = url($url); + $this->editalNome = $eventoTitulo; + $this->trabalhoNome = $trabalhoTitulo; + $this->user = $usuario; + $this->tipo = $tipoRelatorio; + $this->subject ="Recebimento de Relatório {$this->tipo}"; + + } + + /** + * Get the notification's delivery channels. + * + * @param mixed $notifiable + * @return array + */ + public function via($notifiable) + { + return ['mail']; + } + + /** + * Get the mail representation of the notification. + * + * @param mixed $notifiable + * @return \Illuminate\Notifications\Messages\MailMessage + */ + public function toMail($notifiable) + { + return (new MailMessage) + ->subject($this->subject) + ->greeting("Olá, {$this->user->name}!") + ->action('Acessar Relatórios', $this->url ) + ->line("O projeto {$this->trabalhoNome} pertencente ao edital {$this->editalNome} do Submeta, registrou um novo envio de Relatório {$this->tipo} em {$this->data}.") + ->line('Obrigado por usar o nosso sistema.') + ->markdown('vendor.notifications.email'); + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + // + ]; + } +} diff --git a/app/Notifications/SubmissaoRecebidaNotification.php b/app/Notifications/SubmissaoRecebidaNotification.php new file mode 100644 index 0000000000000000000000000000000000000000..925f6b51bef046efbfd900f397ec1ac966b108e9 --- /dev/null +++ b/app/Notifications/SubmissaoRecebidaNotification.php @@ -0,0 +1,71 @@ +data = date('d/m/Y \à\s H:i\h', strtotime(now())); + $url = "/usuarios/analisarProposta?id=".$id; + $this->url = url($url); + $this->editalNome = $titulo; + $this->user = $usuario; + } + + /** + * Get the notification's delivery channels. + * + * @param mixed $notifiable + * @return array + */ + public function via($notifiable) + { + return ['mail']; + } + + /** + * Get the mail representation of the notification. + * + * @param mixed $notifiable + * @return \Illuminate\Notifications\Messages\MailMessage + */ + public function toMail($notifiable) + { + return (new MailMessage) + ->subject('Recebimento de Submissão de Proposta') + ->greeting("Olá, {$this->user->name}!") + ->action('Acessar Formulário', $this->url ) + ->line("O edital {$this->editalNome} do Submeta registrou uma nova submissão em {$this->data}.") + ->line('Obrigado por usar o nosso sistema.') + ->markdown('vendor.notifications.email'); + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + // + ]; + } +} diff --git a/app/Participante.php b/app/Participante.php index a217bb82901e2276a3f342cdcc3579d6f3f915a3..5e31d6035fa138cac9f59245be465e725a562b8d 100755 --- a/app/Participante.php +++ b/app/Participante.php @@ -33,4 +33,8 @@ class Participante extends Model public function planoTrabalho() { return $this->hasOne('App\Arquivo', 'participanteId'); } + + public function documentacaoComplementar() { + return $this->hasOne('App\DocumentacaoComplementar', 'participante_id'); + } } diff --git a/database/migrations/2022_02_15_104447_add_comentario_parecer_internos.php b/database/migrations/2022_02_15_104447_add_comentario_parecer_internos.php new file mode 100644 index 0000000000000000000000000000000000000000..6145376703f2df9611be2a50a9a18d1be434cada --- /dev/null +++ b/database/migrations/2022_02_15_104447_add_comentario_parecer_internos.php @@ -0,0 +1,32 @@ +text('comentario')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('parecer_internos', function (Blueprint $table) { + $table->dropColumn('comentario'); + }); + } +} diff --git a/database/migrations/2022_02_22_094237_create_documentacao_complementars_table.php b/database/migrations/2022_02_22_094237_create_documentacao_complementars_table.php new file mode 100644 index 0000000000000000000000000000000000000000..6b8ffa60a254c894bf77cd79659a7b75e720607d --- /dev/null +++ b/database/migrations/2022_02_22_094237_create_documentacao_complementars_table.php @@ -0,0 +1,39 @@ +bigIncrements('id'); + $table->string('termoCompromisso')->nullable(); + $table->string('comprovanteMatricula')->nullable(); + $table->string('pdfLattes')->nullable(); + $table->string('linkLattes')->nullable(); + + $table->integer('participante_id')->nullable(); + $table->foreign('participante_id')->references('id')->on('participantes'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('documentacao_complementars'); + } +} diff --git a/database/migrations/2022_03_17_085158_alter_table_eventos3.php b/database/migrations/2022_03_17_085158_alter_table_eventos3.php new file mode 100644 index 0000000000000000000000000000000000000000..8ed8ad7f81f420086c0f631c121a58b639ea00ad --- /dev/null +++ b/database/migrations/2022_03_17_085158_alter_table_eventos3.php @@ -0,0 +1,34 @@ +string('formAvaliacaoExterno')->nullable(); + $table->string('formAvaliacaoInterno')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('eventos', function (Blueprint $table) { + $table->dropColumn('formAvaliacaoExterno'); + $table->dropColumn('formAvaliacaoInterno'); + }); + } +} diff --git a/public/img/icons/parcialmenteAprovado.png b/public/img/icons/parcialmenteAprovado.png new file mode 100644 index 0000000000000000000000000000000000000000..6d75d52d7f0a7564709f0a6e855b519455e31470 Binary files /dev/null and b/public/img/icons/parcialmenteAprovado.png differ diff --git a/resources/views/administrador/analisar.blade.php b/resources/views/administrador/analisar.blade.php index c53e54b83b2bd80e72974af983680450aa766a65..f255c43f3dcedbaa63dd8061949b30f0bd759d02 100755 --- a/resources/views/administrador/analisar.blade.php +++ b/resources/views/administrador/analisar.blade.php @@ -2,69 +2,96 @@ @section('content') - -
-
-
-
-
-
-
Edital - {{$evento->nome}}
-
Propostas Submetidas
+
+
+
+
+
+
+
+
Edital - {{$evento->nome}}
+
Propostas Submetidas
+
-
-
-
+
+
+
+ + Proposta Pendente + + Proposta Aprovada + + Proposta Negada +
+ + Proposta Parcialmente Aprovada +
+
+
+ +
+
+ @foreach( $trabalhos as $trabalho ) -
- -
-
-
{{ $trabalho->titulo }}
-
Proponente: - @foreach($trabalho->participantes as $participante) - {{$participante->user->name}}; - @endforeach -
-
Data: {{ date('d/m/Y', strtotime($trabalho->created_at)) }}
-
-
- @if($trabalho->status == "aprovado") - - @elseif($trabalho->status == "reprovado") - - @else - - @endif + +
+
+
+ + +
+
+
+
+
Titulo: {{ $trabalho->titulo }}
+
+ @if($trabalho->status == "aprovado") + + @elseif($trabalho->status == "reprovado") + + @elseif($trabalho->status == "corrigido") + + @else + + @endif +
+
+
+
+
+

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

+
+ +

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

+ +
+
Data: {{ date('d/m/Y', strtotime($trabalho->created_at)) }}
+
+ + +
+
+
+
-
@endforeach -
-
-
-
-
-
-
-
-
-
-
- - Proposta Pendente
-
- - Proposta Aprovada
-
- - Proposta Negada
+ + +
+
+
+ {{ $trabalhos->links() }} +
-
+
-
@@ -77,3 +104,8 @@ } @endsection + diff --git a/resources/views/administrador/analisarProposta.blade.php b/resources/views/administrador/analisarProposta.blade.php index 1d4b361189e7e82a1bd4b60e70f7d6329bb7963c..214253553a8b49f236d3a9785e98ecf2b1b1699c 100644 --- a/resources/views/administrador/analisarProposta.blade.php +++ b/resources/views/administrador/analisarProposta.blade.php @@ -1,6 +1,9 @@ @extends('layouts.app') @section('content') + @php + $grandesAreas = \App\GrandeArea::all(); + @endphp
@@ -118,7 +121,7 @@