Unverified Commit a3eff63a authored by Laboratório Multidisciplinar de Tecnologias Sociais's avatar Laboratório Multidisciplinar de Tecnologias Sociais Committed by GitHub
Browse files

Merge pull request #185 from GuilhermeGz/master

Atualizações do Sistema
parents 6ea824cf 04a775ec
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class DocumentacaoComplementar extends Model
{
protected $fillable = [
'termoCompromisso',
'comprovanteMatricula',
'linkLattes',
'pdfLattes',
'participante_id',
];
public function participante(){
return $this->belongsTo(Participante::class, 'participante_id', 'id');
}
}
...@@ -16,7 +16,8 @@ class Evento extends Model ...@@ -16,7 +16,8 @@ class Evento extends Model
'inicioSubmissao', 'fimSubmissao', 'inicioRevisao', 'fimRevisao', 'inicioSubmissao', 'fimSubmissao', 'inicioRevisao', 'fimRevisao',
'resultado_final','resultado_preliminar', 'coordenadorId', 'resultado_final','resultado_preliminar', 'coordenadorId',
'numMaxTrabalhos', 'numMaxCoautores', 'hasResumo', 'criador_id', 'numParticipantes', '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(){ public function endereco(){
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Notificacao;
use App\Substituicao; use App\Substituicao;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Administrador; use App\Administrador;
...@@ -16,6 +17,7 @@ use App\GrandeArea; ...@@ -16,6 +17,7 @@ use App\GrandeArea;
use App\Natureza; use App\Natureza;
use App\Trabalho; use App\Trabalho;
use App\FuncaoParticipantes; use App\FuncaoParticipantes;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use App\Evento; use App\Evento;
...@@ -26,6 +28,9 @@ use Illuminate\Support\Facades\Mail; ...@@ -26,6 +28,9 @@ use Illuminate\Support\Facades\Mail;
use App\Mail\EventoCriado; use App\Mail\EventoCriado;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Response; use App\Http\Controllers\Response;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
class AdministradorController extends Controller class AdministradorController extends Controller
{ {
...@@ -54,9 +59,9 @@ class AdministradorController extends Controller ...@@ -54,9 +59,9 @@ class AdministradorController extends Controller
public function pareceres(Request $request){ public function pareceres(Request $request){
$evento = Evento::where('id', $request->evento_id)->first(); $evento = Evento::where('id', $request->evento_id)->first();
$trabalhosSubmetidos = $evento->trabalhos->where('status', 'submetido'); $trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho');
$trabalhosAvaliados = $evento->trabalhos->Where('status', 'avaliado'); // $trabalhosAvaliados = $evento->trabalhos->Where('status', 'avaliado');
$trabalhos = $trabalhosSubmetidos->merge($trabalhosAvaliados); // $trabalhos = $trabalhosSubmetidos->merge($trabalhosAvaliados);
return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]); return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]);
} }
...@@ -68,9 +73,12 @@ class AdministradorController extends Controller ...@@ -68,9 +73,12 @@ class AdministradorController extends Controller
$trabalhosAprovados = $evento->trabalhos->Where('status', 'aprovado'); $trabalhosAprovados = $evento->trabalhos->Where('status', 'aprovado');
$trabalhosReprovados = $evento->trabalhos->Where('status', 'reprovado'); $trabalhosReprovados = $evento->trabalhos->Where('status', 'reprovado');
$trabalhosCorrigidos = $evento->trabalhos->Where('status', 'corrigido'); $trabalhosCorrigidos = $evento->trabalhos->Where('status', 'corrigido');
$trabalhos = $trabalhosSubmetidos $trabalhos = $this->paginate($trabalhosSubmetidos);
$trabalhos = $this->paginate($trabalhosSubmetidos
->merge($trabalhosAvaliados)->merge($trabalhosAprovados) ->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(); $funcaoParticipantes = FuncaoParticipantes::all();
// $participantes = Participante::where('trabalho_id', $id)->get(); // $participantes = Participante::where('trabalho_id', $id)->get();
...@@ -80,6 +88,15 @@ class AdministradorController extends Controller ...@@ -80,6 +88,15 @@ class AdministradorController extends Controller
return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes]); 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){ public function analisarProposta(Request $request){
$trabalho = Trabalho::where('id',$request->id)->first(); $trabalho = Trabalho::where('id',$request->id)->first();
...@@ -521,6 +538,18 @@ class AdministradorController extends Controller ...@@ -521,6 +538,18 @@ class AdministradorController extends Controller
$evento->avaliadors()->syncWithoutDetaching($avaliadores); $evento->avaliadors()->syncWithoutDetaching($avaliadores);
$trabalho->save(); $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(); return redirect()->back();
} }
......
...@@ -3,10 +3,17 @@ ...@@ -3,10 +3,17 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Arquivo; use App\Arquivo;
use App\Notificacao;
use App\User;
use Auth;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use mysql_xdevapi\Exception; use mysql_xdevapi\Exception;
use Carbon\Carbon; use Carbon\Carbon;
use App\Notifications\RelatorioRecebimentoNotification;
use App\Administrador;
class ArquivoController extends Controller class ArquivoController extends Controller
{ {
...@@ -109,12 +116,67 @@ class ArquivoController extends Controller ...@@ -109,12 +116,67 @@ class ArquivoController extends Controller
$pasta = 'planoTrabalho/' . $arquivo->id; $pasta = 'planoTrabalho/' . $arquivo->id;
if($request->relatorioParcial != null) { if($request->relatorioParcial != null) {
$arquivo->relatorioParcial = Storage::putFileAs($pasta, $request->relatorioParcial, "RelatorioParcial.pdf"); $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) { if($request->relatorioFinal != null) {
$arquivo->relatorioFinal = Storage::putFileAs($pasta, $request->relatorioFinal, "RelatorioFinal.pdf"); $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(); $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){ }catch (Exception $th){
} }
......
...@@ -126,9 +126,9 @@ class AvaliadorController extends Controller ...@@ -126,9 +126,9 @@ class AvaliadorController extends Controller
$statusParecer = "NAO-RECOMENDADO"; $statusParecer = "NAO-RECOMENDADO";
if( if(
$request->anexoLinkLattes=='aceito' && $request->anexoGrupoPesquisa=='aceito' && $request->anexoProjeto=='aceito' && $request->anexoLinkLattes=='aceito' && $request->anexoGrupoPesquisa=='aceito' && $request->anexoProjeto=='aceito' &&
$request->anexoConsu=='aceito' && $request->anexoPlanilha=='aceito' && $request->anexoLattesCoordenador=='aceito' && $request->anexoConsu=='aceito' && $request->anexoLattesCoordenador=='aceito' && $request->anexoPlano=='aceito' &&
$request->anexoGrupoPesquisa=='aceito' && $request->anexoComiteEtica=='aceito' && $request->anexoJustificativa=='aceito' && $request->anexoGrupoPesquisa=='aceito' && $request->anexoComiteEtica=='aceito' && $request->anexoJustificativa=='aceito'
$request->anexoPlano=='aceito'){ ){
$statusParecer = "RECOMENDADO"; $statusParecer = "RECOMENDADO";
} }
if($parecerInterno == null) { if($parecerInterno == null) {
...@@ -145,6 +145,7 @@ class AvaliadorController extends Controller ...@@ -145,6 +145,7 @@ class AvaliadorController extends Controller
'statusJustificativaAutorizacaoEtica' => $request->anexoJustificativa, 'statusJustificativaAutorizacaoEtica' => $request->anexoJustificativa,
'statusPlanoTrabalho' => $request->anexoPlano, 'statusPlanoTrabalho' => $request->anexoPlano,
'statusParecer' => $statusParecer, 'statusParecer' => $statusParecer,
'comentario' => $request->comentario,
'trabalho_id' => $request->trabalho_id, 'trabalho_id' => $request->trabalho_id,
'avaliador_id' => $request->avaliador_id, 'avaliador_id' => $request->avaliador_id,
]); ]);
...@@ -160,6 +161,7 @@ class AvaliadorController extends Controller ...@@ -160,6 +161,7 @@ class AvaliadorController extends Controller
$parecerInterno->statusAnexoAtuorizacaoComiteEtica = $request->anexoComiteEtica; $parecerInterno->statusAnexoAtuorizacaoComiteEtica = $request->anexoComiteEtica;
$parecerInterno->statusJustificativaAutorizacaoEtica = $request->anexoJustificativa; $parecerInterno->statusJustificativaAutorizacaoEtica = $request->anexoJustificativa;
$parecerInterno->statusPlanoTrabalho = $request->anexoPlano; $parecerInterno->statusPlanoTrabalho = $request->anexoPlano;
$parecerInterno->comentario = $request->comentario;
$parecerInterno->statusParecer = $statusParecer; $parecerInterno->statusParecer = $statusParecer;
$parecerInterno->update(); $parecerInterno->update();
} }
......
<?php
namespace App\Http\Controllers;
use App\Arquivo;
use App\documentacaoComplementar;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
class DocumentacaoComplementarController extends Controller
{
public function criar(Request $request)
{
if($request->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"]);
}
}
...@@ -126,6 +126,10 @@ class EventoController extends Controller ...@@ -126,6 +126,10 @@ class EventoController extends Controller
'dt_fimRelatorioParcial' => ['required', 'date'], 'dt_fimRelatorioParcial' => ['required', 'date'],
'dt_inicioRelatorioFinal' => ['required', 'date'], 'dt_inicioRelatorioFinal' => ['required', 'date'],
'dt_fimRelatorioFinal' => ['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'], 'pdfEdital' => [($request->pdfEditalPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'],
//'modeloDocumento' => [], //'modeloDocumento' => [],
]); ]);
...@@ -154,6 +158,8 @@ class EventoController extends Controller ...@@ -154,6 +158,8 @@ class EventoController extends Controller
'dt_fimRelatorioParcial' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioParcial'], 'dt_fimRelatorioParcial' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioParcial'],
'dt_inicioRelatorioFinal' => ['required', 'date', 'after:dt_fimRelatorioParcial'], 'dt_inicioRelatorioFinal' => ['required', 'date', 'after:dt_fimRelatorioParcial'],
'dt_fimRelatorioFinal' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioFinal'], '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'], 'pdfEdital' => [($request->pdfEditalPreenchido!=='sim'?'required':''), 'file', 'mimes:pdf', 'max:2048'],
//'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,pdf', 'max:2048'], //'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,pdf', 'max:2048'],
]); ]);
...@@ -214,6 +220,26 @@ class EventoController extends Controller ...@@ -214,6 +220,26 @@ class EventoController extends Controller
$evento->modeloDocumento = $path . $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(); $evento->update();
// $user = Auth::user(); // $user = Auth::user();
...@@ -247,6 +273,14 @@ class EventoController extends Controller ...@@ -247,6 +273,14 @@ class EventoController extends Controller
$nome = "modelo" . "." . $extension; $nome = "modelo" . "." . $extension;
$eventoTemp->modeloDocumento = Storage::putFileAs($path, $request->modeloDocumento, $nome); $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(); $eventoTemp->update();
...@@ -378,6 +412,8 @@ class EventoController extends Controller ...@@ -378,6 +412,8 @@ class EventoController extends Controller
'dt_fimRelatorioFinal' => ['required', 'date'], 'dt_fimRelatorioFinal' => ['required', 'date'],
'pdfEdital' => ['file', 'mimes:pdf', 'max:2048'], 'pdfEdital' => ['file', 'mimes:pdf', 'max:2048'],
'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,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'],
]); ]);
} }
...@@ -400,6 +436,8 @@ class EventoController extends Controller ...@@ -400,6 +436,8 @@ class EventoController extends Controller
'dt_inicioRelatorioFinal' => ['required', 'date', 'after:dt_fimRelatorioParcial'], 'dt_inicioRelatorioFinal' => ['required', 'date', 'after:dt_fimRelatorioParcial'],
'dt_fimRelatorioFinal' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioFinal'], 'dt_fimRelatorioFinal' => ['required', 'date', 'after_or_equal:dt_inicioRelatorioFinal'],
'modeloDocumento' => ['file', 'mimes:zip,doc,docx,odt,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'],
]); ]);
$evento->nome = $request->nome; $evento->nome = $request->nome;
...@@ -437,6 +475,26 @@ class EventoController extends Controller ...@@ -437,6 +475,26 @@ class EventoController extends Controller
$evento->modeloDocumento = $path . $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(); $evento->update();
$eventos = Evento::orderBy('nome')->get(); $eventos = Evento::orderBy('nome')->get();
......
...@@ -4,6 +4,7 @@ namespace App\Http\Controllers; ...@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Notificacao; use App\Notificacao;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class NotificacaoController extends Controller class NotificacaoController extends Controller
{ {
...@@ -86,14 +87,46 @@ class NotificacaoController extends Controller ...@@ -86,14 +87,46 @@ class NotificacaoController extends Controller
public function listar() public function listar()
{ {
$notificacoes = Notificacao::all()->sortByDesc('created_at'); $notificacoes = Notificacao::all()->sortByDesc('created_at');
return view('notificacao.listar',['notificacoes'=>$notificacoes]); return view('notificacao.listar', ['notificacoes' => $notificacoes]);
} }
public function listarTrab() public function listarTrab()
{ {
$destinatarios = Notificacao::where('destinatario_id',Auth()->user()->id)->get(); $notificacoes = Notificacao::where('destinatario_id', Auth()->user()->id)->get()->sortByDesc('created_at');
$remetentes = Notificacao::where('remetente_id',Auth()->user()->id)->get();
$notificacoes = $destinatarios->merge($remetentes)->sortByDesc('created_at'); return view('notificacao.listar', ['notificacoes' => $notificacoes]);
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');
}
}
}
} }
...@@ -92,6 +92,13 @@ class ParticipanteController extends Controller ...@@ -92,6 +92,13 @@ class ParticipanteController extends Controller
return view('administrador.listarBolsas')->with(['participantes' => $participantes, 'trabalhos' => $trabalhos]); 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){ public function alterarBolsa($id,$tipo){
$participante = Participante::find($id); $participante = Participante::find($id);
if($participante->tipoBolsa ==null){ if($participante->tipoBolsa ==null){
......
This diff is collapsed.
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Facades\Auth;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
class RelatorioRecebimentoNotification extends Notification
{
use Queueable;
public $data;
public $url;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($id,$usuario,$eventoTitulo,$trabalhoTitulo,$tipoRelatorio)
{
$this->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 [
//
];
}
}
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Facades\Auth;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
class SubmissaoRecebidaNotification extends Notification
{
use Queueable;
public $data;
public $url;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($id,$titulo,$usuario)
{
$this->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 [
//
];
}
}
...@@ -33,4 +33,8 @@ class Participante extends Model ...@@ -33,4 +33,8 @@ class Participante extends Model
public function planoTrabalho() { public function planoTrabalho() {
return $this->hasOne('App\Arquivo', 'participanteId'); return $this->hasOne('App\Arquivo', 'participanteId');
} }
public function documentacaoComplementar() {
return $this->hasOne('App\DocumentacaoComplementar', 'participante_id');
}
} }
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddComentarioParecerInternos extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('parecer_internos', function (Blueprint $table) {
$table->text('comentario')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('parecer_internos', function (Blueprint $table) {
$table->dropColumn('comentario');
});
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateDocumentacaoComplementarsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('documentacao_complementars', function (Blueprint $table) {
$table->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');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AlterTableEventos3 extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('eventos', function (Blueprint $table) {
$table->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');
});
}
}
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
@section('content') @section('content')
<div class="row justify-content-center" style="margin-top: 100px; overflow-x: hidden;overflow-y:hidden">
<div class="row justify-content-center" style="margin-top: 100px;"> <div class="col-md-11">
<div class="col-md-10"> <div class="row">
<div class="card" style="border-radius: 5px"> <div class="col-sm-7">
<div class="card-body" style="padding-top: 0.2rem;"> <div class="card-body" style="padding-top: 0.2rem;">
<div class="container"> <div class="container">
<div class="form-row mt-3"> <div class="form-row mt-3">
...@@ -13,57 +13,84 @@ ...@@ -13,57 +13,84 @@
<div class="col-md-12"><h6 style="color: #234B8B; margin-bottom:-0.4rem; font-weight: bold; font-size: 14px;">Propostas Submetidas</h6></div> <div class="col-md-12"><h6 style="color: #234B8B; margin-bottom:-0.4rem; font-weight: bold; font-size: 14px;">Propostas Submetidas</h6></div>
</div> </div>
</div> </div>
<hr> </div>
<div class="container"> </div>
<div class="row"> <div class="col-sm-5" style="top: 40px; text-align: end">
@foreach( $trabalhos as $trabalho ) <h6 style="color: #234B8B; font-weight: bold;font-size: 13px; text-align: right">
<div onclick="myFunc({{$trabalho->id}})" class="col-md-6 card" style="border-color:#1492E6;border-radius: 10px; margin-top: 10px;"> <img src="{{asset('img/icons/pendente.png')}}" style="width: 22px"/>
<a href="{{route('admin.analisarProposta',['id'=>$trabalho->id])}}" id="vizuProposta{{$trabalho->id}}" hidden>teste visual de proposta</a> Proposta Pendente
<div class="row"> <img src="{{asset('img/icons/aprovado.png')}}" style="width: 22px"/>
<div class="col-md-10"> Proposta Aprovada
<h6 style="color: #1492E6; font-size: 16px;">{{ $trabalho->titulo }}</h6> <img src="{{asset('img/icons/negado.png')}}" style="width: 22px"/>
<h6 style="color: #234B8B; font-weight: bold;font-size: 13px;">Proponente: Proposta Negada
@foreach($trabalho->participantes as $participante) <br>
{{$participante->user->name}}; <img src="{{asset('img/icons/parcialmenteAprovado.png')}}" style="width: 22px"/>
@endforeach Proposta Parcialmente Aprovada
</h6> </h6>
<h6 style="color: #234B8B; font-weight: bold;font-size: 13px;">Data: {{ date('d/m/Y', strtotime($trabalho->created_at)) }}</h6>
</div> </div>
</div>
</div>
</div>
@foreach( $trabalhos as $trabalho )
<!--Informações Proponente-->
<div class="row justify-content-center" style="margin-top: 20px;">
<br>
<div class="col-md-11" onclick="myFunc({{$trabalho->id}})">
<a href="{{route('admin.analisarProposta',['id'=>$trabalho->id])}}" id="vizuProposta{{$trabalho->id}}" hidden></a>
<div class="card" style="border-radius: 5px;">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-md-10"><h5 style="color: #234B8B; font-weight: bold">Titulo: {{ $trabalho->titulo }}</h5></div>
<div class="col-md-2"> <div class="col-md-2">
@if($trabalho->status == "aprovado") @if($trabalho->status == "aprovado")
<img src="{{asset('img/icons/aprovado.png')}}" style="width: 60%;margin: auto;display: flex;margin-top: 5px;justify-content: center;align-items: center;" alt=""> <img src="{{asset('img/icons/aprovado.png')}}" style="width: 23%;margin: auto;display: flex;margin-top: 0px;justify-content: center;align-items: center;" alt="">
@elseif($trabalho->status == "reprovado") @elseif($trabalho->status == "reprovado")
<img src="{{asset('img/icons/negado.png')}}" style="width: 60%;margin: auto;display: flex;margin-top: 5px;justify-content: center;align-items: center;" alt=""> <img src="{{asset('img/icons/negado.png')}}" style="width: 23%;margin: auto;display: flex;margin-top: 0px;justify-content: center;align-items: center;" alt="">
@elseif($trabalho->status == "corrigido")
<img src="{{asset('img/icons/parcialmenteAprovado.png')}}" style="width: 23%;margin: auto;display: flex;margin-top: 0px;justify-content: center;align-items: center;" alt="">
@else @else
<img src="{{asset('img/icons/pendente.png')}}" style="width: 60%;margin: auto;display: flex;margin-top: 5px;justify-content: center;align-items: center;" alt=""> <img src="{{asset('img/icons/pendente.png')}}" style="width: 20%;margin: auto;display: flex;justify-content: center;align-items: center;" alt="">
@endif @endif
</div> </div>
</div> </div>
<hr style="border-top: 1px solid#1492E6">
<div class="form-row mt-3">
<div class="col-md-12">
<p style="color: #4D4D4D; padding: 0px"><b>Proponente:</b> {{ App\Proponente::find($trabalho->proponente_id)->user->name }}</p>
</div> </div>
<div class="col-md-12"> <p style="color: #4D4D4D; padding: 0px"><b>Discentes:</b>
@foreach($trabalho->participantes as $participante)
{{$participante->user->name}};
@endforeach @endforeach
</div> </div>
<div class="col-md-12">
<h6 style="color: #234B8B; font-weight: bold;font-size: 13px;">Data: {{ date('d/m/Y', strtotime($trabalho->created_at)) }}</h6>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="container" >
<div class="row" >
<div class="col-sm-10">
<br>
<h6 style="color: #234B8B; font-weight: bold;font-size: 13px;">
<img src="{{asset('img/icons/pendente.png')}}" style="width: 30px"/>
Proposta Pendente</h6>
<h6 style="color: #234B8B; font-weight: bold;font-size: 13px;">
<img src="{{asset('img/icons/aprovado.png')}}" style="width: 30px"/>
Proposta Aprovada</h6>
<h6 style="color: #234B8B; font-weight: bold;font-size: 13px;">
<img src="{{asset('img/icons/negado.png')}}" style="width: 30px"/>
Proposta Negada</h6>
</div> </div>
</div> </div>
@endforeach
<div class="row justify-content-center" >
<div class="col-md-11">
<br>
{{ $trabalhos->links() }}
</div> </div>
</div> </div>
...@@ -77,3 +104,8 @@ ...@@ -77,3 +104,8 @@
} }
</script> </script>
@endsection @endsection
<style>
html{
overflow-x:hidden;
}
</style>
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
<div class="modal-dialog modal-dialog-centered modal-lg"> <div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header" style="overflow-x:auto"> <div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5> <h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6"> <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6">
...@@ -141,7 +141,7 @@ ...@@ -141,7 +141,7 @@
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body" style="padding-right: 32px;padding-left: 32px;padding-top: 20px;padding-bottom: 32px;">
@include('administrador.vizualizarParticipante', ['visualizarSubstituido' => 1]) @include('administrador.vizualizarParticipante', ['visualizarSubstituido' => 1])
</div> </div>
</div> </div>
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
<div class="modal-dialog modal-dialog-centered modal-lg"> <div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header" style="overflow-x:auto"> <div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5> <h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6"> <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6">
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body" style="padding-right: 32px;padding-left: 32px;padding-top: 20px;padding-bottom: 32px;">
@include('administrador.vizualizarParticipante') @include('administrador.vizualizarParticipante')
</div> </div>
</div> </div>
...@@ -267,7 +267,7 @@ ...@@ -267,7 +267,7 @@
<div class="modal-dialog modal-dialog-centered modal-lg"> <div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header" style="overflow-x:auto"> <div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5> <h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6"> <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6">
...@@ -275,7 +275,7 @@ ...@@ -275,7 +275,7 @@
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body" style="padding-right: 32px;padding-left: 32px;padding-top: 20px;padding-bottom: 32px;">
@include('administrador.vizualizarParticipante', ['visualizarSubstituido' => 1]) @include('administrador.vizualizarParticipante', ['visualizarSubstituido' => 1])
</div> </div>
</div> </div>
...@@ -287,7 +287,7 @@ ...@@ -287,7 +287,7 @@
<div class="modal-dialog modal-dialog-centered modal-lg"> <div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header" style="overflow-x:auto"> <div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5> <h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6"> <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6">
...@@ -295,7 +295,7 @@ ...@@ -295,7 +295,7 @@
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body" style="padding-right: 32px;padding-left: 32px;padding-top: 20px;padding-bottom: 32px;">
@include('administrador.vizualizarParticipante') @include('administrador.vizualizarParticipante')
</div> </div>
</div> </div>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment