"resources/vscode:/vscode.git/clone" did not exist on "de6c2c8ff470e874132098224c8ef98b220a7a86"
Unverified Commit 6ac4a6d1 authored by Antônio Durval's avatar Antônio Durval Committed by GitHub
Browse files

Merge pull request #719 from yuriresendematias/master

Selecionando várias áreas temáticas durante o convite para o avaliador
parents a3165e85 df50a554
<?php
namespace App\Http\Controllers;
use App\Administrador;
use App\AdministradorResponsavel;
use App\Area;
use App\AvaliacaoRelatorio;
use App\Avaliador;
use App\CoordenadorComissao;
use App\Evento;
use App\FuncaoParticipantes;
use App\GrandeArea;
use App\Mail\EmailLembrete;
use App\Mail\EmailParaUsuarioNaoCadastrado;
use App\Natureza;
use App\Notificacao;
use App\Notifications\AtribuicaoAvaliadorExternoNotification;
use App\ParecerInterno;
use App\Participante;
use App\Proponente;
use App\Substituicao;
use App\Trabalho;
use App\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
use PDF;
use DB;
use App\AreaTematica;
class AdministradorController extends Controller
{
public function index()
{
return view('administrador.index');
}
public function naturezas()
{
$naturezas = Natureza::orderBy('nome')->get();
$funcoesParticipante = FuncaoParticipantes::orderBy('nome')->get();
return view('naturezas.index')->with(['naturezas' => $naturezas, 'funcoes' => $funcoesParticipante]);
}
public function usuarios()
{
$users = User::orderBy('name')->get();
return view('administrador.usersAdmin')->with(['users' => $users]);
}
public function editais()
{
//$admin = Administrador::with('user')->where('user_id', Auth()->user()->id)->first();
//$eventos = Evento::where('coordenadorId',$admin->id )->get();
$eventos = Evento::all()->sortByDesc('created_at');
return view('administrador.editais', ['eventos' => $eventos]);
}
public function pareceres(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho');
$coordenador_id_evento = $evento->coordenadorId;
$coordenador_id = CoordenadorComissao::find($coordenador_id_evento);
$user = Auth::user();
if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) {
return redirect()->back();
}
return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]);
}
public function analisar(Request $request)
{
$evento = Evento::find($request->evento_id);
$status = ['submetido', 'avaliado', 'aprovado', 'reprovado', 'corrigido'];
$aux = Trabalho::where('evento_id', $evento->id)
->whereIn('status', $status)
->pluck('grande_area_id');
$idArea = Trabalho::where('evento_id', $evento->id)
->whereIn('status', $status)
->pluck('area_id');
$trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho')->sortBy('titulo');
$grandesAreas = GrandeArea::whereIn('id', $aux)->get();
$areas = Area::whereIn('id', $idArea)->get();
$funcaoParticipantes = FuncaoParticipantes::all();
// $participantes = Participante::where('trabalho_id', $id)->get();
// $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
// $participantes = User::whereIn('id', $participantesUsersIds)->get();
return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes, 'column' => $request->column, 'grandesAreas' => $grandesAreas, 'areas' => $areas]);
}
// Utilizado para paginação de Collection
public function analisarProposta(Request $request)
{
$trabalho = Trabalho::where('id', $request->id)->first();
$evento = Evento::where('id', $trabalho->evento_id)->first();
$funcaoParticipantes = FuncaoParticipantes::all();
$substituicoesProjeto = Substituicao::where('trabalho_id', $trabalho->id)->orderBy('created_at', 'DESC')->get();
$substituicoesPendentes = Substituicao::where('trabalho_id', $trabalho->id)->where('status', 'Em Aguardo')->orderBy('created_at', 'DESC')->get();
$avalSelecionadosId = $trabalho->avaliadors->pluck('id');
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
$trabalho->aval = $avalProjeto;
// Usuarios que possuem avaliações de relatório
//$avaliacoesRelatorio = [];->join('users','users.id','=','candidatos.user_id')
$AvalRelatParcial = [];
$AvalRelatFinal = [];
foreach ($trabalho->participantes as $participante) {
if (isset($participante->planoTrabalho)) {
$avals = AvaliacaoRelatorio::where('arquivo_id', $participante->planoTrabalho->id)->get();
} else {
$avals = [];
}
foreach ($avals as $aval) {
if ($aval->tipo == 'Parcial') {
array_push($AvalRelatParcial, $aval);
} else {
array_push($AvalRelatFinal, $aval);
}
}
}
// Verficação de pendencia de substituição
$aux = count(Substituicao::where('status', 'Em Aguardo')->whereIn('participanteSubstituido_id', $trabalho->participantes->pluck('id'))->get());
$flagSubstituicao = 1;
if ($aux != 0) {
$flagSubstituicao = -1;
}
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areasTematicas = AreaTematica::orderBy('nome')->get();
//dd($areasTematicas);
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('administrador.analisarProposta')->with(
['trabalho' => $trabalho,
'funcaoParticipantes' => $funcaoParticipantes,
'evento' => $evento,
'substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,
'grandeAreas' => $grandeAreas,
'AvalRelatParcial' => $AvalRelatParcial,
'AvalRelatFinal' => $AvalRelatFinal,
'hoje' => $hoje,
'flagSubstituicao' => $flagSubstituicao,
'areasTematicas' => $areasTematicas, ]);
}
public function showProjetos(Request $request)
{
$projetos = Trabalho::all()->where('status', '<>', 'rascunho');
$funcaoParticipantes = FuncaoParticipantes::all();
return view('administrador.listaProjetos')->with(['projetos' => $projetos, 'funcaoParticipantes' => $funcaoParticipantes]);
}
public function showResultados(Request $request)
{
//dd($request);
$evento = Evento::where('id', $request->evento_id)->first();
$coordenador_id_evento = $evento->coordenadorId;
$coordenador_id = CoordenadorComissao::find($coordenador_id_evento);
$user = Auth::user();
if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) {
return redirect()->back();
}
// Com cotas
if ($evento->cotaDoutor) {
// Ampla Concorrencia
$trabalhosAmpla = Trabalho::where('evento_id', $evento->id)
->where('modalidade', 'AmplaConcorrencia')->get();
foreach ($trabalhosAmpla as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhosAmpla = $trabalhosAmpla->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
// Recém Doutor
$trabalhosDoutor = Trabalho::where('evento_id', $evento->id)
->where('modalidade', 'RecemDoutor')->get();
foreach ($trabalhosDoutor as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhosDoutor = $trabalhosDoutor->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
return view('administrador.resultadosProjetosCotas')->with(['evento' => $evento, 'trabalhosAmpla' => $trabalhosAmpla, 'trabalhosDoutor' => $trabalhosDoutor]);
}
// Sem Cotas
$trabalhos = $evento->trabalhos;
foreach ($trabalhos as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhos = $trabalhos->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
return view('administrador.resultadosProjetos')->with(['evento' => $evento, 'trabalhos' => $trabalhos]);
}
public function visualizarParecer(Request $request)
{
$avaliador = Avaliador::find($request->avaliador_id);
$trabalho = $avaliador->trabalhos->where('id', $request->trabalho_id)->first();
$parecer = $avaliador->trabalhos->where('id', $request->trabalho_id)->first()->pivot;
//dd($parecer);
return view('administrador.visualizarParecer')->with(['trabalho' => $trabalho, 'parecer' => $parecer, 'avaliador' => $avaliador]);
}
public function visualizarParecerInterno(Request $request)
{
$avaliador = Avaliador::find($request->avaliador_id);
$trabalho = $avaliador->trabalhos->where('id', $request->trabalho_id)->first();
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
$evento = Evento::find($trabalho->evento_id);
//dd($parecer);
return view('administrador.visualizarParecerInterno')->with(['parecer' => $parecerInterno, 'avaliador' => $avaliador, 'trabalho' => $trabalho, 'evento' => $evento]);
}
public function create()
{
return view('administrador.novo_user');
}
public function salvar(Request $request)
{
if ($request->tipo == 'coordenador') {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'],
'celular' => ($request['celular'] != null ? 'required|string|telefone' : 'nullable'),
'cpf' => ($request['cpf'] != null ? 'required|cpf|unique:users' : 'nullable'),
]);
} elseif ($request->tipo != 'proponente') {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'celular' => ['required', 'string', 'telefone'],
'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'],
'cpf' => ['required', 'cpf', 'unique:users'],
]);
} else {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'tipo' => ['required'],
'cpf' => ['required', 'cpf', 'unique:users'],
'celular' => ['required', 'string', 'telefone'],
'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'cargo' => ['required'],
'vinculo' => ['required'],
'outro' => ['required_if:vinculo,Outro'],
'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'],
'titulacaoMaxima' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'],
'anoTitulacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'],
'areaFormacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'],
'bolsistaProdutividade' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'nivel' => ['required_if:bolsistaProdutividade,sim'],
//'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required' : ''],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes' : ''],
]);
}
if (!($request->senha === $request->confirmar_senha)) {
return redirect()->back()->withErrors(['senha' => 'Senhas diferentes']);
}
$user = new User();
$user->name = $request->name;
$user->tipo = $request->tipo;
$user->cpf = $request->cpf;
$user->celular = $request->celular;
$user->email = $request->email;
$user->password = bcrypt($request->senha);
if ($request->instituicao != null) {
$user->instituicao = $request->instituicao;
} elseif (isset($request->instituicaoSelect) && $request->instituicaoSelect != 'Outra') {
$user->instituicao = $request->instituicaoSelect;
}
$user->save();
switch ($request->tipo) {
case 'administradorResponsavel':
$adminResp = new AdministradorResponsavel();
$adminResp->user_id = $user->id;
$adminResp->save();
break;
case 'coordenador':
$coordenador = new CoordenadorComissao();
$coordenador->user_id = $user->id;
$coordenador->save();
break;
case 'avaliador':
$avaliador = new Avaliador();
$avaliador->user_id = $user->id;
$avaliador->tipo = $request->tipoAvaliador;
$avaliador->save();
break;
case 'proponente':
$proponente = new Proponente();
if ($request->SIAPE != null) {
$proponente->SIAPE = $request->SIAPE;
}
$proponente->cargo = $request->cargo;
if ($request->vinculo != 'Outro') {
$proponente->vinculo = $request->vinculo;
} else {
$proponente->vinculo = $request->outro;
}
$proponente->titulacaoMaxima = $request->titulacaoMaxima;
$proponente->anoTitulacao = $request->anoTitulacao;
$proponente->areaFormacao = $request->areaFormacao;
$proponente->bolsistaProdutividade = $request->bolsistaProdutividade;
if ($request->bolsistaProdutividade == 'sim') {
$proponente->nivel = $request->nivel;
}
$proponente->linkLattes = $request->linkLattes;
$proponente->user_id = $user->id;
$proponente->save();
break;
case 'participante':
$participante = new Participante();
$participante->user_id = $user->id;
$participante->save();
break;
}
return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário cadastrado com sucesso']);
}
public function edit($id)
{
$user = User::find($id);
$adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first();
$avaliador = Avaliador::where('user_id', '=', $id)->first();
$proponente = Proponente::where('user_id', '=', $id)->first();
$participante = Participante::where('user_id', '=', $id)->first();
return view('administrador.editar_user')->with(['user' => $user,
'adminResp' => $adminResp,
'proponente' => $proponente,
'participante' => $participante, ]);
}
public function update(Request $request, $id)
{
$user = User::find($id);
if ($request->tipo == 'coordenador') {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'celular' => ($request['celular'] != null ? 'required|string|telefone' : 'nullable'),
'cpf' => ($request['cpf'] != null ? 'required|cpf|unique:users' : 'nullable'),
]);
} elseif ($request->tipo != 'proponente') {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'celular' => ['required', 'string', 'telefone'],
'cpf' => ['required', 'cpf'],
]);
} else {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255'],
'tipo' => ['required'],
'cpf' => ['required', 'cpf'],
'celular' => ['required', 'string', 'telefone'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'cargo' => ['required'],
'vinculo' => ['required'],
'outro' => ['required_if:vinculo,Outro'],
'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'],
'titulacaoMaxima' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'],
'anoTitulacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'],
'areaFormacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'],
'bolsistaProdutividade' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'nivel' => ['required_if:bolsistaProdutividade,sim'],
//'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required' : ''],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes' : ''],
]);
}
// if (!(Hash::check($request->senha_atual, $user->password))) {
// return redirect()->back()->withErrors(['senha_atual' => 'Senha atual não correspondente']);
// }
// if (!($request->nova_senha === $request->confirmar_senha)) {
// return redirect()->back()->withErrors(['nova_senha' => 'Senhas diferentes']);
// }
switch ($request->tipo) {
case 'administradorResponsavel':
$adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first();
$adminResp->user_id = $user->id;
$adminResp->update();
break;
case 'coordenador':
$coordenador = CoordenadorComissao::where('user_id', '=', $id)->first();
$coordenador->user_id = $user->id;
$coordenador->update();
break;
case 'avaliador':
$avaliador = Avaliador::where('user_id', '=', $id)->first();
$avaliador->user_id = $user->id;
$avaliador->update();
break;
case 'proponente':
$proponente = Proponente::where('user_id', '=', $id)->first();
if ($request->SIAPE != null) {
$proponente->SIAPE = $request->SIAPE;
}
$proponente->cargo = $request->cargo;
if ($request->vinculo != 'Outro') {
$proponente->vinculo = $request->vinculo;
} else {
$proponente->vinculo = $request->outro;
}
$proponente->titulacaoMaxima = $request->titulacaoMaxima;
$proponente->anoTitulacao = $request->anoTitulacao;
$proponente->areaFormacao = $request->areaFormacao;
$proponente->bolsistaProdutividade = $request->bolsistaProdutividade;
if ($request->bolsistaProdutividade == 'sim') {
$proponente->nivel = $request->nivel;
}
$proponente->linkLattes = $request->linkLattes;
$proponente->user_id = $user->id;
$proponente->update();
break;
case 'participante':
$participante = Participante::where('user_id', '=', $id)->first();
$participante->user_id = $user->id;
$participante->update();
break;
}
$user->name = $request->name;
$user->tipo = $request->tipo;
$user->email = $request->email;
$user->cpf = $request->cpf;
$user->celular = $request->celular;
if ($request->instituicao != null) {
$user->instituicao = $request->instituicao;
} elseif (isset($request->instituicaoSelect) && $request->instituicaoSelect != 'Outra') {
$user->instituicao = $request->instituicaoSelect;
}
// $user->password = bcrypt($request->nova_senha);
$user->update();
return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário atualizado com sucesso']);
}
public function destroy($id)
{
$user = User::find($id);
$adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first();
$avaliador = Avaliador::where('user_id', '=', $id)->first();
$proponente = Proponente::where('user_id', '=', $id)->first();
$participante = Participante::where('user_id', '=', $id)->first();
if (!(is_null($adminResp))) {
$adminResp->delete();
} elseif (!(is_null($avaliador))) {
$avaliador->delete();
} elseif (!(is_null($proponente))) {
$proponente->delete();
} elseif (!(is_null($participante))) {
$participante->delete();
}
$user->delete();
return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário deletado com sucesso']);
}
public function atribuir(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$coordenador_id_evento = $evento->coordenadorId;
$coordenador_id = CoordenadorComissao::find($coordenador_id_evento);
$user = Auth::user();
if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) {
return redirect()->back();
}
return view('administrador.atribuirAvaliadores', ['evento' => $evento]);
}
public function selecionar(Request $request)
{
$user = Auth::user();
$evento = Evento::where('id', $request->evento_id)->first();
$coordenador_id_evento = $evento->coordenadorId;
$coordenador_id = CoordenadorComissao::find($coordenador_id_evento);
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areasTematicas = AreaTematica::orderBy('nome')->get();
$avalSelecionados = $evento->avaliadors;
$avalNaoSelecionadosId = $evento->avaliadors->pluck('id');
$trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho');
$avaliadores = Avaliador::whereNotIn('id', $avalNaoSelecionadosId)->get();
//$avaliadores = Avaliador::join('naturezas_avaliadors', 'avaliadors.id', '=' ,'naturezas_avaliadors.avaliador_id')->whereNotIn('avaliadors.id', $avalNaoSelecionadosId)
// ->where('naturezas_avaliadors.natureza_id', $evento->natureza_id)
// ->get();
$avaliadores_extensao = collect();
$avaliadores_others = collect();
foreach($avaliadores as $avaliador){
if($evento->natureza_id == 3 && count($avaliador->areaTematicas) > 0){
$avaliadores_extensao->push($avaliador);
}elseif($evento->natureza_id != 3 && count($avaliador->areaTematicas) == 0){
$avaliadores_others->push($avaliador);
}
}
if($evento->natureza_id == 3){
$avaliadores = $avaliadores_extensao;
} else {
$avaliadores = $avaliadores_others;
}
if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) {
return redirect()->back();
}
return view('administrador.selecionarAvaliadores', [
'evento' => $evento,
'avaliadores' => $avaliadores,
'avalSelecionados' => $avalSelecionados,
'grandeAreas' => $grandeAreas,
'trabalhos' => $trabalhos,
'areasTematicas' => $areasTematicas,
]);
}
public function projetos(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$trabalhos = $evento->trabalhos;
$grandesAreas = GrandeArea::orderBy('nome')->get();
$areasTematicas = AreaTematica::orderBy('nome')->get();
$avaliadores = $evento->avaliadors;
foreach ($trabalhos as $key => $trabalho) {
$avalSelecionadosId = $trabalho->avaliadors->pluck('id');
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
$trabalho->aval = $avalProjeto;
}
//dd($avaliadores->teste);
return view('administrador.selecionarProjetos', [
'evento' => $evento,
'trabalhos' => $trabalhos,
'avaliadores' => $avaliadores,
'grandesAreas' => $grandesAreas,
'areasTematicas' => $areasTematicas
]);
}
public function adicionar(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$aval = Avaliador::where('id', $request->avaliador_id)->first();
$aval->eventos()->attach($evento);
$aval->save();
$user = $aval->user()->first();
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($user->email)
->send(new EmailParaUsuarioNaoCadastrado($user->name, ' ', 'Avaliador-Cadastrado', $evento->nome, ' ', $subject, $evento->tipo, $evento->natureza_id));
return redirect()->back();
}
public function remover(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$aval = Avaliador::where('id', $request->avaliador_id)->first();
$aval->eventos()->detach($evento);
$aval->trabalhos()->detach();
$aval->save();
return redirect()->back();
}
public function removerProjAval(Request $request)
{
//Acesso 1 = Ad Hoc, 2 - Interno, 3 - Interno e Ad Hoc
$aval = Avaliador::where('id', $request->avaliador_id)->first();
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
if ($request->flag == 0) {
if (($aval->tipo == 'Interno' && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) || ($aval->tipo == null && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3 && ($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco'))) {
$aval->trabalhos()
->updateExistingPivot($trabalho->id, ['acesso' => 2]);
} else {
$aval->trabalhos()->detach($trabalho);
}
} else {
if (($aval->tipo == 'Interno' && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) || ($aval->tipo == null && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3 && ($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco'))) {
$aval->trabalhos()
->updateExistingPivot($trabalho->id, ['acesso' => 1]);
} else {
$aval->trabalhos()->detach($trabalho);
}
}
if ($trabalho->status === 'avaliado') {
$trabalho->status = 'submetido';
$trabalho->save();
}
$aval->save();
return redirect()->back();
}
public function buscar(Request $request)
{
$trabalho = Trabalho::where('id', $request->item)->first();
$avalSelecionadosId = $trabalho->avaliadors->pluck('id');
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
//dd($avaliadores);
return response()->json($avalProjeto);
}
public function atribuicaoProjeto(Request $request)
{
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
$evento = Evento::where('id', $request->evento_id)->first();
if ($request->avaliadores_internos_id != null) {
foreach ($request->avaliadores_internos_id as $avaliador) {
$aval = Avaliador::find($avaliador);
if ($aval->trabalhos()->where('trabalho_id', $trabalho->id)->first() != null) {
$aval->trabalhos()
->updateExistingPivot($trabalho->id, ['acesso' => 3]);
} else {
$trabalho->avaliadors()->attach($aval, ['acesso' => 2]);
$evento->avaliadors()->syncWithoutDetaching($aval);
}
}
}
if ($request->avaliadores_externos_id != null) {
foreach ($request->avaliadores_externos_id as $avaliador) {
$aval = Avaliador::find($avaliador);
if (Avaliador::where('id', $avaliador)->where('tipo', 'Interno')->count() > 0 || (Avaliador::where('id', $avaliador)->where('tipo', null)->count() > 0 && (($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco')))) {
if ($aval->trabalhos()->where('trabalho_id', $trabalho->id)->first() != null) {
$aval->trabalhos()
->updateExistingPivot($trabalho->id, ['acesso' => 3]);
} else {
$trabalho->avaliadors()->attach($aval, ['acesso' => 1]);
$evento->avaliadors()->syncWithoutDetaching($aval);
}
} else {
$trabalho->avaliadors()->attach($aval, ['acesso' => 1]);
$evento->avaliadors()->syncWithoutDetaching($aval);
}
}
}
if ($request->avaliadores_externos_id == null & $request->avaliadores_internos_id == null) {
redirect()->back()->with(['error' => 'Selecione ao menos um avaliador.', 'trabalho' => $trabalho->id]);
}
$avaliadores = Avaliador::whereIn('id', (array) $request->avaliadores_externos_id)
->orWhereIn('id', (array) $request->avaliadores_internos_id)->get();
$trabalho->save();
foreach ($avaliadores as $avaliador) {
$userTemp = User::find($avaliador->user->id);
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $avaliador->user_id,
'trabalho_id' => $request->trabalho_id,
'lido' => false,
'tipo' => 5,
]);
$notificacao->save();
Notification::send($userTemp, new AtribuicaoAvaliadorExternoNotification($userTemp, $trabalho, $evento->formAvaliacaoExterno, $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso));
}
return redirect()->back();
}
public function enviarConviteEAtribuir(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$nomeAvaliador = $request->nomeAvaliador;
$emailAvaliador = $request->emailAvaliador;
$area = Area::where('id', $request->area_id)->first();
$user = User::where('email', $emailAvaliador)->first();
$areaTematica = AreaTematica::where('id', $request->area_tematica_id)->first();
if ($request->instituicao == 'ufape') {
$nomeInstituicao = 'Universidade Federal do Agreste de Pernambuco';
$externoInterno = 'Interno';
} else {
$nomeInstituicao = $request->outra;
$externoInterno = 'Externo';
}
if (isset($user)) {
$passwordTemporario = Str::random(8);
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($emailAvaliador)
->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador-Cadastrado', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id));
} else {
$passwordTemporario = Str::random(8);
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($emailAvaliador)
->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id));
$user = User::create([
'email' => $emailAvaliador,
'password' => bcrypt($passwordTemporario),
'usuarioTemp' => false,
'name' => $nomeAvaliador,
'tipo' => 'avaliador',
'instituicao' => $nomeInstituicao,
]);
$user->markEmailAsVerified();
}
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
if ($user->avaliadors == null) {
$avaliador = new Avaliador();
$avaliador->tipo = $externoInterno;
$avaliador->save();
$avaliador->area()->associate($area);
$avaliador->user()->associate($user);
$avaliador->eventos()->attach($evento);
$user->save();
$avaliador->save();
} else {
$avaliador = $user->avaliadors;
$avaliador->eventos()->attach($evento);
$user->save();
$avaliador->save();
}
if($evento->natureza_id == 3){
$avaliador->areaTematicas()->sync($areaTematica);
}
if ($request->instituicao == 'ufape') {
$trabalho->avaliadors()->attach($avaliador, ['acesso' => 2]);
$evento->avaliadors()->syncWithoutDetaching($avaliador);
} else {
$trabalho->avaliadors()->attach($avaliador, ['acesso' => 1]);
$evento->avaliadors()->syncWithoutDetaching($avaliador);
}
$trabalho->save();
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $avaliador->user_id,
'trabalho_id' => $request->trabalho_id,
'lido' => false,
'tipo' => 5,
]);
$notificacao->save();
return redirect()->back();
}
public function reenviarConviteAtribuicaoProjeto(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$avaliador = Avaliador::where('id', $request->avaliador_id)->first();
if ($avaliador->user->avaliadors->eventos->where('id', $evento->id)->first()->pivot->convite != true) {
$avaliador->user->avaliadors->eventos()->updateExistingPivot($evento->id, ['convite' => null]);
}
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $avaliador->user_id,
'trabalho_id' => $request->trabalho_id,
'lido' => false,
'tipo' => 5,
]);
$notificacao->save();
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
$subject = 'Convite para avaliar projetos da UFAPE - Reenvio';
Mail::to($avaliador->user->email)
->send(new EmailLembrete($avaliador->user->name, $subject, $trabalho->titulo, $evento->nome, $evento->tipo, $evento->natureza_id, $evento->formAvaliacaoExterno, $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso));
return redirect()->back();
}
public function enviarConvite(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$nomeAvaliador = $request->nomeAvaliador;
$emailAvaliador = $request->emailAvaliador;
$area = Area::where('id', $request->area_id)->first();
$user = User::where('email', $emailAvaliador)->first();
$areaTematica = AreaTematica::where('id', $request->area_tematica_id)->first();
if ($request->instituicao == 'ufape') {
$nomeInstituicao = 'Universidade Federal do Agreste de Pernambuco';
$externoInterno = 'Interno';
} else {
$nomeInstituicao = $request->outra;
$externoInterno = 'Externo';
}
//existe o caso de enviar o convite de novo para um mesmo usuário
// if(isset($user->avaliadors->eventos->where('id', $evento->id)->first()->pivot->convite) ){
// return redirect()->back()->with(['mensagem' => 'Usuário já recebeu um convite e está pendente']);
// }
if (isset($user)) {
$passwordTemporario = Str::random(8);
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($emailAvaliador)
->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador-Cadastrado', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id));
} else {
$passwordTemporario = Str::random(8);
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($emailAvaliador)
->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id));
$user = User::create([
'email' => $emailAvaliador,
'password' => bcrypt($passwordTemporario),
'usuarioTemp' => false,
'name' => $nomeAvaliador,
'tipo' => 'avaliador',
'instituicao' => $nomeInstituicao,
]);
$user->markEmailAsVerified();
}
if ($user->avaliadors == null) {
$avaliador = new Avaliador();
$avaliador->tipo = $externoInterno;
$avaliador->save();
$avaliador->area()->associate($area);
$avaliador->user()->associate($user);
$avaliador->eventos()->attach($evento);
if($evento->natureza_id == 3){
$avaliador->naturezas()->sync($evento->natureza_id);
$avaliador->areaTematicas()->sync($areaTematica);
}
$user->save();
$avaliador->save();
} else {
$avaliador = $user->avaliadors;
$avaliador->eventos()->attach($evento);
if($evento->natureza_id == 3){
$avaliador->naturezas()->sync($evento->natureza_id);
$avaliador->areaTematicas()->sync($areaTematica);
}
$user->save();
$avaliador->save();
}
return redirect()->back();
}
public function reenviarConvite(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$avaliador = Avaliador::where('id', $request->avaliador_id)->first();
$user = $avaliador->user()->first();
$subject = 'Convite para avaliar projetos da UFAPE - Reenvio';
Mail::to($user->email)
->send(new EmailParaUsuarioNaoCadastrado($user->name, ' ', 'Avaliador-Cadastrado', $evento->nome, ' ', $subject, $evento->tipo, $evento->natureza_id));
return redirect()->back();
}
// public function baixarAnexo(Request $request) {
// return Storage::download($request->anexo);
// }
public function baixarModeloAvaliacao()
{
$file = public_path().'/ModeloFormularioAvaliadorExternoPIBIC.docx';
$headers = ['Content-Type: application/docx'];
ob_end_clean();
return response()->download($file, 'ModeloFormularioAvaliadorExternoPIBIC.docx', $headers);
}
public function imprimirResultados(Request $request)
{
$evento = Evento::where('id', $request->id)->first();
// Ampla Concorrencia
$trabalhosAmpla = Trabalho::where('evento_id', $evento->id)
->where('modalidade', 'AmplaConcorrencia')->get();
foreach ($trabalhosAmpla as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhosAmpla = $trabalhosAmpla->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
// Recém Doutor
$trabalhosDoutor = Trabalho::where('evento_id', $evento->id)
->where('modalidade', 'RecemDoutor')->get();
foreach ($trabalhosDoutor as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhosDoutor = $trabalhosDoutor->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
$pdf = PDF::loadView('/administrador/resultadosProjetosCotas', compact('trabalhosDoutor', 'trabalhosAmpla', 'evento'));
return $pdf->setPaper('a4')->stream('Resultados.pdf');
}
}
<?php
namespace App\Http\Controllers;
use App\Administrador;
use App\AdministradorResponsavel;
use App\Area;
use App\AvaliacaoRelatorio;
use App\Avaliador;
use App\CoordenadorComissao;
use App\Evento;
use App\FuncaoParticipantes;
use App\GrandeArea;
use App\Mail\EmailLembrete;
use App\Mail\EmailParaUsuarioNaoCadastrado;
use App\Natureza;
use App\Notificacao;
use App\Notifications\AtribuicaoAvaliadorExternoNotification;
use App\ParecerInterno;
use App\Participante;
use App\Proponente;
use App\Substituicao;
use App\Trabalho;
use App\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
use PDF;
use DB;
use App\AreaTematica;
class AdministradorController extends Controller
{
public function index()
{
return view('administrador.index');
}
public function naturezas()
{
$naturezas = Natureza::orderBy('nome')->get();
$funcoesParticipante = FuncaoParticipantes::orderBy('nome')->get();
return view('naturezas.index')->with(['naturezas' => $naturezas, 'funcoes' => $funcoesParticipante]);
}
public function usuarios()
{
$users = User::orderBy('name')->get();
return view('administrador.usersAdmin')->with(['users' => $users]);
}
public function editais()
{
//$admin = Administrador::with('user')->where('user_id', Auth()->user()->id)->first();
//$eventos = Evento::where('coordenadorId',$admin->id )->get();
$eventos = Evento::all()->sortByDesc('created_at');
return view('administrador.editais', ['eventos' => $eventos]);
}
public function pareceres(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho');
$coordenador_id_evento = $evento->coordenadorId;
$coordenador_id = CoordenadorComissao::find($coordenador_id_evento);
$user = Auth::user();
if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) {
return redirect()->back();
}
return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]);
}
public function analisar(Request $request)
{
$evento = Evento::find($request->evento_id);
$status = ['submetido', 'avaliado', 'aprovado', 'reprovado', 'corrigido'];
$aux = Trabalho::where('evento_id', $evento->id)
->whereIn('status', $status)
->pluck('grande_area_id');
$idArea = Trabalho::where('evento_id', $evento->id)
->whereIn('status', $status)
->pluck('area_id');
$trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho')->sortBy('titulo');
$grandesAreas = GrandeArea::whereIn('id', $aux)->get();
$areas = Area::whereIn('id', $idArea)->get();
$funcaoParticipantes = FuncaoParticipantes::all();
// $participantes = Participante::where('trabalho_id', $id)->get();
// $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
// $participantes = User::whereIn('id', $participantesUsersIds)->get();
return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes, 'column' => $request->column, 'grandesAreas' => $grandesAreas, 'areas' => $areas]);
}
// Utilizado para paginação de Collection
public function analisarProposta(Request $request)
{
$trabalho = Trabalho::where('id', $request->id)->first();
$evento = Evento::where('id', $trabalho->evento_id)->first();
$funcaoParticipantes = FuncaoParticipantes::all();
$substituicoesProjeto = Substituicao::where('trabalho_id', $trabalho->id)->orderBy('created_at', 'DESC')->get();
$substituicoesPendentes = Substituicao::where('trabalho_id', $trabalho->id)->where('status', 'Em Aguardo')->orderBy('created_at', 'DESC')->get();
$avalSelecionadosId = $trabalho->avaliadors->pluck('id');
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
$trabalho->aval = $avalProjeto;
// Usuarios que possuem avaliações de relatório
//$avaliacoesRelatorio = [];->join('users','users.id','=','candidatos.user_id')
$AvalRelatParcial = [];
$AvalRelatFinal = [];
foreach ($trabalho->participantes as $participante) {
if (isset($participante->planoTrabalho)) {
$avals = AvaliacaoRelatorio::where('arquivo_id', $participante->planoTrabalho->id)->get();
} else {
$avals = [];
}
foreach ($avals as $aval) {
if ($aval->tipo == 'Parcial') {
array_push($AvalRelatParcial, $aval);
} else {
array_push($AvalRelatFinal, $aval);
}
}
}
// Verficação de pendencia de substituição
$aux = count(Substituicao::where('status', 'Em Aguardo')->whereIn('participanteSubstituido_id', $trabalho->participantes->pluck('id'))->get());
$flagSubstituicao = 1;
if ($aux != 0) {
$flagSubstituicao = -1;
}
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areasTematicas = AreaTematica::orderBy('nome')->get();
//dd($areasTematicas);
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('administrador.analisarProposta')->with(
['trabalho' => $trabalho,
'funcaoParticipantes' => $funcaoParticipantes,
'evento' => $evento,
'substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,
'grandeAreas' => $grandeAreas,
'AvalRelatParcial' => $AvalRelatParcial,
'AvalRelatFinal' => $AvalRelatFinal,
'hoje' => $hoje,
'flagSubstituicao' => $flagSubstituicao,
'areasTematicas' => $areasTematicas, ]);
}
public function showProjetos(Request $request)
{
$projetos = Trabalho::all()->where('status', '<>', 'rascunho');
$funcaoParticipantes = FuncaoParticipantes::all();
return view('administrador.listaProjetos')->with(['projetos' => $projetos, 'funcaoParticipantes' => $funcaoParticipantes]);
}
public function showResultados(Request $request)
{
//dd($request);
$evento = Evento::where('id', $request->evento_id)->first();
$coordenador_id_evento = $evento->coordenadorId;
$coordenador_id = CoordenadorComissao::find($coordenador_id_evento);
$user = Auth::user();
if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) {
return redirect()->back();
}
// Com cotas
if ($evento->cotaDoutor) {
// Ampla Concorrencia
$trabalhosAmpla = Trabalho::where('evento_id', $evento->id)
->where('modalidade', 'AmplaConcorrencia')->get();
foreach ($trabalhosAmpla as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhosAmpla = $trabalhosAmpla->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
// Recém Doutor
$trabalhosDoutor = Trabalho::where('evento_id', $evento->id)
->where('modalidade', 'RecemDoutor')->get();
foreach ($trabalhosDoutor as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhosDoutor = $trabalhosDoutor->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
return view('administrador.resultadosProjetosCotas')->with(['evento' => $evento, 'trabalhosAmpla' => $trabalhosAmpla, 'trabalhosDoutor' => $trabalhosDoutor]);
}
// Sem Cotas
$trabalhos = $evento->trabalhos;
foreach ($trabalhos as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhos = $trabalhos->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
return view('administrador.resultadosProjetos')->with(['evento' => $evento, 'trabalhos' => $trabalhos]);
}
public function visualizarParecer(Request $request)
{
$avaliador = Avaliador::find($request->avaliador_id);
$trabalho = $avaliador->trabalhos->where('id', $request->trabalho_id)->first();
$parecer = $avaliador->trabalhos->where('id', $request->trabalho_id)->first()->pivot;
//dd($parecer);
return view('administrador.visualizarParecer')->with(['trabalho' => $trabalho, 'parecer' => $parecer, 'avaliador' => $avaliador]);
}
public function visualizarParecerInterno(Request $request)
{
$avaliador = Avaliador::find($request->avaliador_id);
$trabalho = $avaliador->trabalhos->where('id', $request->trabalho_id)->first();
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
$evento = Evento::find($trabalho->evento_id);
//dd($parecer);
return view('administrador.visualizarParecerInterno')->with(['parecer' => $parecerInterno, 'avaliador' => $avaliador, 'trabalho' => $trabalho, 'evento' => $evento]);
}
public function create()
{
return view('administrador.novo_user');
}
public function salvar(Request $request)
{
if ($request->tipo == 'coordenador') {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'],
'celular' => ($request['celular'] != null ? 'required|string|telefone' : 'nullable'),
'cpf' => ($request['cpf'] != null ? 'required|cpf|unique:users' : 'nullable'),
]);
} elseif ($request->tipo != 'proponente') {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'celular' => ['required', 'string', 'telefone'],
'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'],
'cpf' => ['required', 'cpf', 'unique:users'],
]);
} else {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'tipo' => ['required'],
'cpf' => ['required', 'cpf', 'unique:users'],
'celular' => ['required', 'string', 'telefone'],
'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'cargo' => ['required'],
'vinculo' => ['required'],
'outro' => ['required_if:vinculo,Outro'],
'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'],
'titulacaoMaxima' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'],
'anoTitulacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'],
'areaFormacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'],
'bolsistaProdutividade' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'nivel' => ['required_if:bolsistaProdutividade,sim'],
//'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required' : ''],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes' : ''],
]);
}
if (!($request->senha === $request->confirmar_senha)) {
return redirect()->back()->withErrors(['senha' => 'Senhas diferentes']);
}
$user = new User();
$user->name = $request->name;
$user->tipo = $request->tipo;
$user->cpf = $request->cpf;
$user->celular = $request->celular;
$user->email = $request->email;
$user->password = bcrypt($request->senha);
if ($request->instituicao != null) {
$user->instituicao = $request->instituicao;
} elseif (isset($request->instituicaoSelect) && $request->instituicaoSelect != 'Outra') {
$user->instituicao = $request->instituicaoSelect;
}
$user->save();
switch ($request->tipo) {
case 'administradorResponsavel':
$adminResp = new AdministradorResponsavel();
$adminResp->user_id = $user->id;
$adminResp->save();
break;
case 'coordenador':
$coordenador = new CoordenadorComissao();
$coordenador->user_id = $user->id;
$coordenador->save();
break;
case 'avaliador':
$avaliador = new Avaliador();
$avaliador->user_id = $user->id;
$avaliador->tipo = $request->tipoAvaliador;
$avaliador->save();
break;
case 'proponente':
$proponente = new Proponente();
if ($request->SIAPE != null) {
$proponente->SIAPE = $request->SIAPE;
}
$proponente->cargo = $request->cargo;
if ($request->vinculo != 'Outro') {
$proponente->vinculo = $request->vinculo;
} else {
$proponente->vinculo = $request->outro;
}
$proponente->titulacaoMaxima = $request->titulacaoMaxima;
$proponente->anoTitulacao = $request->anoTitulacao;
$proponente->areaFormacao = $request->areaFormacao;
$proponente->bolsistaProdutividade = $request->bolsistaProdutividade;
if ($request->bolsistaProdutividade == 'sim') {
$proponente->nivel = $request->nivel;
}
$proponente->linkLattes = $request->linkLattes;
$proponente->user_id = $user->id;
$proponente->save();
break;
case 'participante':
$participante = new Participante();
$participante->user_id = $user->id;
$participante->save();
break;
}
return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário cadastrado com sucesso']);
}
public function edit($id)
{
$user = User::find($id);
$adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first();
$avaliador = Avaliador::where('user_id', '=', $id)->first();
$proponente = Proponente::where('user_id', '=', $id)->first();
$participante = Participante::where('user_id', '=', $id)->first();
return view('administrador.editar_user')->with(['user' => $user,
'adminResp' => $adminResp,
'proponente' => $proponente,
'participante' => $participante, ]);
}
public function update(Request $request, $id)
{
$user = User::find($id);
if ($request->tipo == 'coordenador') {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'celular' => ($request['celular'] != null ? 'required|string|telefone' : 'nullable'),
'cpf' => ($request['cpf'] != null ? 'required|cpf|unique:users' : 'nullable'),
]);
} elseif ($request->tipo != 'proponente') {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'celular' => ['required', 'string', 'telefone'],
'cpf' => ['required', 'cpf'],
]);
} else {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255'],
'tipo' => ['required'],
'cpf' => ['required', 'cpf'],
'celular' => ['required', 'string', 'telefone'],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'cargo' => ['required'],
'vinculo' => ['required'],
'outro' => ['required_if:vinculo,Outro'],
'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'],
'titulacaoMaxima' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'],
'anoTitulacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'],
'areaFormacao' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'],
'bolsistaProdutividade' => Rule::requiredIf((isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando')),
'nivel' => ['required_if:bolsistaProdutividade,sim'],
//'nivel' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':''],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'required' : ''],
'linkLattes' => [(isset($request['cargo']) && $request['cargo'] !== 'Estudante') || (isset($request['cargo']) && $request['cargo'] === 'Estudante' && isset($request['vinculo']) && $request['vinculo'] === 'Pós-doutorando') ? 'link_lattes' : ''],
]);
}
// if (!(Hash::check($request->senha_atual, $user->password))) {
// return redirect()->back()->withErrors(['senha_atual' => 'Senha atual não correspondente']);
// }
// if (!($request->nova_senha === $request->confirmar_senha)) {
// return redirect()->back()->withErrors(['nova_senha' => 'Senhas diferentes']);
// }
switch ($request->tipo) {
case 'administradorResponsavel':
$adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first();
$adminResp->user_id = $user->id;
$adminResp->update();
break;
case 'coordenador':
$coordenador = CoordenadorComissao::where('user_id', '=', $id)->first();
$coordenador->user_id = $user->id;
$coordenador->update();
break;
case 'avaliador':
$avaliador = Avaliador::where('user_id', '=', $id)->first();
$avaliador->user_id = $user->id;
$avaliador->update();
break;
case 'proponente':
$proponente = Proponente::where('user_id', '=', $id)->first();
if ($request->SIAPE != null) {
$proponente->SIAPE = $request->SIAPE;
}
$proponente->cargo = $request->cargo;
if ($request->vinculo != 'Outro') {
$proponente->vinculo = $request->vinculo;
} else {
$proponente->vinculo = $request->outro;
}
$proponente->titulacaoMaxima = $request->titulacaoMaxima;
$proponente->anoTitulacao = $request->anoTitulacao;
$proponente->areaFormacao = $request->areaFormacao;
$proponente->bolsistaProdutividade = $request->bolsistaProdutividade;
if ($request->bolsistaProdutividade == 'sim') {
$proponente->nivel = $request->nivel;
}
$proponente->linkLattes = $request->linkLattes;
$proponente->user_id = $user->id;
$proponente->update();
break;
case 'participante':
$participante = Participante::where('user_id', '=', $id)->first();
$participante->user_id = $user->id;
$participante->update();
break;
}
$user->name = $request->name;
$user->tipo = $request->tipo;
$user->email = $request->email;
$user->cpf = $request->cpf;
$user->celular = $request->celular;
if ($request->instituicao != null) {
$user->instituicao = $request->instituicao;
} elseif (isset($request->instituicaoSelect) && $request->instituicaoSelect != 'Outra') {
$user->instituicao = $request->instituicaoSelect;
}
// $user->password = bcrypt($request->nova_senha);
$user->update();
return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário atualizado com sucesso']);
}
public function destroy($id)
{
$user = User::find($id);
$adminResp = AdministradorResponsavel::where('user_id', '=', $id)->first();
$avaliador = Avaliador::where('user_id', '=', $id)->first();
$proponente = Proponente::where('user_id', '=', $id)->first();
$participante = Participante::where('user_id', '=', $id)->first();
if (!(is_null($adminResp))) {
$adminResp->delete();
} elseif (!(is_null($avaliador))) {
$avaliador->delete();
} elseif (!(is_null($proponente))) {
$proponente->delete();
} elseif (!(is_null($participante))) {
$participante->delete();
}
$user->delete();
return redirect(route('admin.usuarios'))->with(['mensagem' => 'Usuário deletado com sucesso']);
}
public function atribuir(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$coordenador_id_evento = $evento->coordenadorId;
$coordenador_id = CoordenadorComissao::find($coordenador_id_evento);
$user = Auth::user();
if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) {
return redirect()->back();
}
return view('administrador.atribuirAvaliadores', ['evento' => $evento]);
}
public function selecionar(Request $request)
{
$user = Auth::user();
$evento = Evento::where('id', $request->evento_id)->first();
$coordenador_id_evento = $evento->coordenadorId;
$coordenador_id = CoordenadorComissao::find($coordenador_id_evento);
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areasTematicas = AreaTematica::orderBy('nome')->get();
$avalSelecionados = $evento->avaliadors;
$avalNaoSelecionadosId = $evento->avaliadors->pluck('id');
$trabalhos = $evento->trabalhos->whereNotIn('status', 'rascunho');
$avaliadores = Avaliador::whereNotIn('id', $avalNaoSelecionadosId)->get();
//$avaliadores = Avaliador::join('naturezas_avaliadors', 'avaliadors.id', '=' ,'naturezas_avaliadors.avaliador_id')->whereNotIn('avaliadors.id', $avalNaoSelecionadosId)
// ->where('naturezas_avaliadors.natureza_id', $evento->natureza_id)
// ->get();
$avaliadores_extensao = collect();
$avaliadores_others = collect();
foreach($avaliadores as $avaliador){
if($evento->natureza_id == 3 && count($avaliador->areaTematicas) > 0){
$avaliadores_extensao->push($avaliador);
}elseif($evento->natureza_id != 3 && count($avaliador->areaTematicas) == 0){
$avaliadores_others->push($avaliador);
}
}
if($evento->natureza_id == 3){
$avaliadores = $avaliadores_extensao;
} else {
$avaliadores = $avaliadores_others;
}
if ((Auth::user()->id != $coordenador_id->user_id) && ($user->tipo != 'administrador')) {
return redirect()->back();
}
return view('administrador.selecionarAvaliadores', [
'evento' => $evento,
'avaliadores' => $avaliadores,
'avalSelecionados' => $avalSelecionados,
'grandeAreas' => $grandeAreas,
'trabalhos' => $trabalhos,
'areasTematicas' => $areasTematicas,
]);
}
public function projetos(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$trabalhos = $evento->trabalhos;
$grandesAreas = GrandeArea::orderBy('nome')->get();
$areasTematicas = AreaTematica::orderBy('nome')->get();
$avaliadores = $evento->avaliadors;
foreach ($trabalhos as $key => $trabalho) {
$avalSelecionadosId = $trabalho->avaliadors->pluck('id');
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
$trabalho->aval = $avalProjeto;
}
//dd($avaliadores->teste);
return view('administrador.selecionarProjetos', [
'evento' => $evento,
'trabalhos' => $trabalhos,
'avaliadores' => $avaliadores,
'grandesAreas' => $grandesAreas,
'areasTematicas' => $areasTematicas
]);
}
public function adicionar(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$aval = Avaliador::where('id', $request->avaliador_id)->first();
$aval->eventos()->attach($evento);
$aval->save();
$user = $aval->user()->first();
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($user->email)
->send(new EmailParaUsuarioNaoCadastrado($user->name, ' ', 'Avaliador-Cadastrado', $evento->nome, ' ', $subject, $evento->tipo, $evento->natureza_id));
return redirect()->back();
}
public function remover(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$aval = Avaliador::where('id', $request->avaliador_id)->first();
$aval->eventos()->detach($evento);
$aval->trabalhos()->detach();
$aval->save();
return redirect()->back();
}
public function removerProjAval(Request $request)
{
//Acesso 1 = Ad Hoc, 2 - Interno, 3 - Interno e Ad Hoc
$aval = Avaliador::where('id', $request->avaliador_id)->first();
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
if ($request->flag == 0) {
if (($aval->tipo == 'Interno' && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) || ($aval->tipo == null && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3 && ($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco'))) {
$aval->trabalhos()
->updateExistingPivot($trabalho->id, ['acesso' => 2]);
} else {
$aval->trabalhos()->detach($trabalho);
}
} else {
if (($aval->tipo == 'Interno' && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) || ($aval->tipo == null && $aval->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3 && ($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco'))) {
$aval->trabalhos()
->updateExistingPivot($trabalho->id, ['acesso' => 1]);
} else {
$aval->trabalhos()->detach($trabalho);
}
}
if ($trabalho->status === 'avaliado') {
$trabalho->status = 'submetido';
$trabalho->save();
}
$aval->save();
return redirect()->back();
}
public function buscar(Request $request)
{
$trabalho = Trabalho::where('id', $request->item)->first();
$avalSelecionadosId = $trabalho->avaliadors->pluck('id');
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
//dd($avaliadores);
return response()->json($avalProjeto);
}
public function atribuicaoProjeto(Request $request)
{
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
$evento = Evento::where('id', $request->evento_id)->first();
if ($request->avaliadores_internos_id != null) {
foreach ($request->avaliadores_internos_id as $avaliador) {
$aval = Avaliador::find($avaliador);
if ($aval->trabalhos()->where('trabalho_id', $trabalho->id)->first() != null) {
$aval->trabalhos()
->updateExistingPivot($trabalho->id, ['acesso' => 3]);
} else {
$trabalho->avaliadors()->attach($aval, ['acesso' => 2]);
$evento->avaliadors()->syncWithoutDetaching($aval);
}
}
}
if ($request->avaliadores_externos_id != null) {
foreach ($request->avaliadores_externos_id as $avaliador) {
$aval = Avaliador::find($avaliador);
if (Avaliador::where('id', $avaliador)->where('tipo', 'Interno')->count() > 0 || (Avaliador::where('id', $avaliador)->where('tipo', null)->count() > 0 && (($aval->user->instituicao == 'UFAPE' || $aval->user->instituicao == 'Universidade Federal do Agreste de Pernambuco')))) {
if ($aval->trabalhos()->where('trabalho_id', $trabalho->id)->first() != null) {
$aval->trabalhos()
->updateExistingPivot($trabalho->id, ['acesso' => 3]);
} else {
$trabalho->avaliadors()->attach($aval, ['acesso' => 1]);
$evento->avaliadors()->syncWithoutDetaching($aval);
}
} else {
$trabalho->avaliadors()->attach($aval, ['acesso' => 1]);
$evento->avaliadors()->syncWithoutDetaching($aval);
}
}
}
if ($request->avaliadores_externos_id == null & $request->avaliadores_internos_id == null) {
redirect()->back()->with(['error' => 'Selecione ao menos um avaliador.', 'trabalho' => $trabalho->id]);
}
$avaliadores = Avaliador::whereIn('id', (array) $request->avaliadores_externos_id)
->orWhereIn('id', (array) $request->avaliadores_internos_id)->get();
$trabalho->save();
foreach ($avaliadores as $avaliador) {
$userTemp = User::find($avaliador->user->id);
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $avaliador->user_id,
'trabalho_id' => $request->trabalho_id,
'lido' => false,
'tipo' => 5,
]);
$notificacao->save();
Notification::send($userTemp, new AtribuicaoAvaliadorExternoNotification($userTemp, $trabalho, $evento->formAvaliacaoExterno, $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso));
}
return redirect()->back();
}
public function enviarConviteEAtribuir(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$nomeAvaliador = $request->nomeAvaliador;
$emailAvaliador = $request->emailAvaliador;
$area = Area::where('id', $request->area_id)->first();
$user = User::where('email', $emailAvaliador)->first();
$areaTematica = AreaTematica::find($request->areasTemeticas);
if ($request->instituicao == 'ufape') {
$nomeInstituicao = 'Universidade Federal do Agreste de Pernambuco';
$externoInterno = 'Interno';
} else {
$nomeInstituicao = $request->outra;
$externoInterno = 'Externo';
}
if (isset($user)) {
$passwordTemporario = Str::random(8);
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($emailAvaliador)
->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador-Cadastrado', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id));
} else {
$passwordTemporario = Str::random(8);
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($emailAvaliador)
->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id));
$user = User::create([
'email' => $emailAvaliador,
'password' => bcrypt($passwordTemporario),
'usuarioTemp' => false,
'name' => $nomeAvaliador,
'tipo' => 'avaliador',
'instituicao' => $nomeInstituicao,
]);
$user->markEmailAsVerified();
}
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
if ($user->avaliadors == null) {
$avaliador = new Avaliador();
$avaliador->tipo = $externoInterno;
$avaliador->save();
$avaliador->area()->associate($area);
$avaliador->user()->associate($user);
$avaliador->eventos()->attach($evento);
$user->save();
$avaliador->save();
} else {
$avaliador = $user->avaliadors;
$avaliador->eventos()->attach($evento);
$user->save();
$avaliador->save();
}
if($evento->natureza_id == 3){
$avaliador->areaTematicas()->sync($areaTematica);
}
if ($request->instituicao == 'ufape') {
$trabalho->avaliadors()->attach($avaliador, ['acesso' => 2]);
$evento->avaliadors()->syncWithoutDetaching($avaliador);
} else {
$trabalho->avaliadors()->attach($avaliador, ['acesso' => 1]);
$evento->avaliadors()->syncWithoutDetaching($avaliador);
}
$trabalho->save();
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $avaliador->user_id,
'trabalho_id' => $request->trabalho_id,
'lido' => false,
'tipo' => 5,
]);
$notificacao->save();
return redirect()->back();
}
public function reenviarConviteAtribuicaoProjeto(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$avaliador = Avaliador::where('id', $request->avaliador_id)->first();
if ($avaliador->user->avaliadors->eventos->where('id', $evento->id)->first()->pivot->convite != true) {
$avaliador->user->avaliadors->eventos()->updateExistingPivot($evento->id, ['convite' => null]);
}
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $avaliador->user_id,
'trabalho_id' => $request->trabalho_id,
'lido' => false,
'tipo' => 5,
]);
$notificacao->save();
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
$subject = 'Convite para avaliar projetos da UFAPE - Reenvio';
Mail::to($avaliador->user->email)
->send(new EmailLembrete($avaliador->user->name, $subject, $trabalho->titulo, $evento->nome, $evento->tipo, $evento->natureza_id, $evento->formAvaliacaoExterno, $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso));
return redirect()->back();
}
public function enviarConvite(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$nomeAvaliador = $request->nomeAvaliador;
$emailAvaliador = $request->emailAvaliador;
$area = Area::where('id', $request->area_id)->first();
$user = User::where('email', $emailAvaliador)->first();
$areaTematica = AreaTematica::find($request->areasTemeticas);
if ($request->instituicao == 'ufape') {
$nomeInstituicao = 'Universidade Federal do Agreste de Pernambuco';
$externoInterno = 'Interno';
} else {
$nomeInstituicao = $request->outra;
$externoInterno = 'Externo';
}
//existe o caso de enviar o convite de novo para um mesmo usuário
// if(isset($user->avaliadors->eventos->where('id', $evento->id)->first()->pivot->convite) ){
// return redirect()->back()->with(['mensagem' => 'Usuário já recebeu um convite e está pendente']);
// }
if (isset($user)) {
$passwordTemporario = Str::random(8);
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($emailAvaliador)
->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador-Cadastrado', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id));
} else {
$passwordTemporario = Str::random(8);
$subject = 'Convite para avaliar projetos da UFAPE';
Mail::to($emailAvaliador)
->send(new EmailParaUsuarioNaoCadastrado($nomeAvaliador, ' ', 'Avaliador', $evento->nome, $passwordTemporario, $subject, $evento->tipo, $evento->natureza_id));
$user = User::create([
'email' => $emailAvaliador,
'password' => bcrypt($passwordTemporario),
'usuarioTemp' => false,
'name' => $nomeAvaliador,
'tipo' => 'avaliador',
'instituicao' => $nomeInstituicao,
]);
$user->markEmailAsVerified();
}
if ($user->avaliadors == null) {
$avaliador = new Avaliador();
$avaliador->tipo = $externoInterno;
$avaliador->save();
$avaliador->area()->associate($area);
$avaliador->user()->associate($user);
$avaliador->eventos()->attach($evento);
if($evento->natureza_id == 3){
$avaliador->naturezas()->sync($evento->natureza_id);
$avaliador->areaTematicas()->sync($areaTematica);
}
$user->save();
$avaliador->save();
} else {
$avaliador = $user->avaliadors;
$avaliador->eventos()->attach($evento);
if($evento->natureza_id == 3){
$avaliador->naturezas()->sync($evento->natureza_id);
$avaliador->areaTematicas()->sync($areaTematica);
}
$user->save();
$avaliador->save();
}
return redirect()->back();
}
public function reenviarConvite(Request $request)
{
$evento = Evento::where('id', $request->evento_id)->first();
$avaliador = Avaliador::where('id', $request->avaliador_id)->first();
$user = $avaliador->user()->first();
$subject = 'Convite para avaliar projetos da UFAPE - Reenvio';
Mail::to($user->email)
->send(new EmailParaUsuarioNaoCadastrado($user->name, ' ', 'Avaliador-Cadastrado', $evento->nome, ' ', $subject, $evento->tipo, $evento->natureza_id));
return redirect()->back();
}
// public function baixarAnexo(Request $request) {
// return Storage::download($request->anexo);
// }
public function baixarModeloAvaliacao()
{
$file = public_path().'/ModeloFormularioAvaliadorExternoPIBIC.docx';
$headers = ['Content-Type: application/docx'];
ob_end_clean();
return response()->download($file, 'ModeloFormularioAvaliadorExternoPIBIC.docx', $headers);
}
public function imprimirResultados(Request $request)
{
$evento = Evento::where('id', $request->id)->first();
// Ampla Concorrencia
$trabalhosAmpla = Trabalho::where('evento_id', $evento->id)
->where('modalidade', 'AmplaConcorrencia')->get();
foreach ($trabalhosAmpla as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhosAmpla = $trabalhosAmpla->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
// Recém Doutor
$trabalhosDoutor = Trabalho::where('evento_id', $evento->id)
->where('modalidade', 'RecemDoutor')->get();
foreach ($trabalhosDoutor as $trabalho) {
$trabalho->pontuacao = 0;
$cont = 0;
// Caso especial do PIBEX onde a pontuação fica no Ad Hoc
if ($evento->tipo == 'PIBEX') {
foreach ($trabalho->avaliadors as $avaliador) {
if (($avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 1 ||
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->acesso == 3) &&
$avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao != null) {
$trabalho->pontuacao += $avaliador->trabalhos()->where('trabalho_id', $trabalho->id)->first()->pivot->pontuacao;
++$cont;
}
}
} else {
foreach ($trabalho->avaliadors as $avaliador) {
if ($avaliador->tipo == 'Interno') {
$parecerInterno = ParecerInterno::where([['avaliador_id', $avaliador->id], ['trabalho_id', $trabalho->id]])->first();
if ($parecerInterno != null) {
$trabalho->pontuacao += $parecerInterno->statusAnexoPlanilhaPontuacao;
++$cont;
}
}
}
}
if ($trabalho->pontuacao != 0) {
$trabalho->pontuacao = number_format(($trabalho->pontuacao / $cont), 2, ',', '');
}
}
$trabalhosDoutor = $trabalhosDoutor->sort(function ($item, $next) {
return $item->pontuacao >= $next->pontuacao ? -1 : 1;
});
$pdf = PDF::loadView('/administrador/resultadosProjetosCotas', compact('trabalhosDoutor', 'trabalhosAmpla', 'evento'));
return $pdf->setPaper('a4')->stream('Resultados.pdf');
}
}
<?php
namespace App\Http\Controllers;
use PDF;
use App;
use App\Administrador;
use Auth;
use App\Area;
use App\User;
use App\Evento;
use App\AreaTematica;
use App\Arquivo;
use App\Coautor;
use App\Revisor;
use App\TrabalhoUser;
use App\SubArea;
use App\Endereco;
use App\Trabalho;
use App\Avaliador;
use Carbon\Carbon;
use App\AnexosTemp;
use App\Atribuicao;
use App\GrandeArea;
use App\Modalidade;
use App\Proponente;
use App\Participante;
use App\AreaModalidade;
use App\Certificado;
use Illuminate\Http\File;
use App\Mail\EventoCriado;
use Illuminate\Support\Str;
use App\CoordenadorComissao;
use App\FuncaoParticipantes;
use Illuminate\Http\Request;
use App\Mail\SubmissaoTrabalho;
use App\OutrasInfoParticipante;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\Http\Requests\StoreTrabalho;
use Illuminate\Support\Facades\Mail;
use App\Http\Requests\UpdateTrabalho;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use App\Mail\EmailParaUsuarioNaoCadastrado;
use App\Mail\SolicitacaoSubstituicao;
use App\Notificacao;
use App\Notifications\SolicitacaoCertificadoNotification;
use App\Notifications\SubmissaoNotification;
use App\Notifications\SubmissaoRecebidaNotification;
use App\SolicitacaoCertificado;
use App\SolicitacaoParticipante;
use App\Substituicao;
use Illuminate\Support\Facades\Notification;
use App\Desligamento;
use App\ObjetivoDeDesenvolvimentoSustentavel;
class TrabalhoController extends Controller
{
public $estados = array(
'AC' => 'Acre',
'AL' => 'Alagoas',
'AP' => 'Amapá',
'AM' => 'Amazonas',
'BA' => 'Bahia',
'CE' => 'Ceará',
'DF' => 'Distrito Federal',
'ES' => 'Espirito Santo',
'GO' => 'Goiás',
'MA' => 'Maranhão',
'MS' => 'Mato Grosso do Sul',
'MT' => 'Mato Grosso',
'MG' => 'Minas Gerais',
'PA' => 'Pará',
'PB' => 'Paraíba',
'PR' => 'Paraná',
'PE' => 'Pernambuco',
'PI' => 'Piauí',
'RJ' => 'Rio de Janeiro',
'RN' => 'Rio Grande do Norte',
'RS' => 'Rio Grande do Sul',
'RO' => 'Rondônia',
'RR' => 'Roraima',
'SC' => 'Santa Catarina',
'SP' => 'São Paulo',
'SE' => 'Sergipe',
'TO' => 'Tocantins',
);
public function index($id)
{
$edital = Evento::find($id);
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::orderBy('nome')->get();
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
if($proponente == null){
return view('proponente.cadastro')->with(['mensagem' => 'Você não possui perfil de Proponente, para submeter algum projeto preencha o formulário.']);;
}
$rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$edital->id)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
// dd($estados);
return view('evento.submeterTrabalho',[
// return view('evento.backupForm',[
'edital' => $edital,
'grandeAreas' => $grandeAreas,
'funcaoParticipantes'=> $funcaoParticipantes,
'rascunho' => $rascunho,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
'ods' =>$ODS,
]);
}
public function arquivar(Request $request){
$trabalho = Trabalho::find($request->trabalho_id);
$arquivos = Arquivo::where('trabalhoId',$trabalho->id)->get();
if($request->arquivar_tipo == 1 ){
$trabalho->arquivado = true;
foreach ($arquivos as $arquivo){
$arquivo->arquivado = true;
$arquivo->update();
}
$message = "Projeto ".$trabalho->titulo." arquivado";
}else{
$trabalho->arquivado = false;
foreach ($arquivos as $arquivo){
$arquivo->arquivado = false;
$arquivo->update();
}
$message = "Projeto ".$trabalho->titulo." desarquivado";
}
$trabalho->update();
return redirect()->back()->with(['sucesso'=>$message ]);
}
public function storeParcial(Request $request){
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
$evento = Evento::find($request->editalId);
$coordenador = CoordenadorComissao::find($evento->coordenadorId);
//Relaciona o projeto criado com o proponente que criou o projeto
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$trabalho = "trabalho";
if ($evento->inicioSubmissao > $mytime) {
if ($mytime >= $evento->fimSubmissao) {
return redirect()->route('home');
}
}
//--Salvando os dados da submissão temporariamente
$this->armazenarInfoTemp($request, $proponente);
return redirect()->route('projetos.edital', ['id' => $request->editalId]);
}
//Armazena temporariamente dados da submissão, no banco de dados e no storage
public function armazenarInfoTemp(Request $request, $proponente)
{
//---Dados do Projeto
$trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$request->editalId)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
//dd($trabalho);
if($trabalho == null){
$trabalho = new Trabalho();
$trabalho->proponente_id = $proponente->id;
$trabalho->evento_id = $request->editalId;
$trabalho->status = 'Rascunho';
$stringKeys = ['titulo','linkGrupoPesquisa', 'linkLattesEstudante','pontuacaoPlanilha','anexoProjeto',
'anexoPlanilhaPontuacao', 'anexoLattesCoordenador', 'conflitosInteresse'];
$intKeys = ['grande_area_id','area_id','sub_area_id','coordenador_id'];
$trabalho->fill(
array_fill_keys($stringKeys, "") + array_fill_keys($intKeys, 1)
)->save();
//dd($trabalho);
}
if(!(is_null($request->nomeProjeto)) ) {
$trabalho->titulo = $request->nomeProjeto;
}
if(!(is_null($request->grandeArea))){
$trabalho->grande_area_id = $request->grandeArea;
}
if(!(is_null($request->area))){
$trabalho->area_id = $request->area;
}
if(!(is_null($request->subArea))){
$trabalho->sub_area_id = $request->subArea;
}
if(!(is_null($request->pontuacaoPlanilha))){
$trabalho->pontuacaoPlanilha = $request->pontuacaoPlanilha;
}
if(!(is_null($request->linkGrupo))){
$trabalho->linkGrupoPesquisa = $request->linkGrupo;
}
if(!(is_null($request->conflitosInteresse))){
$trabalho->conflitosInteresse = $request->conflitosInteresse;
}
//Anexos do projeto
$pasta = 'trabalhos/' . $request->editalId . '/' . $trabalho->id;
if(!(is_null($request->anexoDecisaoCONSU)) ) {
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, "CONSU.pdf");
}
if (!(is_null($request->anexoComiteEtica))) {
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, "Comite_de_etica.pdf");
}
if (!(is_null($request->justificativaAutorizacaoEtica))) {
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, "Justificativa.pdf");
}
if (!(is_null($request->anexoProjeto))) {
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, "Projeto.pdf");
}
if (!(is_null($request->anexoLattesCoordenador))) {
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, "Lattes_Coordenador.pdf");
}
if (!(is_null($request->anexoPlanilhaPontuacao))) {
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha.". $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
$trabalho->update();
//---Anexos planos de trabalho
//dd($trabalho);
return $trabalho;
}
public function validarAnexosRascunho(Request $request, $trabalho){
$validator = Validator::make($trabalho->getAttributes(),[
'anexoPlanilhaPontuacao' => $request->anexoPlanilhaPontuacao==null?['planilha']:[],
]);
if ($validator->fails()) {
//dd('asdf');
return back()->withErrors($validator)->withInput();
}
return 1;
}
public function armazenarAnexosFinais($request, $pasta, $trabalho, $evento){
// Checando se é um novo trabalho ou uma edição
if ($trabalho->anexoProjeto != null) {
// Anexo Projeto
if (isset($request->anexoProjeto)) {
if (Storage::disk()->exists($trabalho->anexoProjeto)) {
Storage::delete($trabalho->anexoProjeto);
}
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
// if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if (isset($request->anexoDecisaoCONSU)) {
if (Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) {
Storage::delete($trabalho->anexoDecisaoCONSU);
}
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf');
}
// }
//Autorização ou Justificativa
if (isset($request->anexoAutorizacaoComiteEtica)) {
if (Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) {
Storage::delete($trabalho->anexoAutorizacaoComiteEtica);
}
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf');
$trabalho->justificativaAutorizacaoEtica = null;
} elseif (isset($request->justificativaAutorizacaoEtica)) {
if (Storage::disk()->exists($trabalho->justificativaAutorizacaoEtica)) {
Storage::delete($trabalho->justificativaAutorizacaoEtica);
}
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
$trabalho->anexoAutorizacaoComiteEtica = null;
}
//Anexo Lattes
if (isset($request->anexoLattesCoordenador)) {
if (Storage::disk()->exists($trabalho->anexoLattesCoordenador)) {
Storage::delete($trabalho->anexoLattesCoordenador);
}
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if (isset($request->anexoPlanilhaPontuacao)) {
if (Storage::disk()->exists($trabalho->anexoPlanilhaPontuacao)) {
Storage::delete($trabalho->anexoPlanilhaPontuacao);
}
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
// Anexo grupo pesquisa
if (isset($request->anexoGrupoPesquisa)) {
if (Storage::disk()->exists($trabalho->anexoGrupoPesquisa)) {
Storage::delete($trabalho->anexoGrupoPesquisa);
}
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension());
}
//Anexo documentro extra
if (isset($request->anexo_docExtra)) {
if (Storage::disk()->exists($trabalho->anexo_docExtra)) {
Storage::delete($trabalho->anexo_docExtra);
}
$trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension());
}
$trabalho->save();
return $trabalho;
}
// Anexo Projeto
if (isset($request->anexoProjeto)) {
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
//if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if (isset($request->anexoDecisaoCONSU)) {
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf');
}
//}
//Autorização ou Justificativa
if (isset($request->anexoAutorizacaoComiteEtica)) {
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf');
$trabalho->justificativaAutorizacaoEtica = null;
} elseif (isset($request->justificativaAutorizacaoEtica)) {
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
$trabalho->anexoAutorizacaoComiteEtica = null;
}
//Anexo Lattes
if (isset($request->anexoLattesCoordenador)) {
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if (isset($request->anexoPlanilhaPontuacao)) {
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
// Anexo grupo pesquisa
if (isset($request->anexoGrupoPesquisa)) {
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension());
}
// Anexo documento extra
if (isset($request->anexo_docExtra)) {
$trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension());
}
return $trabalho;
}
public function show($id)
{
$projeto = Trabalho::find($id);
if(Auth::user()->id != $projeto->proponente->user->id){
return redirect()->back();
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areas = Area::all();
$subareas = Subarea::all();
$areasTematicas = AreaTematica::all();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = $projeto->participantes;
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
// Verficação de pendencia de substituição
$aux = count(Substituicao::where('status','Em Aguardo')->whereIn('participanteSubstituido_id',$projeto->participantes->pluck('id'))->get());
$flagSubstituicao = 1;
if($aux != 0){
$flagSubstituicao = -1;
}
$trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get();
return view('projeto.visualizar')->with(['projeto' => $projeto,
'grandeAreas' => $grandeAreas,
'areas' => $areas,
'subAreas' => $subareas,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,
'estados' => $this->estados,
'visualizar' => true,
'enum_turno' => Participante::ENUM_TURNO,
'areasTematicas' => $areasTematicas,
'flagSubstituicao' =>$flagSubstituicao,
'trabalhos_user' => $trabalhos_user
]);
}
public function exportProjeto($id)
{
$projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first();
if (!$projeto) {
return back()->withErrors(['Proposta não encontrada!']);
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areas = Area::all();
$subAreas = Subarea::all();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
$enum_turno = Participante::ENUM_TURNO;
view()->share('projeto.visualizar', [$projeto, $grandeAreas, $areas, $subAreas, $edital, $users, $funcaoParticipantes, $participantes, $arquivos, $enum_turno]);
$pdf = PDF::loadView('projeto.visualizar', compact('projeto', 'grandeAreas', 'areas', 'subAreas', 'edital', 'users', 'funcaoParticipantes', 'participantes', 'arquivos', 'enum_turno'))->setOptions(['defaultFont' => 'sans-serif']);
// download PDF file with download method
return $pdf->download('pdf_file.pdf');
}
public function edit($id)
{
if(Auth::user()->tipo=='administrador'){
$projeto = Trabalho::find($id);
}else{
$projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first();
}
$proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first();
if (!$projeto) {
return back()->withErrors(['Proposta não encontrada!']);
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$areas = Area::all();
$subareas = Subarea::all();
$ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
//dd(Participante::all());
$rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $edital->id)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
$trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get();
return view('projeto.editar')->with(['projeto' => $projeto,
'grandeAreas' => $grandeAreas,
'areas' => $areas,
'subAreas' => $subareas,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
'listaOds' => $ODS,
'trabalhos_user' => $trabalhos_user
]);
}
public function destroy(Request $request)
{
$projeto = Trabalho::find($request->id);
//dd($trabalho);
Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id);
$participantes = $projeto->participantes;
foreach ($participantes as $participante) {
$plano = $participante->planoTrabalho;
if ($plano)
$plano->delete();
$participante->delete();
}
$projeto->delete();
return redirect()->back()->with(['mensagem' => 'Projeto deletado com sucesso!']);
}
public function excluirParticipante($id)
{
$participante = Participante::where('id', $id)->first();
//$participante = Participante::where('user_id', Auth()->user()->id)
// ->where('trabalho_id', $id)->first();
//$participante->trabalhos()->detach($id);
$participante->delete();
return redirect()->back();
}
public function solicitarCertificado(Trabalho $trabalho, Request $request)
{
$users = User::find($request->users);
$coord = $trabalho->coordenador;
$SolicitacaoCertificado = SolicitacaoCertificado::create();
Notificacao::create([
'remetente_id' => auth()->user()->id,
'destinatario_id' => $coord->user_id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 6
]);
foreach ($users as $user) {
SolicitacaoParticipante::create([
'user_id' => $user->id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
]);
}
$admins = Administrador::all();
foreach ($admins as $admin) {
$userTemp = User::find($admin->user_id);
Notificacao::create([
'remetente_id' => auth()->user()->id,
'destinatario_id' => $admin->user_id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 6,
]);
}
$destinatarios = $admins->map(function($admin) {return $admin->user;})->push($coord->user);
Notification::send($destinatarios, new SolicitacaoCertificadoNotification($trabalho->proponente, $trabalho, $userTemp, $users));
return redirect()->route('trabalho.show', ['id' => $trabalho->id])->with('sucesso', 'Solicitação de certificado/declaração efetuada com sucesso!');
}
public function novaVersao(Request $request)
{
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
$evento = Evento::find($request->eventoId);
if ($evento->inicioSubmissao > $mytime) {
if ($mytime >= $evento->fimSubmissao) {
return redirect()->route('home');
}
}
$validatedData = $request->validate([
'arquivo' => ['required', 'file', 'mimes:pdf'],
'eventoId' => ['required', 'integer'],
'trabalhoId' => ['required', 'integer'],
]);
$trabalho = Trabalho::find($request->trabalhoId);
if (Auth::user()->id != $trabalho->autorId) {
return redirect()->route('home');
}
$arquivos = $trabalho->arquivo;
$count = 1;
foreach ($arquivos as $key) {
$key->versaoFinal = false;
$key->save();
$count++;
}
$file = $request->arquivo;
$path = 'trabalhos/' . $request->eventoId . '/' . $trabalho->id . '/';
$nome = $count . ".pdf";
Storage::putFileAs($path, $file, $nome);
$arquivo = Arquivo::create([
'nome' => $path . $nome,
'trabalhoId' => $trabalho->id,
'versaoFinal' => true,
]);
return redirect()->route('evento.visualizar', ['id' => $request->eventoId]);
}
public function detalhesAjax(Request $request)
{
$validatedData = $request->validate([
'trabalhoId' => ['required', 'integer']
]);
$trabalho = Trabalho::find($request->trabalhoId);
$revisores = Atribuicao::where('trabalhoId', $request->trabalhoId)->get();
$revisoresAux = [];
foreach ($revisores as $key) {
if ($key->revisor->user->name != null) {
array_push($revisoresAux, [
'id' => $key->revisor->id,
'nomeOuEmail' => $key->revisor->user->name
]);
} else {
array_push($revisoresAux, [
'id' => $key->revisor->id,
'nomeOuEmail' => $key->revisor->user->email
]);
}
}
$revisoresDisponeis = Revisor::where('eventoId', $trabalho->eventoId)->where('areaId', $trabalho->areaId)->get();
$revisoresAux1 = [];
foreach ($revisoresDisponeis as $key) {
//verificar se ja é um revisor deste trabalhos
$revisorNaoExiste = true;
foreach ($revisoresAux as $key1) {
if ($key->id == $key1['id']) {
$revisorNaoExiste = false;
}
}
//
if ($revisorNaoExiste) {
if ($key->user->name != null) {
array_push($revisoresAux1, [
'id' => $key->id,
'nomeOuEmail' => $key->user->name
]);
} else {
array_push($revisoresAux1, [
'id' => $key->id,
'nomeOuEmail' => $key->user->email
]);
}
}
}
return response()->json([
'titulo' => $trabalho->titulo,
'resumo' => $trabalho->resumo,
'revisores' => $revisoresAux,
'revisoresDisponiveis' => $revisoresAux1
], 200);
}
public function atribuirAvaliadorTrabalho(Request $request)
{
$request->trabalho_id;
$trabalho = Trabalho::find($request->trabalho_id);
$avaliadores = Avaliador::all();
return view('coordenadorComissao.gerenciarEdital.atribuirAvaliadorTrabalho', ['avaliadores' => $avaliadores, 'trabalho' => $trabalho, 'evento' => $trabalho->evento]);
}
public function atribuir(Request $request)
{
$trabalho = Trabalho::find($request->trabalho_id);
$todosAvaliadores = Avaliador::all();
$avaliadores = Avaliador::whereIn('id', $request->avaliadores)->with('user')->get();
$trabalho->avaliadors()->sync($request->avaliadores);
foreach ($avaliadores as $key => $avaliador) {
$user = $avaliador->user;
$subject = "Trabalho atribuido";
Mail::to($user->email)
->send(new EventoCriado($user, $subject));
}
return view('coordenadorComissao.detalhesEdital', ['evento' => $trabalho->evento]);
}
public function projetosDoEdital($id)
{
$edital = Evento::find($id);
$projetos = Trabalho::where('evento_id', '=', $id)->get();
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje' => $hoje]);
}
public function baixarAnexoProjeto($id)
{
$projeto = Trabalho::find($id);
//dd($projeto);
if (Storage::disk()->exists($projeto->anexoProjeto)) {
ob_end_clean();
return Storage::download($projeto->anexoProjeto);
}
return abort(404);
}
public function baixarAnexoGrupoPesquisa($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoGrupoPesquisa)) {
ob_end_clean();
return Storage::download($projeto->anexoGrupoPesquisa);
}
return abort(404);
}
public function baixarAnexoConsu($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoDecisaoCONSU)) {
ob_end_clean();
return Storage::download($projeto->anexoDecisaoCONSU);
}
return abort(404);
}
public function baixarAnexoComite($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoAutorizacaoComiteEtica)) {
ob_end_clean();
return Storage::download($projeto->anexoAutorizacaoComiteEtica);
}
return abort(404);
}
public function baixarAnexoLattes($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoLattesCoordenador)) {
ob_end_clean();
return Storage::download($projeto->anexoLattesCoordenador);
}
return abort(404);
}
public function baixarAnexoPlanilha($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoPlanilhaPontuacao)) {
ob_end_clean();
$file = $projeto->anexoPlanilhaPontuacao;
$ext = explode(".", $file);
switch ($ext[1]) {
case 'xlsx':
$hearder = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
break;
case 'xls':
$hearder = 'application/vnd.ms-excel';
break;
case 'ods':
$hearder = 'application/vnd.oasis.opendocument.spreadsheet';
break;
default:
$hearder = 'application/vnd.ms-excel';
break;
}
$headers = array(
"Content-type: {$hearder}",
);
return Storage::download($projeto->anexoPlanilhaPontuacao, "Planilha.{$ext[1]}", $headers);
}
return abort(404);
}
public function baixarAnexoJustificativa($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->justificativaAutorizacaoEtica)) {
ob_end_clean();
return Storage::download($projeto->justificativaAutorizacaoEtica);
}
return abort(404);
}
public function baixarAnexoDocExtra($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexo_docExtra)) {
ob_end_clean();
return Storage::download($projeto->anexo_docExtra);
}
return abort(404);
}
public function baixarAnexoTemp($eventoId, $nomeAnexo)
{
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $eventoId)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
if (Storage::disk()->exists($trabalho->$nomeAnexo)) {
ob_end_clean();
return Storage::download($trabalho->$nomeAnexo);
}
return abort(404);
}
public function baixarEventoTemp($nomeAnexo)
{
$eventoTemp = Evento::where('criador_id', Auth::user()->id)->where('anexosStatus', 'temporario')
->orderByDesc('updated_at')->first();
if (Storage::disk()->exists($eventoTemp->$nomeAnexo)) {
ob_end_clean();
return Storage::download($eventoTemp->$nomeAnexo);
}
return abort(404);
}
//xxfa
public function update(UpdateTrabalho $request, $id)
{
try {
if (!$request->has('rascunho')) {
$request->merge([
'status' => 'submetido'
]);
} else {
$request->merge([
'status' => 'rascunho'
]);
}
$evento = Evento::find($request->editalId);
$request->merge([
'coordenador_id' => $evento->coordenadorComissao->id
]);
$trabalho = Trabalho::find($id);
$trabalho->ods()->sync($request->ods);
DB::beginTransaction();
if (!$trabalho) {
return back()->withErrors(['Proposta não encontrada']);
}
if($evento->tipo=="PIBEX"){
$trabalho->update($request->except([
'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra'
]));
}else{
$trabalho->update($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra'
]));
}
$pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id;
$trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento);
$trabalho->save();
if($request->integrantesExistentes == null){
$request->integrantesExistentes = [];
}
$usuariosRemovidos = TrabalhoUser::where('trabalho_id', $trabalho->id)->whereNotIn('user_id', $request->integrantesExistentes)->get();
if($usuariosRemovidos->first() != null) {
foreach($usuariosRemovidos as $usuarioRemovido){
$usuarioRemovido->delete();
}
}
if($evento->natureza_id == 3 && $request->integrantes != null){
foreach($request->integrantes as $integrante){
$integrante = explode(',', $integrante);
$trabalho_user = new TrabalhoUser();
$trabalho_user->user_id = $integrante[0];
$trabalho_user->funcao_participante_id = $integrante[1];
$trabalho_user->trabalho_id = $trabalho->id;
$trabalho_user->save();
}
}
if ($request->marcado == null) {
$idExcluido = $trabalho->participantes->pluck('id');
} else {
$idExcluido = [];
}
foreach ($request->participante_id as $key => $value) {
if ($request->marcado != null && array_search($key, $request->marcado) === false) {
if ($value !== null)
array_push($idExcluido, $value);
}
}
foreach ($idExcluido as $key => $value) {
$trabalho->participantes()->find($value)->delete();
}
$trabalho->refresh();
if ($request->has('marcado')) {
foreach ($request->marcado as $key => $part) {
$part = intval($part);
$passwordTemporario = Str::random(8);
$data['name'] = $request->name[$part];
$data['email'] = $request->email[$part];
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento[$part];
$data['cpf'] = $request->cpf[$part];
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg[$part];
$data['celular'] = $request->celular[$part];
$data['cep'] = $request->cep[$part];
$data['uf'] = $request->uf[$part];
$data['cidade'] = $request->cidade[$part];
$data['rua'] = $request->rua[$part];
$data['numero'] = $request->numero[$part];
$data['bairro'] = $request->bairro[$part];
$data['complemento'] = $request->complemento[$part];
if ($request->instituicao[$part] != "Outra") {
$data['instituicao'] = $request->instituicao[$part];
} else {
$data['instituicao'] = $request->outrainstituicao[$part];
}
$data['total_periodos'] = $request->total_periodos[$part];
if ($request->curso[$part] != "Outro") {
$data['curso'] = $request->curso[$part];
} else {
$data['curso'] = $request->outrocurso[$part];
}
$data['turno'] = $request->turno[$part];
$data['periodo_atual'] = $request->periodo_atual[$part];
$data['ordem_prioridade'] = $request->ordem_prioridade[$part];
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso[$part];
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part];
if($request->participante_id[$part] != null){
$participante = Participante::find($request->participante_id[$part]);
$user = User::where('email', $participante->user->email)->first();
}else{
$user = User::where('email', $data['email'])->first();
}
if ($user == null) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
$participante = Participante::create($data);
$participante->data_entrada = $participante->created_at;
$user->participantes()->save($participante);
$trabalho->participantes()->save($participante);
$participante->trabalho_id = $trabalho->id;
$participante->save();
} else {
// $user = $participante->user;
$user->update($data);
if( $user->endereco == null){
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}else{
$endereco = $user->endereco;
$endereco->update($data);
}
$participante = $user->participantes->where('trabalho_id', $trabalho->id)->where('id', $request->participante_id[$part])->first();
// dd($participante);
if ($participante == null) {
// dd('part null');
$participante = Participante::create($data);
$user->participantes()->save($participante);
$trabalho->participantes()->save($participante);
} else {
// dd('part update');
$participante->update($data);
}
}
if ($request->has('anexoPlanoTrabalho') && array_key_exists($part, $request->anexoPlanoTrabalho) && $request->nomePlanoTrabalho[$part] != null) {
if (Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->count()) {
$arquivo = Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->first();
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$titulo = $data['nomePlanoTrabalho'];
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo->update([
'titulo' => $titulo,
'nome' => $path . $nome,
'data' => now(),
]);
} else {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
}
DB::commit();
if(Auth::user()->tipo == 'administrador'){
return redirect(route('admin.analisarProposta',['id'=>$trabalho->id]));
}
if (!$request->has('rascunho')) {
Notification::send($trabalho->proponente->user, new SubmissaoNotification($trabalho));
}
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta atualizada!']);
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]);
}
}
public function buscarUsuario(Request $request) {
$usuario = User::where('cpf', $request->cpf_consulta)->first();
$funcao = FuncaoParticipantes::where('id', $request->funcao)->first();
if($usuario){
return json_encode([$usuario, $funcao]);
}
return json_encode('inexistente');
}
public function salvar(StoreTrabalho $request)
{
try {
if (!$request->has('rascunho')) {
$request->merge([
'status' => 'submetido'
]);
}
$evento = Evento::find($request->editalId);
$request->merge([
'coordenador_id' => $evento->coordenadorComissao->id
]);
DB::beginTransaction();
if($evento->tipo=="PIBEX"){
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra'
]));
}else{
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra'
]));
}
if ($request->has('marcado')) {
foreach ($request->marcado as $key => $part) {
$part = intval($part);
$passwordTemporario = Str::random(8);
$data['name'] = $request->name[$part];
$data['email'] = $request->email[$part];
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento[$part];
$data['cpf'] = $request->cpf[$part];
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg[$part];
$data['celular'] = $request->celular[$part];
$data['cep'] = $request->cep[$part];
$data['uf'] = $request->uf[$part];
$data['cidade'] = $request->cidade[$part];
$data['rua'] = $request->rua[$part];
$data['numero'] = $request->numero[$part];
$data['bairro'] = $request->bairro[$part];
$data['complemento'] = $request->complemento[$part];
if ($request->instituicao[$part] != "Outra") {
$data['instituicao'] = $request->instituicao[$part];
} else {
$data['instituicao'] = $request->outrainstituicao[$part];
}
$data['total_periodos'] = $request->total_periodos[$part];
if ($request->curso[$part] != "Outro") {
$data['curso'] = $request->curso[$part];
} else {
$data['curso'] = $request->outrocurso[$part];
}
$data['turno'] = $request->turno[$part];
$data['periodo_atual'] = $request->periodo_atual[$part];
$data['ordem_prioridade'] = $request->ordem_prioridade[$part];
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso[$part];
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part];
$user = User::where('email', $data['email'])->first();
if ($user == null) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}
// $participante = $user->participantes->where('trabalho_id', $trabalho->id)->first();
// if ($participante == null){
// $participante = Participante::create($data);
// }
$participante = Participante::create($data);
$participante->data_entrada = $participante->created_at;
$user->participantes()->save($participante);
$participante->trabalho_id = $trabalho->id;
$participante->save();
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
$evento->trabalhos()->save($trabalho);
$pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id;
$trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento);
$trabalho->modalidade = $request->modalidade;
$trabalho->save();
if($evento->natureza_id == 3){
foreach($request->integrantes as $integrante){
$integrante = explode(',', $integrante);
$trabalho_user = new TrabalhoUser();
$trabalho_user->user_id = $integrante[0];
$trabalho_user->funcao_participante_id = $integrante[1];
$trabalho_user->trabalho_id = $trabalho->id;
$trabalho_user->save();
}
}
$trabalho->ods()->sync($request->ods);
DB::commit();
if (!$request->has('rascunho')) {
//Notificações
//Coordenador
$userTemp = User::find($evento->coordenadorComissao->user_id);
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 1,
]);
$notificacao->save();
// SubmissaoRecebidaNotification.php
Notification::send($userTemp, new SubmissaoRecebidaNotification($trabalho->id,$trabalho->titulo,$userTemp));
//Proponente
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => Auth::user()->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 1,
]);
$notificacao->save();
// submissao e notificação.php $trabalho->id,$trabalho->titulo
Notification::send(Auth::user(), new SubmissaoNotification($trabalho));
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta submetida!']);
} else {
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Rascunho salvo!']);
}
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]);
}
}
public function atribuirDados(Request $request, $edital, Trabalho $projeto = null)
{
if ($projeto == null) {
$projeto = new Trabalho();
}
$proponente = User::find(auth()->user()->id)->proponentes;
$hoje = now();
$projeto->titulo = $request->nomeProjeto;
$projeto->coordenador_id = $edital->coordenadorComissao->id;
$projeto->grande_area_id = $request->grandeArea;
$projeto->area_id = $request->area;
$projeto->sub_area_id = $request->subArea;
$projeto->pontuacaoPlanilha = $request->pontuacaoPlanilha;
$projeto->linkGrupoPesquisa = $request->linkGrupo;
$projeto->linkLattesEstudante = $request->linkLattesEstudante;
$projeto->data = $hoje;
$projeto->evento_id = $request->editalId;
$projeto->status = 'submetido';
$projeto->proponente_id = $proponente->id;
$projeto->conflitosInteresse = $request->conflitosInteresse;
// Salvando anexos no storage
$projeto->save();
$pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id;
$projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital);
return $projeto;
}
public function salvarParticipantes(Request $request, $edital, $projeto, $edicao = false)
{
if ($edicao) {
$participantes = $projeto->participantes;
$participantesPermanecem = collect();
// dd($request->all());
foreach ($request->participante_id as $key => $id) {
// Novo participante
if ($id == 0 || $id == null) {
$userParticipante = User::where('email', $request->emailParticipante[$key])->first();
$participante = new Participante();
if ($userParticipante == null) {
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $request->emailParticipante[$key];
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
if ($request->nomePlanoTrabalho[$key] != null) {
$usuario = User::where('email', $request->emailParticipante[$key])->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
// dd($arquivo);
}
// Editado
} elseif ($id > 0) {
// Removo dos cantidatos excluidos
$participante = Participante::find($id);
$participantesPermanecem->push($participante);
$usuario = $participante->user;
$endereco = $usuario->endereco;
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$usuario->update();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->update();
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->update();
if ($request->anexoPlanoTrabalho != null && array_key_exists($key, $request->anexoPlanoTrabalho) && $request->anexoPlanoTrabalho[$key] != null) {
$planoAtual = $participante->planoTrabalho;
if (Storage::disk()->exists($planoAtual->nome)) {
Storage::delete($planoAtual->nome);
}
$planoAtual->delete();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
// Excluidos
$participantesExcluidos = $participantes->diff($participantesPermanecem);
foreach ($participantesExcluidos as $participante) {
$plano = $participante->planoTrabalho;
if ($plano)
$plano->delete();
$participante->delete();
}
return true;
}
if ($request->emailParticipante != null) {
foreach ($request->emailParticipante as $key => $email) {
$userParticipante = User::where('email', $email)->first();
$participante = new Participante();
if ($userParticipante == null) {
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $email;
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$usuario = User::where('email', $email)->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$subject = "Participante de Projeto";
Mail::to($email)->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
if ($request->anexoPlanoTrabalho[$key]) {
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
$subject = "Participante de Projeto";
$time = Carbon::today('America/Recife');
$time = $time->isoFormat('às H:mm, dddd, D/M/YYYY');
Mail::to($email)
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
// if($request->nomePlanoTrabalho[$key] != null){
// $usuario = User::where('email', $email)->first();
// $participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
// $path = 'trabalhos/' . $edital->id . '/' . $projeto->id .'/';
// $nome = $request->nomePlanoTrabalho[$key] .".pdf";
// $file = $request->anexoPlanoTrabalho[$key];
// Storage::putFileAs($path, $file, $nome);
// $agora = now();
// $arquivo = new Arquivo();
// $arquivo->titulo = $request->nomePlanoTrabalho[$key];
// $arquivo->nome = $path . $nome;
// $arquivo->trabalhoId = $projeto->id;
// $arquivo->data = $agora;
// $arquivo->participanteId = $participante->id;
// $arquivo->versaoFinal = true;
// $arquivo->save();
// }
}
}
return true;
}
public function atualizar(Request $request, $id)
{
$edital = Evento::find($request->editalId);
$hoje = now();
$projeto = Trabalho::find($id);
if (!($edital->inicioSubmissao < $hoje && $edital->fimSubmissao >= $hoje)) {
return redirect()->route('inicial')->with(['error' => 0, 'mensagem' => 'As submissões para o edital ' . $edital->titulo . ' foram encerradas.']);
}
$projeto = $this->atribuirDados($request, $edital, $projeto);
$projeto->update();
// dd($request->all());
// Salvando participantes
$this->salvarParticipantes($request, $edital, $projeto, true);
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto atualizado com sucesso!']);
}
public function telaTrocaPart(Request $request)
{
$projeto = Trabalho::find($request->projeto_id);
$edital = Evento::find($projeto->evento_id);
if(Auth::user()->id != $projeto->proponente->user->id){
return redirect()->back();
}
$participantes = $projeto->participantes;
$substituicoesProjeto = Substituicao::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get();
$desligamentosProjeto = Desligamento::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get();
return view('administrador.substituirParticipante')->with(['projeto' => $projeto,
'edital' => $edital,
'participantes' => $participantes,
'substituicoesProjeto' => $substituicoesProjeto,
'estados' => $this->estados,
'enum_turno' => Participante::ENUM_TURNO,
'desligamentosProjeto' => $desligamentosProjeto,
]);
}
public function trocaParticipante(Request $request)
{
try {
DB::beginTransaction();
$trabalho = Trabalho::find($request->projetoId);
$evento = Evento::find($request->editalId);
$participanteSubstituido = Participante::where('id', $request->participanteId)->first();
$planoAntigo = Arquivo::where('id', $participanteSubstituido->planoTrabalho->id)->first();
$passwordTemporario = Str::random(8);
$data['name'] = $request->name;
$data['email'] = $request->email;
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento;
$data['data_entrada'] = $request->data_entrada;
$data['cpf'] = $request->cpf;
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg;
$data['celular'] = $request->celular;
$data['linkLattes'] = $request->linkLattes;
$data['cep'] = $request->cep;
$data['uf'] = $request->uf;
$data['cidade'] = $request->cidade;
$data['rua'] = $request->rua;
$data['numero'] = $request->numero;
$data['bairro'] = $request->bairro;
$data['complemento'] = $request->complemento;
if ($request->instituicao != "Outra") {
$data['instituicao'] = $request->instituicao;
} else {
$data['instituicao'] = $request->outrainstituicao;
}
$data['total_periodos'] = $request->total_periodos;
if ($request->curso != "Outro") {
$data['curso'] = $request->curso;
} else {
$data['curso'] = $request->outrocurso;
}
$data['turno'] = $request->turno;
$data['periodo_atual'] = $request->periodo_atual;
$data['ordem_prioridade'] = $request->ordem_prioridade;
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso;
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho;
if ($request->substituirApenasPlanoCheck == 'check') {
$substituicao = new Substituicao();
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participanteSubstituido->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'TrocarPlano';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participanteSubstituido->id;
$substituicao->planoSubstituto_id = $arquivo->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->save();
}
} else {
//$participanteSubstituido->delete();
$substituicao = new Substituicao();
$substituicao->observacao = $request->textObservacao;
if ($participanteSubstituido->data_entrada > $request->data_entrada) {
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Escolha uma data de entrada posterior a entrada do discente substituído"]);
}
$participanteSubstituido->data_saida = $request->data_entrada;
\App\Validator\CpfValidator::validate($request->all());
$user = User::where('email', $data['email'])->first();
if (!$user) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}
$participante = $user->participantes->where('trabalho_id', $trabalho->id)->first();
if (!$participante) {
$participante = Participante::create($data);
$participanteSubstituido->save();
}
$pasta = 'participantes/' . $participante->id;
$participante->anexoTermoCompromisso = Storage::putFileAs($pasta, $request->anexoTermoCompromisso, "Termo_de_Compromisso.pdf");
$participante->anexoComprovanteMatricula = Storage::putFileAs($pasta, $request->anexoComprovanteMatricula, "Comprovante_de_Matricula.pdf");
$participante->anexoLattes = Storage::putFileAs($pasta, $request->anexoCurriculoLattes, "Curriculo_Lattes.pdf");
if ($request->anexoAutorizacaoPais != null) {
$participante->anexoAutorizacaoPais = Storage::putFileAs($pasta, $request->anexoAutorizacaoPais, "Autorização_dos_Pais.pdf");
}
if ($request->anexoComprovanteBancario != null) {
$participante->anexoComprovanteBancario = Storage::putFileAs($pasta, $request->anexoComprovanteBancario, "Comprovante_Bancario." . $request->file('anexoComprovanteBancario')->getClientOriginalExtension());
}
$user->participantes()->save($participante);
//$trabalho->participantes()->save($participante);
if ($request->manterPlanoCheck == 'check') {
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'ManterPlano';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participante->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->planoSubstituto_id = $planoAntigo->id;
$planoAntigo->participanteId = $participante->id;
$substituicao->save();
$planoAntigo->save();
} else {
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'Completa';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participante->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->planoSubstituto_id = $arquivo->id;
$substituicao->save();
}
}
}
$evento->trabalhos()->save($trabalho);
$trabalho->save();
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 2,
]);
$notificacao->save();
DB::commit();
Mail::to($evento->coordenadorComissao->user->email)->send(new SolicitacaoSubstituicao($evento, $trabalho,'',$substituicao->tipo,$substituicao->status));
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['sucesso' => 'Pedido de substituição enviado com sucesso!']);
} catch (\App\Validator\ValidationException $th) {
DB::rollback();
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Cpf inválido"]);
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => $th->getMessage()]);
}
}
public function telaShowSubst(Request $request)
{
$trabalho = Trabalho::find($request->trabalho_id);
$substituicoesProjeto = Substituicao::where('trabalho_id', $trabalho->id)->orderBy('created_at', 'DESC')->get();
$substituicoesPendentes = Substituicao::where('trabalho_id', $trabalho->id)->where('status', 'Em Aguardo')->orderBy('created_at', 'DESC')->get();
return view('administrador.analiseSubstituicoes')->with(['substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,
'trabalho' => $trabalho]);
}
public function aprovarSubstituicao(Request $request)
{
$substituicao = Substituicao::find($request->substituicaoID);
$trabalho = Trabalho::find($substituicao->trabalho->id);
if ($request->aprovar == 'true') {
try {
if ($substituicao->tipo == 'TrocarPlano') {
if(!empty($substituicao->participanteSubstituido)){
$substituicao->participanteSubstituido->planoTrabalho()->where('id', '!=', $substituicao->planoSubstituto->id)->delete();
}
$substituicao->status = 'Finalizada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} else {
if(!empty($substituicao->participanteSubstituido)){
$substituicao->participanteSubstituido->delete();
}
$trabalho->participantes()->save($substituicao->participanteSubstituto);
$substituicao->status = 'Finalizada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
}
Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status));
return redirect()->back()->with(['sucesso' => 'Substituição concluída!']);
} catch (\Throwable $th) {
return redirect()->back()->with(['erro' => $th->getMessage()]);
}
} else {
try {
if ($substituicao->tipo == 'TrocarPlano') {
$substituicao->participanteSubstituido->planoTrabalho()->where('id', '=', $substituicao->planoSubstituto->id)->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} elseif ($substituicao->tipo == 'ManterPlano') {
$substituicao->planoSubstituto->participanteId = $substituicao->participanteSubstituido->id;
$substituicao->planoSubstituto->save();
$substituicao->participanteSubstituto->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} else {
$substituicao->participanteSubstituto->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
}
$trabalho = Trabalho::find($substituicao->trabalho->id);
Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status));
return redirect()->back()->with(['sucesso' => 'Substituição cancelada com sucesso!']);
} catch (\Throwable $th) {
return redirect()->back()->with(['erro' => $th->getMessage()]);
}
}
}
public function aprovarProposta(Request $request, $id)
{
$trabalho = Trabalho::find($id);
$trabalho->status = $request->statusProp;
$trabalho->comentario = $request->comentario;
$trabalho->save();
return redirect()->back()->with(['sucesso' => 'Proposta avaliada com sucesso']);
}
<?php
namespace App\Http\Controllers;
use PDF;
use App;
use App\Administrador;
use Auth;
use App\Area;
use App\User;
use App\Evento;
use App\AreaTematica;
use App\Arquivo;
use App\Coautor;
use App\Revisor;
use App\TrabalhoUser;
use App\SubArea;
use App\Endereco;
use App\Trabalho;
use App\Avaliador;
use Carbon\Carbon;
use App\AnexosTemp;
use App\Atribuicao;
use App\GrandeArea;
use App\Modalidade;
use App\Proponente;
use App\Participante;
use App\AreaModalidade;
use App\Certificado;
use Illuminate\Http\File;
use App\Mail\EventoCriado;
use Illuminate\Support\Str;
use App\CoordenadorComissao;
use App\FuncaoParticipantes;
use Illuminate\Http\Request;
use App\Mail\SubmissaoTrabalho;
use App\OutrasInfoParticipante;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\Http\Requests\StoreTrabalho;
use Illuminate\Support\Facades\Mail;
use App\Http\Requests\UpdateTrabalho;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use App\Mail\EmailParaUsuarioNaoCadastrado;
use App\Mail\SolicitacaoSubstituicao;
use App\Notificacao;
use App\Notifications\SolicitacaoCertificadoNotification;
use App\Notifications\SubmissaoNotification;
use App\Notifications\SubmissaoRecebidaNotification;
use App\SolicitacaoCertificado;
use App\SolicitacaoParticipante;
use App\Substituicao;
use Illuminate\Support\Facades\Notification;
use App\Desligamento;
use App\ObjetivoDeDesenvolvimentoSustentavel;
class TrabalhoController extends Controller
{
public $estados = array(
'AC' => 'Acre',
'AL' => 'Alagoas',
'AP' => 'Amapá',
'AM' => 'Amazonas',
'BA' => 'Bahia',
'CE' => 'Ceará',
'DF' => 'Distrito Federal',
'ES' => 'Espirito Santo',
'GO' => 'Goiás',
'MA' => 'Maranhão',
'MS' => 'Mato Grosso do Sul',
'MT' => 'Mato Grosso',
'MG' => 'Minas Gerais',
'PA' => 'Pará',
'PB' => 'Paraíba',
'PR' => 'Paraná',
'PE' => 'Pernambuco',
'PI' => 'Piauí',
'RJ' => 'Rio de Janeiro',
'RN' => 'Rio Grande do Norte',
'RS' => 'Rio Grande do Sul',
'RO' => 'Rondônia',
'RR' => 'Roraima',
'SC' => 'Santa Catarina',
'SP' => 'São Paulo',
'SE' => 'Sergipe',
'TO' => 'Tocantins',
);
public function index($id)
{
$edital = Evento::find($id);
$grandeAreas = GrandeArea::orderBy('nome')->get();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::orderBy('nome')->get();
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
if($proponente == null){
return view('proponente.cadastro')->with(['mensagem' => 'Você não possui perfil de Proponente, para submeter algum projeto preencha o formulário.']);;
}
$rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$edital->id)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
// dd($estados);
return view('evento.submeterTrabalho',[
// return view('evento.backupForm',[
'edital' => $edital,
'grandeAreas' => $grandeAreas,
'funcaoParticipantes'=> $funcaoParticipantes,
'rascunho' => $rascunho,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
'ods' =>$ODS,
]);
}
public function arquivar(Request $request){
$trabalho = Trabalho::find($request->trabalho_id);
$arquivos = Arquivo::where('trabalhoId',$trabalho->id)->get();
if($request->arquivar_tipo == 1 ){
$trabalho->arquivado = true;
foreach ($arquivos as $arquivo){
$arquivo->arquivado = true;
$arquivo->update();
}
$message = "Projeto ".$trabalho->titulo." arquivado";
}else{
$trabalho->arquivado = false;
foreach ($arquivos as $arquivo){
$arquivo->arquivado = false;
$arquivo->update();
}
$message = "Projeto ".$trabalho->titulo." desarquivado";
}
$trabalho->update();
return redirect()->back()->with(['sucesso'=>$message ]);
}
public function storeParcial(Request $request){
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
$evento = Evento::find($request->editalId);
$coordenador = CoordenadorComissao::find($evento->coordenadorId);
//Relaciona o projeto criado com o proponente que criou o projeto
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$trabalho = "trabalho";
if ($evento->inicioSubmissao > $mytime) {
if ($mytime >= $evento->fimSubmissao) {
return redirect()->route('home');
}
}
//--Salvando os dados da submissão temporariamente
$this->armazenarInfoTemp($request, $proponente);
return redirect()->route('projetos.edital', ['id' => $request->editalId]);
}
//Armazena temporariamente dados da submissão, no banco de dados e no storage
public function armazenarInfoTemp(Request $request, $proponente)
{
//---Dados do Projeto
$trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id',$request->editalId)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
//dd($trabalho);
if($trabalho == null){
$trabalho = new Trabalho();
$trabalho->proponente_id = $proponente->id;
$trabalho->evento_id = $request->editalId;
$trabalho->status = 'Rascunho';
$stringKeys = ['titulo','linkGrupoPesquisa', 'linkLattesEstudante','pontuacaoPlanilha','anexoProjeto',
'anexoPlanilhaPontuacao', 'anexoLattesCoordenador', 'conflitosInteresse'];
$intKeys = ['grande_area_id','area_id','sub_area_id','coordenador_id'];
$trabalho->fill(
array_fill_keys($stringKeys, "") + array_fill_keys($intKeys, 1)
)->save();
//dd($trabalho);
}
if(!(is_null($request->nomeProjeto)) ) {
$trabalho->titulo = $request->nomeProjeto;
}
if(!(is_null($request->grandeArea))){
$trabalho->grande_area_id = $request->grandeArea;
}
if(!(is_null($request->area))){
$trabalho->area_id = $request->area;
}
if(!(is_null($request->subArea))){
$trabalho->sub_area_id = $request->subArea;
}
if(!(is_null($request->pontuacaoPlanilha))){
$trabalho->pontuacaoPlanilha = $request->pontuacaoPlanilha;
}
if(!(is_null($request->linkGrupo))){
$trabalho->linkGrupoPesquisa = $request->linkGrupo;
}
if(!(is_null($request->conflitosInteresse))){
$trabalho->conflitosInteresse = $request->conflitosInteresse;
}
//Anexos do projeto
$pasta = 'trabalhos/' . $request->editalId . '/' . $trabalho->id;
if(!(is_null($request->anexoDecisaoCONSU)) ) {
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, "CONSU.pdf");
}
if (!(is_null($request->anexoComiteEtica))) {
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoComiteEtica, "Comite_de_etica.pdf");
}
if (!(is_null($request->justificativaAutorizacaoEtica))) {
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, "Justificativa.pdf");
}
if (!(is_null($request->anexoProjeto))) {
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, "Projeto.pdf");
}
if (!(is_null($request->anexoLattesCoordenador))) {
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, "Lattes_Coordenador.pdf");
}
if (!(is_null($request->anexoPlanilhaPontuacao))) {
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha.". $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
$trabalho->update();
//---Anexos planos de trabalho
//dd($trabalho);
return $trabalho;
}
public function validarAnexosRascunho(Request $request, $trabalho){
$validator = Validator::make($trabalho->getAttributes(),[
'anexoPlanilhaPontuacao' => $request->anexoPlanilhaPontuacao==null?['planilha']:[],
]);
if ($validator->fails()) {
//dd('asdf');
return back()->withErrors($validator)->withInput();
}
return 1;
}
public function armazenarAnexosFinais($request, $pasta, $trabalho, $evento){
// Checando se é um novo trabalho ou uma edição
if ($trabalho->anexoProjeto != null) {
// Anexo Projeto
if (isset($request->anexoProjeto)) {
if (Storage::disk()->exists($trabalho->anexoProjeto)) {
Storage::delete($trabalho->anexoProjeto);
}
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
// if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if (isset($request->anexoDecisaoCONSU)) {
if (Storage::disk()->exists($trabalho->anexoDecisaoCONSU)) {
Storage::delete($trabalho->anexoDecisaoCONSU);
}
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf');
}
// }
//Autorização ou Justificativa
if (isset($request->anexoAutorizacaoComiteEtica)) {
if (Storage::disk()->exists($trabalho->anexoAutorizacaoComiteEtica)) {
Storage::delete($trabalho->anexoAutorizacaoComiteEtica);
}
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf');
$trabalho->justificativaAutorizacaoEtica = null;
} elseif (isset($request->justificativaAutorizacaoEtica)) {
if (Storage::disk()->exists($trabalho->justificativaAutorizacaoEtica)) {
Storage::delete($trabalho->justificativaAutorizacaoEtica);
}
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
$trabalho->anexoAutorizacaoComiteEtica = null;
}
//Anexo Lattes
if (isset($request->anexoLattesCoordenador)) {
if (Storage::disk()->exists($trabalho->anexoLattesCoordenador)) {
Storage::delete($trabalho->anexoLattesCoordenador);
}
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if (isset($request->anexoPlanilhaPontuacao)) {
if (Storage::disk()->exists($trabalho->anexoPlanilhaPontuacao)) {
Storage::delete($trabalho->anexoPlanilhaPontuacao);
}
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
// Anexo grupo pesquisa
if (isset($request->anexoGrupoPesquisa)) {
if (Storage::disk()->exists($trabalho->anexoGrupoPesquisa)) {
Storage::delete($trabalho->anexoGrupoPesquisa);
}
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension());
}
//Anexo documentro extra
if (isset($request->anexo_docExtra)) {
if (Storage::disk()->exists($trabalho->anexo_docExtra)) {
Storage::delete($trabalho->anexo_docExtra);
}
$trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension());
}
$trabalho->save();
return $trabalho;
}
// Anexo Projeto
if (isset($request->anexoProjeto)) {
$trabalho->anexoProjeto = Storage::putFileAs($pasta, $request->anexoProjeto, 'Projeto.pdf');
}
//Anexo Decisão CONSU
//if ($evento->tipo == 'PIBIC' || $evento->tipo == 'PIBIC-EM') {
if (isset($request->anexoDecisaoCONSU)) {
$trabalho->anexoDecisaoCONSU = Storage::putFileAs($pasta, $request->anexoDecisaoCONSU, 'Decisão_da_Câmara_ou_Conselho_Pertinente.pdf');
}
//}
//Autorização ou Justificativa
if (isset($request->anexoAutorizacaoComiteEtica)) {
$trabalho->anexoAutorizacaoComiteEtica = Storage::putFileAs($pasta, $request->anexoAutorizacaoComiteEtica, 'Comite_de_etica.pdf');
$trabalho->justificativaAutorizacaoEtica = null;
} elseif (isset($request->justificativaAutorizacaoEtica)) {
$trabalho->justificativaAutorizacaoEtica = Storage::putFileAs($pasta, $request->justificativaAutorizacaoEtica, 'Justificativa.pdf');
$trabalho->anexoAutorizacaoComiteEtica = null;
}
//Anexo Lattes
if (isset($request->anexoLattesCoordenador)) {
$trabalho->anexoLattesCoordenador = Storage::putFileAs($pasta, $request->anexoLattesCoordenador, 'Lattes_Coordenador.pdf');
}
//Anexo Planilha
if (isset($request->anexoPlanilhaPontuacao)) {
$trabalho->anexoPlanilhaPontuacao = Storage::putFileAs($pasta, $request->anexoPlanilhaPontuacao, "Planilha." . $request->file('anexoPlanilhaPontuacao')->getClientOriginalExtension());
}
// Anexo grupo pesquisa
if (isset($request->anexoGrupoPesquisa)) {
$trabalho->anexoGrupoPesquisa = Storage::putFileAs($pasta, $request->anexoGrupoPesquisa, "Grupo_de_pesquisa." . $request->file('anexoGrupoPesquisa')->extension());
}
// Anexo documento extra
if (isset($request->anexo_docExtra)) {
$trabalho->anexo_docExtra = Storage::putFileAs($pasta, $request->anexo_docExtra, "Documento_Extra." . $request->file('anexo_docExtra')->extension());
}
return $trabalho;
}
public function show($id)
{
$projeto = Trabalho::find($id);
if(Auth::user()->id != $projeto->proponente->user->id){
return redirect()->back();
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areas = Area::all();
$subareas = Subarea::all();
$areasTematicas = AreaTematica::all();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = $projeto->participantes;
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
// Verficação de pendencia de substituição
$aux = count(Substituicao::where('status','Em Aguardo')->whereIn('participanteSubstituido_id',$projeto->participantes->pluck('id'))->get());
$flagSubstituicao = 1;
if($aux != 0){
$flagSubstituicao = -1;
}
$trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get();
return view('projeto.visualizar')->with(['projeto' => $projeto,
'grandeAreas' => $grandeAreas,
'areas' => $areas,
'subAreas' => $subareas,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,
'estados' => $this->estados,
'visualizar' => true,
'enum_turno' => Participante::ENUM_TURNO,
'areasTematicas' => $areasTematicas,
'flagSubstituicao' =>$flagSubstituicao,
'trabalhos_user' => $trabalhos_user
]);
}
public function exportProjeto($id)
{
$projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first();
if (!$projeto) {
return back()->withErrors(['Proposta não encontrada!']);
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areas = Area::all();
$subAreas = Subarea::all();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
$enum_turno = Participante::ENUM_TURNO;
view()->share('projeto.visualizar', [$projeto, $grandeAreas, $areas, $subAreas, $edital, $users, $funcaoParticipantes, $participantes, $arquivos, $enum_turno]);
$pdf = PDF::loadView('projeto.visualizar', compact('projeto', 'grandeAreas', 'areas', 'subAreas', 'edital', 'users', 'funcaoParticipantes', 'participantes', 'arquivos', 'enum_turno'))->setOptions(['defaultFont' => 'sans-serif']);
// download PDF file with download method
return $pdf->download('pdf_file.pdf');
}
public function edit($id)
{
if(Auth::user()->tipo=='administrador'){
$projeto = Trabalho::find($id);
}else{
$projeto = Auth::user()->proponentes->trabalhos()->where('id', $id)->first();
}
$proponente = Proponente::where('user_id', $projeto->proponente->user_id)->first();
if (!$projeto) {
return back()->withErrors(['Proposta não encontrada!']);
}
$edital = Evento::find($projeto->evento_id);
$grandeAreas = GrandeArea::all();
$areaTematicas = AreaTematica::orderBy('nome')->get();
$areas = Area::all();
$subareas = Subarea::all();
$ODS = ObjetivoDeDesenvolvimentoSustentavel::orderBy('nome')->get();
$funcaoParticipantes = FuncaoParticipantes::all();
$participantes = Participante::where('trabalho_id', $id)->get();
$participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
$users = User::whereIn('id', $participantesUsersIds)->get();
$arquivos = Arquivo::where('trabalhoId', $id)->get();
//dd(Participante::all());
$rascunho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $edital->id)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
$trabalhos_user = TrabalhoUser::where('trabalho_id', $projeto->id)->get();
return view('projeto.editar')->with(['projeto' => $projeto,
'grandeAreas' => $grandeAreas,
'areas' => $areas,
'subAreas' => $subareas,
'edital' => $edital,
'users' => $users,
'funcaoParticipantes' => $funcaoParticipantes,
'participantes' => $participantes,
'arquivos' => $arquivos,
'enum_turno' => Participante::ENUM_TURNO,
'estados' => $this->estados,
'areaTematicas' => $areaTematicas,
'listaOds' => $ODS,
'trabalhos_user' => $trabalhos_user
]);
}
public function destroy(Request $request)
{
$projeto = Trabalho::find($request->id);
//dd($trabalho);
Storage::deleteDirectory('trabalhos/' . $projeto->evento->id . '/' . $projeto->id);
$participantes = $projeto->participantes;
foreach ($participantes as $participante) {
$plano = $participante->planoTrabalho;
if ($plano)
$plano->delete();
$participante->delete();
}
$projeto->delete();
return redirect()->back()->with(['mensagem' => 'Projeto deletado com sucesso!']);
}
public function excluirParticipante($id)
{
$participante = Participante::where('id', $id)->first();
//$participante = Participante::where('user_id', Auth()->user()->id)
// ->where('trabalho_id', $id)->first();
//$participante->trabalhos()->detach($id);
$participante->delete();
return redirect()->back();
}
public function solicitarCertificado(Trabalho $trabalho, Request $request)
{
$users = User::find($request->users);
$coord = $trabalho->coordenador;
$SolicitacaoCertificado = SolicitacaoCertificado::create();
Notificacao::create([
'remetente_id' => auth()->user()->id,
'destinatario_id' => $coord->user_id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 6
]);
foreach ($users as $user) {
SolicitacaoParticipante::create([
'user_id' => $user->id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
]);
}
$admins = Administrador::all();
foreach ($admins as $admin) {
$userTemp = User::find($admin->user_id);
Notificacao::create([
'remetente_id' => auth()->user()->id,
'destinatario_id' => $admin->user_id,
'solicitacao_certificado_id' => $SolicitacaoCertificado->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 6,
]);
}
$destinatarios = $admins->map(function($admin) {return $admin->user;})->push($coord->user);
Notification::send($destinatarios, new SolicitacaoCertificadoNotification($trabalho->proponente, $trabalho, $userTemp, $users));
return redirect()->route('trabalho.show', ['id' => $trabalho->id])->with('sucesso', 'Solicitação de certificado/declaração efetuada com sucesso!');
}
public function novaVersao(Request $request)
{
$mytime = Carbon::now('America/Recife');
$mytime = $mytime->toDateString();
$evento = Evento::find($request->eventoId);
if ($evento->inicioSubmissao > $mytime) {
if ($mytime >= $evento->fimSubmissao) {
return redirect()->route('home');
}
}
$validatedData = $request->validate([
'arquivo' => ['required', 'file', 'mimes:pdf'],
'eventoId' => ['required', 'integer'],
'trabalhoId' => ['required', 'integer'],
]);
$trabalho = Trabalho::find($request->trabalhoId);
if (Auth::user()->id != $trabalho->autorId) {
return redirect()->route('home');
}
$arquivos = $trabalho->arquivo;
$count = 1;
foreach ($arquivos as $key) {
$key->versaoFinal = false;
$key->save();
$count++;
}
$file = $request->arquivo;
$path = 'trabalhos/' . $request->eventoId . '/' . $trabalho->id . '/';
$nome = $count . ".pdf";
Storage::putFileAs($path, $file, $nome);
$arquivo = Arquivo::create([
'nome' => $path . $nome,
'trabalhoId' => $trabalho->id,
'versaoFinal' => true,
]);
return redirect()->route('evento.visualizar', ['id' => $request->eventoId]);
}
public function detalhesAjax(Request $request)
{
$validatedData = $request->validate([
'trabalhoId' => ['required', 'integer']
]);
$trabalho = Trabalho::find($request->trabalhoId);
$revisores = Atribuicao::where('trabalhoId', $request->trabalhoId)->get();
$revisoresAux = [];
foreach ($revisores as $key) {
if ($key->revisor->user->name != null) {
array_push($revisoresAux, [
'id' => $key->revisor->id,
'nomeOuEmail' => $key->revisor->user->name
]);
} else {
array_push($revisoresAux, [
'id' => $key->revisor->id,
'nomeOuEmail' => $key->revisor->user->email
]);
}
}
$revisoresDisponeis = Revisor::where('eventoId', $trabalho->eventoId)->where('areaId', $trabalho->areaId)->get();
$revisoresAux1 = [];
foreach ($revisoresDisponeis as $key) {
//verificar se ja é um revisor deste trabalhos
$revisorNaoExiste = true;
foreach ($revisoresAux as $key1) {
if ($key->id == $key1['id']) {
$revisorNaoExiste = false;
}
}
//
if ($revisorNaoExiste) {
if ($key->user->name != null) {
array_push($revisoresAux1, [
'id' => $key->id,
'nomeOuEmail' => $key->user->name
]);
} else {
array_push($revisoresAux1, [
'id' => $key->id,
'nomeOuEmail' => $key->user->email
]);
}
}
}
return response()->json([
'titulo' => $trabalho->titulo,
'resumo' => $trabalho->resumo,
'revisores' => $revisoresAux,
'revisoresDisponiveis' => $revisoresAux1
], 200);
}
public function atribuirAvaliadorTrabalho(Request $request)
{
$request->trabalho_id;
$trabalho = Trabalho::find($request->trabalho_id);
$avaliadores = Avaliador::all();
return view('coordenadorComissao.gerenciarEdital.atribuirAvaliadorTrabalho', ['avaliadores' => $avaliadores, 'trabalho' => $trabalho, 'evento' => $trabalho->evento]);
}
public function atribuir(Request $request)
{
$trabalho = Trabalho::find($request->trabalho_id);
$todosAvaliadores = Avaliador::all();
$avaliadores = Avaliador::whereIn('id', $request->avaliadores)->with('user')->get();
$trabalho->avaliadors()->sync($request->avaliadores);
foreach ($avaliadores as $key => $avaliador) {
$user = $avaliador->user;
$subject = "Trabalho atribuido";
Mail::to($user->email)
->send(new EventoCriado($user, $subject));
}
return view('coordenadorComissao.detalhesEdital', ['evento' => $trabalho->evento]);
}
public function projetosDoEdital($id)
{
$edital = Evento::find($id);
$projetos = Trabalho::where('evento_id', '=', $id)->get();
$hoje = Carbon::today('America/Recife');
$hoje = $hoje->toDateString();
return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje' => $hoje]);
}
public function baixarAnexoProjeto($id)
{
$projeto = Trabalho::find($id);
//dd($projeto);
if (Storage::disk()->exists($projeto->anexoProjeto)) {
ob_end_clean();
return Storage::download($projeto->anexoProjeto);
}
return abort(404);
}
public function baixarAnexoGrupoPesquisa($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoGrupoPesquisa)) {
ob_end_clean();
return Storage::download($projeto->anexoGrupoPesquisa);
}
return abort(404);
}
public function baixarAnexoConsu($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoDecisaoCONSU)) {
ob_end_clean();
return Storage::download($projeto->anexoDecisaoCONSU);
}
return abort(404);
}
public function baixarAnexoComite($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoAutorizacaoComiteEtica)) {
ob_end_clean();
return Storage::download($projeto->anexoAutorizacaoComiteEtica);
}
return abort(404);
}
public function baixarAnexoLattes($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoLattesCoordenador)) {
ob_end_clean();
return Storage::download($projeto->anexoLattesCoordenador);
}
return abort(404);
}
public function baixarAnexoPlanilha($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexoPlanilhaPontuacao)) {
ob_end_clean();
$file = $projeto->anexoPlanilhaPontuacao;
$ext = explode(".", $file);
switch ($ext[1]) {
case 'xlsx':
$hearder = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
break;
case 'xls':
$hearder = 'application/vnd.ms-excel';
break;
case 'ods':
$hearder = 'application/vnd.oasis.opendocument.spreadsheet';
break;
default:
$hearder = 'application/vnd.ms-excel';
break;
}
$headers = array(
"Content-type: {$hearder}",
);
return Storage::download($projeto->anexoPlanilhaPontuacao, "Planilha.{$ext[1]}", $headers);
}
return abort(404);
}
public function baixarAnexoJustificativa($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->justificativaAutorizacaoEtica)) {
ob_end_clean();
return Storage::download($projeto->justificativaAutorizacaoEtica);
}
return abort(404);
}
public function baixarAnexoDocExtra($id)
{
$projeto = Trabalho::find($id);
if (Storage::disk()->exists($projeto->anexo_docExtra)) {
ob_end_clean();
return Storage::download($projeto->anexo_docExtra);
}
return abort(404);
}
public function baixarAnexoTemp($eventoId, $nomeAnexo)
{
$proponente = Proponente::where('user_id', Auth::user()->id)->first();
$trabalho = Trabalho::where('proponente_id', $proponente->id)->where('evento_id', $eventoId)->where('status', 'Rascunho')
->orderByDesc('updated_at')->first();
if (Storage::disk()->exists($trabalho->$nomeAnexo)) {
ob_end_clean();
return Storage::download($trabalho->$nomeAnexo);
}
return abort(404);
}
public function baixarEventoTemp($nomeAnexo)
{
$eventoTemp = Evento::where('criador_id', Auth::user()->id)->where('anexosStatus', 'temporario')
->orderByDesc('updated_at')->first();
if (Storage::disk()->exists($eventoTemp->$nomeAnexo)) {
ob_end_clean();
return Storage::download($eventoTemp->$nomeAnexo);
}
return abort(404);
}
//xxfa
public function update(UpdateTrabalho $request, $id)
{
try {
if (!$request->has('rascunho')) {
$request->merge([
'status' => 'submetido'
]);
} else {
$request->merge([
'status' => 'rascunho'
]);
}
$evento = Evento::find($request->editalId);
$request->merge([
'coordenador_id' => $evento->coordenadorComissao->id
]);
$trabalho = Trabalho::find($id);
$trabalho->ods()->sync($request->ods);
DB::beginTransaction();
if (!$trabalho) {
return back()->withErrors(['Proposta não encontrada']);
}
if($evento->tipo=="PIBEX"){
$trabalho->update($request->except([
'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra'
]));
}else{
$trabalho->update($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra'
]));
}
$pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id;
$trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento);
$trabalho->save();
if($request->integrantesExistentes == null){
$request->integrantesExistentes = [];
}
$usuariosRemovidos = TrabalhoUser::where('trabalho_id', $trabalho->id)->whereNotIn('user_id', $request->integrantesExistentes)->get();
if($usuariosRemovidos->first() != null) {
foreach($usuariosRemovidos as $usuarioRemovido){
$usuarioRemovido->delete();
}
}
if($evento->natureza_id == 3 && $request->integrantes != null){
foreach($request->integrantes as $integrante){
$integrante = explode(',', $integrante);
$trabalho_user = new TrabalhoUser();
$trabalho_user->user_id = $integrante[0];
$trabalho_user->funcao_participante_id = $integrante[1];
$trabalho_user->trabalho_id = $trabalho->id;
$trabalho_user->save();
}
}
if ($request->marcado == null) {
$idExcluido = $trabalho->participantes->pluck('id');
} else {
$idExcluido = [];
}
foreach ($request->participante_id as $key => $value) {
if ($request->marcado != null && array_search($key, $request->marcado) === false) {
if ($value !== null)
array_push($idExcluido, $value);
}
}
foreach ($idExcluido as $key => $value) {
$trabalho->participantes()->find($value)->delete();
}
$trabalho->refresh();
if ($request->has('marcado')) {
foreach ($request->marcado as $key => $part) {
$part = intval($part);
$passwordTemporario = Str::random(8);
$data['name'] = $request->name[$part];
$data['email'] = $request->email[$part];
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento[$part];
$data['cpf'] = $request->cpf[$part];
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg[$part];
$data['celular'] = $request->celular[$part];
$data['cep'] = $request->cep[$part];
$data['uf'] = $request->uf[$part];
$data['cidade'] = $request->cidade[$part];
$data['rua'] = $request->rua[$part];
$data['numero'] = $request->numero[$part];
$data['bairro'] = $request->bairro[$part];
$data['complemento'] = $request->complemento[$part];
if ($request->instituicao[$part] != "Outra") {
$data['instituicao'] = $request->instituicao[$part];
} else {
$data['instituicao'] = $request->outrainstituicao[$part];
}
$data['total_periodos'] = $request->total_periodos[$part];
if ($request->curso[$part] != "Outro") {
$data['curso'] = $request->curso[$part];
} else {
$data['curso'] = $request->outrocurso[$part];
}
$data['turno'] = $request->turno[$part];
$data['periodo_atual'] = $request->periodo_atual[$part];
$data['ordem_prioridade'] = $request->ordem_prioridade[$part];
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso[$part];
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part];
if($request->participante_id[$part] != null){
$participante = Participante::find($request->participante_id[$part]);
$user = User::where('email', $participante->user->email)->first();
}else{
$user = User::where('email', $data['email'])->first();
}
if ($user == null) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
$participante = Participante::create($data);
$participante->data_entrada = $participante->created_at;
$user->participantes()->save($participante);
$trabalho->participantes()->save($participante);
$participante->trabalho_id = $trabalho->id;
$participante->save();
} else {
// $user = $participante->user;
$user->update($data);
if( $user->endereco == null){
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}else{
$endereco = $user->endereco;
$endereco->update($data);
}
$participante = $user->participantes->where('trabalho_id', $trabalho->id)->where('id', $request->participante_id[$part])->first();
// dd($participante);
if ($participante == null) {
// dd('part null');
$participante = Participante::create($data);
$user->participantes()->save($participante);
$trabalho->participantes()->save($participante);
} else {
// dd('part update');
$participante->update($data);
}
}
if ($request->has('anexoPlanoTrabalho') && array_key_exists($part, $request->anexoPlanoTrabalho) && $request->nomePlanoTrabalho[$part] != null) {
if (Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->count()) {
$arquivo = Arquivo::where('participanteId', $participante->id)->where('trabalhoId', $trabalho->id)->first();
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$titulo = $data['nomePlanoTrabalho'];
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo->update([
'titulo' => $titulo,
'nome' => $path . $nome,
'data' => now(),
]);
} else {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
}
DB::commit();
if(Auth::user()->tipo == 'administrador'){
return redirect(route('admin.analisarProposta',['id'=>$trabalho->id]));
}
if (!$request->has('rascunho')) {
Notification::send($trabalho->proponente->user, new SubmissaoNotification($trabalho));
}
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta atualizada!']);
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]);
}
}
public function buscarUsuario(Request $request) {
$usuario = User::where('cpf', $request->cpf_consulta)->first();
$funcao = FuncaoParticipantes::where('id', $request->funcao)->first();
if($usuario){
return json_encode([$usuario, $funcao]);
}
return json_encode('inexistente');
}
public function salvar(StoreTrabalho $request)
{
try {
if (!$request->has('rascunho')) {
$request->merge([
'status' => 'submetido'
]);
}
$evento = Evento::find($request->editalId);
$request->merge([
'coordenador_id' => $evento->coordenadorComissao->id
]);
DB::beginTransaction();
if($evento->tipo=="PIBEX"){
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU','modalidade','anexo_docExtra'
]));
}else{
$trabalho = Auth::user()->proponentes->trabalhos()
->create($request->except([
'anexoProjeto', 'anexoDecisaoCONSU', 'anexoPlanilhaPontuacao',
'anexoLattesCoordenador', 'anexoGrupoPesquisa', 'anexoAutorizacaoComiteEtica',
'justificativaAutorizacaoEtica','modalidade','anexo_docExtra'
]));
}
if ($request->has('marcado')) {
foreach ($request->marcado as $key => $part) {
$part = intval($part);
$passwordTemporario = Str::random(8);
$data['name'] = $request->name[$part];
$data['email'] = $request->email[$part];
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento[$part];
$data['cpf'] = $request->cpf[$part];
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg[$part];
$data['celular'] = $request->celular[$part];
$data['cep'] = $request->cep[$part];
$data['uf'] = $request->uf[$part];
$data['cidade'] = $request->cidade[$part];
$data['rua'] = $request->rua[$part];
$data['numero'] = $request->numero[$part];
$data['bairro'] = $request->bairro[$part];
$data['complemento'] = $request->complemento[$part];
if ($request->instituicao[$part] != "Outra") {
$data['instituicao'] = $request->instituicao[$part];
} else {
$data['instituicao'] = $request->outrainstituicao[$part];
}
$data['total_periodos'] = $request->total_periodos[$part];
if ($request->curso[$part] != "Outro") {
$data['curso'] = $request->curso[$part];
} else {
$data['curso'] = $request->outrocurso[$part];
}
$data['turno'] = $request->turno[$part];
$data['periodo_atual'] = $request->periodo_atual[$part];
$data['ordem_prioridade'] = $request->ordem_prioridade[$part];
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso[$part];
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho[$part];
$user = User::where('email', $data['email'])->first();
if ($user == null) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}
// $participante = $user->participantes->where('trabalho_id', $trabalho->id)->first();
// if ($participante == null){
// $participante = Participante::create($data);
// }
$participante = Participante::create($data);
$participante->data_entrada = $participante->created_at;
$user->participantes()->save($participante);
$participante->trabalho_id = $trabalho->id;
$participante->save();
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho[$part];
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
$evento->trabalhos()->save($trabalho);
$pasta = 'trabalhos/' . $evento->id . '/' . $trabalho->id;
$trabalho = $this->armazenarAnexosFinais($request, $pasta, $trabalho, $evento);
$trabalho->modalidade = $request->modalidade;
$trabalho->save();
if($evento->natureza_id == 3){
foreach($request->integrantes as $integrante){
$integrante = explode(',', $integrante);
$trabalho_user = new TrabalhoUser();
$trabalho_user->user_id = $integrante[0];
$trabalho_user->funcao_participante_id = $integrante[1];
$trabalho_user->trabalho_id = $trabalho->id;
$trabalho_user->save();
}
}
$trabalho->ods()->sync($request->ods);
DB::commit();
if (!$request->has('rascunho')) {
//Notificações
//Coordenador
$userTemp = User::find($evento->coordenadorComissao->user_id);
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 1,
]);
$notificacao->save();
// SubmissaoRecebidaNotification.php
Notification::send($userTemp, new SubmissaoRecebidaNotification($trabalho->id,$trabalho->titulo,$userTemp));
//Proponente
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => Auth::user()->id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 1,
]);
$notificacao->save();
// submissao e notificação.php $trabalho->id,$trabalho->titulo
Notification::send(Auth::user(), new SubmissaoNotification($trabalho));
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Proposta submetida!']);
} else {
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Rascunho salvo!']);
}
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('proponente.projetos'))->with(['mensagem' => $th->getMessage()]);
}
}
public function atribuirDados(Request $request, $edital, Trabalho $projeto = null)
{
if ($projeto == null) {
$projeto = new Trabalho();
}
$proponente = User::find(auth()->user()->id)->proponentes;
$hoje = now();
$projeto->titulo = $request->nomeProjeto;
$projeto->coordenador_id = $edital->coordenadorComissao->id;
$projeto->grande_area_id = $request->grandeArea;
$projeto->area_id = $request->area;
$projeto->sub_area_id = $request->subArea;
$projeto->pontuacaoPlanilha = $request->pontuacaoPlanilha;
$projeto->linkGrupoPesquisa = $request->linkGrupo;
$projeto->linkLattesEstudante = $request->linkLattesEstudante;
$projeto->data = $hoje;
$projeto->evento_id = $request->editalId;
$projeto->status = 'submetido';
$projeto->proponente_id = $proponente->id;
$projeto->conflitosInteresse = $request->conflitosInteresse;
// Salvando anexos no storage
$projeto->save();
$pasta = 'trabalhos/' . $edital->id . '/' . $projeto->id;
$projeto = $this->armazenarAnexosFinais($request, $pasta, $projeto, $edital);
return $projeto;
}
public function salvarParticipantes(Request $request, $edital, $projeto, $edicao = false)
{
if ($edicao) {
$participantes = $projeto->participantes;
$participantesPermanecem = collect();
// dd($request->all());
foreach ($request->participante_id as $key => $id) {
// Novo participante
if ($id == 0 || $id == null) {
$userParticipante = User::where('email', $request->emailParticipante[$key])->first();
$participante = new Participante();
if ($userParticipante == null) {
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $request->emailParticipante[$key];
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$subject = "Participante de Projeto";
Mail::to($request->emailParticipante[$key])
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
if ($request->nomePlanoTrabalho[$key] != null) {
$usuario = User::where('email', $request->emailParticipante[$key])->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
// dd($arquivo);
}
// Editado
} elseif ($id > 0) {
// Removo dos cantidatos excluidos
$participante = Participante::find($id);
$participantesPermanecem->push($participante);
$usuario = $participante->user;
$endereco = $usuario->endereco;
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$usuario->update();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->update();
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->update();
if ($request->anexoPlanoTrabalho != null && array_key_exists($key, $request->anexoPlanoTrabalho) && $request->anexoPlanoTrabalho[$key] != null) {
$planoAtual = $participante->planoTrabalho;
if (Storage::disk()->exists($planoAtual->nome)) {
Storage::delete($planoAtual->nome);
}
$planoAtual->delete();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
}
}
// Excluidos
$participantesExcluidos = $participantes->diff($participantesPermanecem);
foreach ($participantesExcluidos as $participante) {
$plano = $participante->planoTrabalho;
if ($plano)
$plano->delete();
$participante->delete();
}
return true;
}
if ($request->emailParticipante != null) {
foreach ($request->emailParticipante as $key => $email) {
$userParticipante = User::where('email', $email)->first();
$participante = new Participante();
if ($userParticipante == null) {
$passwordTemporario = Str::random(8);
$usuario = new User();
$usuario->email = $email;
$usuario->password = bcrypt($passwordTemporario);
$usuario->usuarioTemp = false;
$usuario->name = $request->nomeParticipante[$key];
$usuario->tipo = 'participante';
$usuario->instituicao = $request->universidade[$key];
$usuario->cpf = $request->cpf[$key];
$usuario->celular = $request->celular[$key];
$endereco = new Endereco();
$endereco->rua = $request->rua[$key];
$endereco->numero = $request->numero[$key];
$endereco->bairro = $request->bairro[$key];
$endereco->cidade = $request->cidade[$key];
$endereco->uf = $request->uf[$key];
$endereco->cep = $request->cep[$key];
$endereco->complemento = $request->complemento[$key];
$endereco->save();
$usuario->enderecoId = $endereco->id;
$usuario->save();
$participante->user_id = $usuario->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
$usuario = User::where('email', $email)->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$subject = "Participante de Projeto";
Mail::to($email)->send(new EmailParaUsuarioNaoCadastrado(Auth()->user()->name, $projeto->titulo, 'Participante', $edital->nome, $passwordTemporario, $subject, $edital->tipo,$edital->natureza_id));
} else {
$participante->user_id = $userParticipante->id;
$participante->trabalho_id = $projeto->id;
$participante->funcao_participante_id = $request->funcaoParticipante[$key];
$participante->confirmacao_convite = true;
$participante->rg = $request->rg[$key];
$participante->data_de_nascimento = $request->data_de_nascimento[$key];
$participante->curso = $request->curso[$key];
$participante->turno = $request->turno[$key];
$participante->ordem_prioridade = $request->ordem_prioridade[$key];
$participante->periodo_atual = $request->periodo_atual[$key];
$participante->total_periodos = $request->total_periodos[$key];
if($edital->tipo != "PIBEX"){
$participante->media_do_curso = $request->media_geral_curso[$key];
}
$participante->save();
if ($request->anexoPlanoTrabalho[$key]) {
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
$nome = $request->nomePlanoTrabalho[$key] . ".pdf";
$file = $request->anexoPlanoTrabalho[$key];
Storage::putFileAs($path, $file, $nome);
$agora = now();
$arquivo = new Arquivo();
$arquivo->titulo = $request->nomePlanoTrabalho[$key];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $projeto->id;
$arquivo->data = $agora;
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
}
$subject = "Participante de Projeto";
$time = Carbon::today('America/Recife');
$time = $time->isoFormat('às H:mm, dddd, D/M/YYYY');
Mail::to($email)
->send(new SubmissaoTrabalho($userParticipante, $subject, $edital, $projeto));
}
// if($request->nomePlanoTrabalho[$key] != null){
// $usuario = User::where('email', $email)->first();
// $participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
// $path = 'trabalhos/' . $edital->id . '/' . $projeto->id .'/';
// $nome = $request->nomePlanoTrabalho[$key] .".pdf";
// $file = $request->anexoPlanoTrabalho[$key];
// Storage::putFileAs($path, $file, $nome);
// $agora = now();
// $arquivo = new Arquivo();
// $arquivo->titulo = $request->nomePlanoTrabalho[$key];
// $arquivo->nome = $path . $nome;
// $arquivo->trabalhoId = $projeto->id;
// $arquivo->data = $agora;
// $arquivo->participanteId = $participante->id;
// $arquivo->versaoFinal = true;
// $arquivo->save();
// }
}
}
return true;
}
public function atualizar(Request $request, $id)
{
$edital = Evento::find($request->editalId);
$hoje = now();
$projeto = Trabalho::find($id);
if (!($edital->inicioSubmissao < $hoje && $edital->fimSubmissao >= $hoje)) {
return redirect()->route('inicial')->with(['error' => 0, 'mensagem' => 'As submissões para o edital ' . $edital->titulo . ' foram encerradas.']);
}
$projeto = $this->atribuirDados($request, $edital, $projeto);
$projeto->update();
// dd($request->all());
// Salvando participantes
$this->salvarParticipantes($request, $edital, $projeto, true);
return redirect(route('proponente.projetos'))->with(['mensagem' => 'Projeto atualizado com sucesso!']);
}
public function telaTrocaPart(Request $request)
{
$projeto = Trabalho::find($request->projeto_id);
$edital = Evento::find($projeto->evento_id);
if(Auth::user()->id != $projeto->proponente->user->id){
return redirect()->back();
}
$participantes = $projeto->participantes;
$substituicoesProjeto = Substituicao::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get();
$desligamentosProjeto = Desligamento::where('trabalho_id', $projeto->id)->orderBy('created_at', 'DESC')->get();
return view('administrador.substituirParticipante')->with(['projeto' => $projeto,
'edital' => $edital,
'participantes' => $participantes,
'substituicoesProjeto' => $substituicoesProjeto,
'estados' => $this->estados,
'enum_turno' => Participante::ENUM_TURNO,
'desligamentosProjeto' => $desligamentosProjeto,
]);
}
public function trocaParticipante(Request $request)
{
try {
DB::beginTransaction();
$trabalho = Trabalho::find($request->projetoId);
$evento = Evento::find($request->editalId);
$participanteSubstituido = Participante::where('id', $request->participanteId)->first();
$planoAntigo = Arquivo::where('id', $participanteSubstituido->planoTrabalho->id)->first();
$passwordTemporario = Str::random(8);
$data['name'] = $request->name;
$data['email'] = $request->email;
$data['password'] = bcrypt($passwordTemporario);
$data['data_de_nascimento'] = $request->data_de_nascimento;
$data['data_entrada'] = $request->data_entrada;
$data['cpf'] = $request->cpf;
$data['tipo'] = 'participante';
$data['funcao_participante_id'] = 4;
$data['rg'] = $request->rg;
$data['celular'] = $request->celular;
$data['linkLattes'] = $request->linkLattes;
$data['cep'] = $request->cep;
$data['uf'] = $request->uf;
$data['cidade'] = $request->cidade;
$data['rua'] = $request->rua;
$data['numero'] = $request->numero;
$data['bairro'] = $request->bairro;
$data['complemento'] = $request->complemento;
if ($request->instituicao != "Outra") {
$data['instituicao'] = $request->instituicao;
} else {
$data['instituicao'] = $request->outrainstituicao;
}
$data['total_periodos'] = $request->total_periodos;
if ($request->curso != "Outro") {
$data['curso'] = $request->curso;
} else {
$data['curso'] = $request->outrocurso;
}
$data['turno'] = $request->turno;
$data['periodo_atual'] = $request->periodo_atual;
$data['ordem_prioridade'] = $request->ordem_prioridade;
if($evento->tipo!="PIBEX") {
$data['media_do_curso'] = $request->media_do_curso;
}
$data['nomePlanoTrabalho'] = $request->nomePlanoTrabalho;
if ($request->substituirApenasPlanoCheck == 'check') {
$substituicao = new Substituicao();
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participanteSubstituido->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'TrocarPlano';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participanteSubstituido->id;
$substituicao->planoSubstituto_id = $arquivo->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->save();
}
} else {
//$participanteSubstituido->delete();
$substituicao = new Substituicao();
$substituicao->observacao = $request->textObservacao;
if ($participanteSubstituido->data_entrada > $request->data_entrada) {
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Escolha uma data de entrada posterior a entrada do discente substituído"]);
}
$participanteSubstituido->data_saida = $request->data_entrada;
\App\Validator\CpfValidator::validate($request->all());
$user = User::where('email', $data['email'])->first();
if (!$user) {
$data['usuarioTemp'] = true;
$user = User::create($data);
$endereco = Endereco::create($data);
$endereco->user()->save($user);
}
$participante = $user->participantes->where('trabalho_id', $trabalho->id)->first();
if (!$participante) {
$participante = Participante::create($data);
$participanteSubstituido->save();
}
$pasta = 'participantes/' . $participante->id;
$participante->anexoTermoCompromisso = Storage::putFileAs($pasta, $request->anexoTermoCompromisso, "Termo_de_Compromisso.pdf");
$participante->anexoComprovanteMatricula = Storage::putFileAs($pasta, $request->anexoComprovanteMatricula, "Comprovante_de_Matricula.pdf");
$participante->anexoLattes = Storage::putFileAs($pasta, $request->anexoCurriculoLattes, "Curriculo_Lattes.pdf");
if ($request->anexoAutorizacaoPais != null) {
$participante->anexoAutorizacaoPais = Storage::putFileAs($pasta, $request->anexoAutorizacaoPais, "Autorização_dos_Pais.pdf");
}
if ($request->anexoComprovanteBancario != null) {
$participante->anexoComprovanteBancario = Storage::putFileAs($pasta, $request->anexoComprovanteBancario, "Comprovante_Bancario." . $request->file('anexoComprovanteBancario')->getClientOriginalExtension());
}
$user->participantes()->save($participante);
//$trabalho->participantes()->save($participante);
if ($request->manterPlanoCheck == 'check') {
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'ManterPlano';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participante->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->planoSubstituto_id = $planoAntigo->id;
$planoAntigo->participanteId = $participante->id;
$substituicao->save();
$planoAntigo->save();
} else {
if ($request->has('anexoPlanoTrabalho')) {
$path = 'trabalhos/' . $evento->id . '/' . $trabalho->id . '/';
$nome = $data['nomePlanoTrabalho'] . ".pdf";
$file = $request->anexoPlanoTrabalho;
Storage::putFileAs($path, $file, $nome);
$arquivo = new Arquivo();
$arquivo->titulo = $data['nomePlanoTrabalho'];
$arquivo->nome = $path . $nome;
$arquivo->trabalhoId = $trabalho->id;
$arquivo->data = now();
$arquivo->participanteId = $participante->id;
$arquivo->versaoFinal = true;
$arquivo->save();
$substituicao->status = 'Em Aguardo';
$substituicao->tipo = 'Completa';
$substituicao->observacao = $request->textObservacao;
$substituicao->participanteSubstituido_id = $participanteSubstituido->id;
$substituicao->participanteSubstituto_id = $participante->id;
$substituicao->trabalho_id = $trabalho->id;
$substituicao->planoSubstituto_id = $arquivo->id;
$substituicao->save();
}
}
}
$evento->trabalhos()->save($trabalho);
$trabalho->save();
$notificacao = App\Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 2,
]);
$notificacao->save();
DB::commit();
Mail::to($evento->coordenadorComissao->user->email)->send(new SolicitacaoSubstituicao($evento, $trabalho,'',$substituicao->tipo,$substituicao->status));
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['sucesso' => 'Pedido de substituição enviado com sucesso!']);
} catch (\App\Validator\ValidationException $th) {
DB::rollback();
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => "Cpf inválido"]);
} catch (\Throwable $th) {
DB::rollback();
return redirect(route('trabalho.trocaParticipante', ['evento_id' => $evento->id, 'projeto_id' => $trabalho->id]))->with(['erro' => $th->getMessage()]);
}
}
public function telaShowSubst(Request $request)
{
$trabalho = Trabalho::find($request->trabalho_id);
$substituicoesProjeto = Substituicao::where('trabalho_id', $trabalho->id)->orderBy('created_at', 'DESC')->get();
$substituicoesPendentes = Substituicao::where('trabalho_id', $trabalho->id)->where('status', 'Em Aguardo')->orderBy('created_at', 'DESC')->get();
return view('administrador.analiseSubstituicoes')->with(['substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,
'trabalho' => $trabalho]);
}
public function aprovarSubstituicao(Request $request)
{
$substituicao = Substituicao::find($request->substituicaoID);
$trabalho = Trabalho::find($substituicao->trabalho->id);
if ($request->aprovar == 'true') {
try {
if ($substituicao->tipo == 'TrocarPlano') {
if(!empty($substituicao->participanteSubstituido)){
$substituicao->participanteSubstituido->planoTrabalho()->where('id', '!=', $substituicao->planoSubstituto->id)->delete();
}
$substituicao->status = 'Finalizada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} else {
if(!empty($substituicao->participanteSubstituido)){
$substituicao->participanteSubstituido->delete();
}
$trabalho->participantes()->save($substituicao->participanteSubstituto);
$substituicao->status = 'Finalizada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
}
Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status));
return redirect()->back()->with(['sucesso' => 'Substituição concluída!']);
} catch (\Throwable $th) {
return redirect()->back()->with(['erro' => $th->getMessage()]);
}
} else {
try {
if ($substituicao->tipo == 'TrocarPlano') {
$substituicao->participanteSubstituido->planoTrabalho()->where('id', '=', $substituicao->planoSubstituto->id)->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} elseif ($substituicao->tipo == 'ManterPlano') {
$substituicao->planoSubstituto->participanteId = $substituicao->participanteSubstituido->id;
$substituicao->planoSubstituto->save();
$substituicao->participanteSubstituto->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
} else {
$substituicao->participanteSubstituto->delete();
$substituicao->status = 'Negada';
$substituicao->justificativa = $request->textJustificativa;
$substituicao->causa = $request->selectJustificativa;
$substituicao->concluida_em = now();
$substituicao->save();
}
$trabalho = Trabalho::find($substituicao->trabalho->id);
Mail::to($trabalho->proponente->user->email)->send(new SolicitacaoSubstituicao($trabalho->evento, $trabalho, 'resultado',$substituicao->tipo,$substituicao->status));
return redirect()->back()->with(['sucesso' => 'Substituição cancelada com sucesso!']);
} catch (\Throwable $th) {
return redirect()->back()->with(['erro' => $th->getMessage()]);
}
}
}
public function aprovarProposta(Request $request, $id)
{
$trabalho = Trabalho::find($id);
$trabalho->status = $request->statusProp;
$trabalho->comentario = $request->comentario;
$trabalho->save();
return redirect()->back()->with(['sucesso' => 'Proposta avaliada com sucesso']);
}
}
\ No newline at end of file
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Trabalho extends Model
{
use SoftDeletes;
// 'rascunho','submetido', 'avaliado', 'corrigido','aprovado','reprovado', 'arquivado'
protected $fillable = [
'titulo',
'data',
'aprovado',
'status',
'decisaoCONSU',
'pontuacaoPlanilha',
'linkGrupoPesquisa',
'linkLattesEstudante',
'comentario',
'modalidade',
'conflitosInteresse',
'anexoDecisaoCONSU',
'anexoAutorizacaoComiteEtica',
'JustificativaAutorizacaoEtica',
'anexoLattesCoordenador',
'anexoGrupoPesquisa',
'anexoPlanilhaPontuacao',
'anexoProjeto',
'grande_area_id',
'area_id',
'sub_area_id',
'evento_id',
'proponente_id',
'coordenador_id',
'proponente_id',
'pivot',
'area_tematica_id',
];
public function recurso(){
return $this->hasMany('App\Recurso', 'trabalhoId');
}
public function arquivo(){
return $this->hasMany('App\Arquivo', 'trabalhoId');
}
public function modalidade(){
return $this->belongsTo('App\Modalidade', 'modalidadeId');
}
public function area(){
return $this->belongsTo('App\Area');
}
public function grandeArea(){
return $this->belongsTo('App\GrandeArea');
}
public function subArea(){
return $this->belongsTo('App\SubArea');
}
public function areaTematica(){
return $this->belongsTo('App\AreaTematica');
}
public function autor(){
return $this->belongsTo('App\User', 'autorId');
}
public function coautor(){
return $this->hasMany('App\Coautor', 'trabalhoId');
}
public function parecer(){
return $this->hasMany('App\Parecer', 'trabalhoId');
}
public function atribuicao(){
return $this->hasMany('App\Atribuicao', 'trabalhoId');
}
public function evento(){
return $this->belongsTo('App\Evento');
}
public function planoTrabalho(){
return $this->hasMany('App\PlanoTrabalho');
}
public function participantes(){
// return $this->belongsToMany('App\Trabalho', 'trabalho_participante');
return $this->hasMany('App\Participante', 'trabalho_id');
}
public function proponente(){
return $this->belongsTo('App\Proponente');
}
public function coordenador(){
return $this->belongsTo('App\CoordenadorComissao');
}
public function avaliadors(){
return $this->belongsToMany('App\Avaliador')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at','pontuacao','acesso');
}
public function substituicaos(){
return $this->hasMany('App\Substituicao');
}
public function parecer_internos(){
return $this->hasMany(ParecerInterno::class, 'trab_id', 'id');
}
public function notificacoes(){
return $this->hasMany(Notificacao::class, 'trabalho_id', 'id');
}
public function desligamentos(){
return $this->hasMany(Desligamento::class, 'trabalho_id', 'id')->orderBy('created_at', 'DESC');
}
public function solicitacoesCertificados()
{
return $this->hasMany(Certificado::class, 'trabalho_id');
}
public function ods(){
return $this->belongsToMany('App\ObjetivoDeDesenvolvimentoSustentavel', 'objetivo_de_desenvolvimento_sustentavel_trabalhos', 'trabalho_id');
}
public function integrantes() {
return $this->belongsToMany('App\User', 'trabalho_users', 'trabalho_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Trabalho extends Model
{
use SoftDeletes;
// 'rascunho','submetido', 'avaliado', 'corrigido','aprovado','reprovado', 'arquivado'
protected $fillable = [
'titulo',
'data',
'aprovado',
'status',
'decisaoCONSU',
'pontuacaoPlanilha',
'linkGrupoPesquisa',
'linkLattesEstudante',
'comentario',
'modalidade',
'conflitosInteresse',
'anexoDecisaoCONSU',
'anexoAutorizacaoComiteEtica',
'JustificativaAutorizacaoEtica',
'anexoLattesCoordenador',
'anexoGrupoPesquisa',
'anexoPlanilhaPontuacao',
'anexoProjeto',
'grande_area_id',
'area_id',
'sub_area_id',
'evento_id',
'proponente_id',
'coordenador_id',
'proponente_id',
'pivot',
'area_tematica_id',
];
public function recurso(){
return $this->hasMany('App\Recurso', 'trabalhoId');
}
public function arquivo(){
return $this->hasMany('App\Arquivo', 'trabalhoId');
}
public function modalidade(){
return $this->belongsTo('App\Modalidade', 'modalidadeId');
}
public function area(){
return $this->belongsTo('App\Area');
}
public function grandeArea(){
return $this->belongsTo('App\GrandeArea');
}
public function subArea(){
return $this->belongsTo('App\SubArea');
}
public function areaTematica(){
return $this->belongsTo('App\AreaTematica');
}
public function autor(){
return $this->belongsTo('App\User', 'autorId');
}
public function coautor(){
return $this->hasMany('App\Coautor', 'trabalhoId');
}
public function parecer(){
return $this->hasMany('App\Parecer', 'trabalhoId');
}
public function atribuicao(){
return $this->hasMany('App\Atribuicao', 'trabalhoId');
}
public function evento(){
return $this->belongsTo('App\Evento');
}
public function planoTrabalho(){
return $this->hasMany('App\PlanoTrabalho');
}
public function participantes(){
// return $this->belongsToMany('App\Trabalho', 'trabalho_participante');
return $this->hasMany('App\Participante', 'trabalho_id');
}
public function proponente(){
return $this->belongsTo('App\Proponente');
}
public function coordenador(){
return $this->belongsTo('App\CoordenadorComissao');
}
public function avaliadors(){
return $this->belongsToMany('App\Avaliador')->withPivot('status', 'AnexoParecer', 'parecer', 'recomendacao', 'created_at','pontuacao','acesso');
}
public function substituicaos(){
return $this->hasMany('App\Substituicao');
}
public function parecer_internos(){
return $this->hasMany(ParecerInterno::class, 'trab_id', 'id');
}
public function notificacoes(){
return $this->hasMany(Notificacao::class, 'trabalho_id', 'id');
}
public function desligamentos(){
return $this->hasMany(Desligamento::class, 'trabalho_id', 'id')->orderBy('created_at', 'DESC');
}
public function solicitacoesCertificados()
{
return $this->hasMany(Certificado::class, 'trabalho_id');
}
public function ods(){
return $this->belongsToMany('App\ObjetivoDeDesenvolvimentoSustentavel', 'objetivo_de_desenvolvimento_sustentavel_trabalhos', 'trabalho_id');
}
public function integrantes() {
return $this->belongsToMany('App\User', 'trabalho_users', 'trabalho_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class TrabalhoUser extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
public function funcao(){
return $this->belongsTo('App\FuncaoParticipantes', 'funcao_participante_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class TrabalhoUser extends Model
{
public function user(){
return $this->belongsTo('App\User');
}
public function funcao(){
return $this->belongsTo('App\FuncaoParticipantes', 'funcao_participante_id');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTrabalhoUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('trabalho_users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->integer('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->integer('trabalho_id');
$table->foreign('trabalho_id')->references('id')->on('trabalhos');
$table->integer('funcao_participante_id');
$table->foreign('funcao_participante_id')->references('id')->on('funcao_participantes');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('trabalho_users');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTrabalhoUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('trabalho_users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->integer('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->integer('trabalho_id');
$table->foreign('trabalho_id')->references('id')->on('trabalhos');
$table->integer('funcao_participante_id');
$table->foreign('funcao_participante_id')->references('id')->on('funcao_participantes');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('trabalho_users');
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
@extends('layouts.app')
@section('content')
<div class="container" style="margin-top: 30px;">
<div class="container" >
<div class="row justify-content-center d-flex align-items-center" style="margin-bottom: 50px;">
<div class="col-md-1">
<a href="{{ route('admin.atribuir', ['evento_id' => $evento->id]) }}" class="btn btn-secondary">
Voltar
</a>
</div>
<div class="col-md-9" style="text-align: center;">
<h3 class="titulo-table">Avaliadores</h3>
</div>
<div class="col-md-2">
<!-- Button trigger modal -->
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#exampleModalCenter">
Enviar Convite
</button>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-sm-1">
<button class="btn" onclick="buscar(this.parentElement.parentElement.children[1].children[0])">
<img src="{{asset('img/icons/logo_lupa.png')}}" alt="">
</button>
</div>
<div class="col-sm-6">
<input type="text" class="form-control form-control-edit" placeholder="Digite o e-mail do avaliador" onkeyup="buscar(this)">
</div>
</div>
</div>
</div>
</div>
<hr>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Nome do Usuário</th>
<th scope="col">Email</th>
@if($evento->natureza_id == 3)
<th scope="col">Área Temática</th>
@else
<th scope="col">Área</th>
@endif
<th scope="col">Tipo</th>
<th scope="col" style="text-align:center">Ação</th>
</tr>
</thead>
<tbody id="avaliadores">
@foreach ($avaliadores as $avaliador)
<tr>
<td>{{ $avaliador->user->name }}</td>
<td>{{ $avaliador->user->email }}</td>
<td>
@if(is_null($avaliador->area))
@if($avaliador->areaTematicas()->get()->first() != null)
{{ $avaliador->areaTematicas()->get()->first()->nome }}
@else
Indefinida
@endif
@else
{{ $avaliador->area->nome }}
@endif
</td>
<td>
@if($avaliador->tipo == null)
Externo
@else
{{$avaliador->tipo}}
@endif
</td>
<td style="text-align:center">
<form action="{{ route('admin.adicionar') }}" method="POST">
@csrf
<!-- Possibilidade de exclusão -->
{{-- <input type="hidden" name="avaliador_id" value="{{ $avaliador->avaliador_id }}"> --}}
<input type="hidden" name="avaliador_id" value="{{ $avaliador->id }}" >
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<button type="submit" class="btn btn-primary" >Adicionar</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="container" style="margin-top: 50px;">
<div class="row justify-content-center" >
<h4 class="titulo-table">Avaliadores Selecionados para o Edital: <span style="color: black;">{{ $evento->nome }}</span> </h4>
</div>
</div>
<hr>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Nome do Usuário</th>
<th scope="col">Tipo</th>
<th scope="col">Email</th>
<th scope="col">Status</th>
<th scope="col">Projetos</th>
<th scope="col" style="text-align:center">Ação</th>
</tr>
</thead>
<tbody>
@foreach ($avalSelecionados as $avaliador)
<tr>
<td>{{ $avaliador->user->name }}</td>
<td>{{ $avaliador->tipo }}</td>
<td>{{ $avaliador->user->email }}</td>
@if($avaliador->eventos->where('id', $evento->id)->first()->pivot->convite == true)
<td style="color: rgb(3, 189, 3);">Aceito</td>
@elseif(is_null($avaliador->eventos->where('id', $evento->id)->first()->pivot->convite))
<td>A confirmar</td>
@else
<td style="color: red;">Recusado</td>
@endif
<!-- ANTOIM -->
@if($avaliador->trabalhos->where('evento_id', $evento->id)->count() == 0)
<td><button data-toggle="modal" class="btn btn-primary" style="color:white;
" data-target="#avaliadorModalCenter1{{$avaliador->id}}">Visualizar</button></td>
@else
<td><button data-toggle="modal" class="btn btn-primary" style="color:white;
" data-target="#avaliadorModalCenter{{$avaliador->id}}">Visualizar</button></td>
@endif
<!-- MODAL Projetos -->
<div class="modal fade" id="avaliadorModalCenter{{$avaliador->id}}" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true" style="overflow-y: hidden">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content modal-submeta modal-xl">
<div class="modal-header modal-header-submeta">
<div class="col-md-8" style="padding-left: 0px">
<h5 class="modal-title titulo-table" id="avaliacaoModalLongTitle">
Projetos do Avaliador</h5>
</div>
<div class="col-md-4" style="text-align: right">
<button type="button" class="close" aria-label="Close"
data-dismiss="modal" style="color: rgb(182, 182, 182);padding-right: 0px;">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div>
<div class="modal-body" style="margin-left: 20px; margin-right: 20px;">
@foreach($trabalhos as $trabalho)
@foreach($trabalho->avaliadors as $avaliador1)
@if($avaliador1->id == $avaliador->id)
{{-- {{ $avaliador->trabalhos->where('id', $trabalho->id)->first()->pivot }} --}}
<a href="{{route('admin.analisarProposta',['id'=>$trabalho->id])}}">Título: {{ $trabalho->titulo }}</a><br>
@endif
@endforeach
@endforeach
</div>
</div>
</div>
</div>
<div class="modal fade" id="avaliadorModalCenter1{{$avaliador->id}}" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true" style="overflow-y: hidden">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content modal-submeta modal-xl">
<div class="modal-header modal-header-submeta">
<div class="col-md-8" style="padding-left: 0px">
<h5 class="modal-title titulo-table" id="avaliacaoModalLongTitle">
Projetos do Avaliador</h5>
</div>
<div class="col-md-4" style="text-align: right">
<button type="button" class="close" aria-label="Close"
data-dismiss="modal" style="color: rgb(182, 182, 182);padding-right: 0px;">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div>
<div class="modal-body" style="margin-left: 20px; margin-right: 20px;">
Esse Avaliador não possui projetos. <a href="{{route('admin.analisar', ['evento_id' => $evento->id])}}">Clique aqui</a> e verifique os projetos disponíveis.
</div>
</div>
</div>
</div>
<td @if($avaliador->eventos->where('id', $evento->id)->first()->pivot->convite != null) style="text-align:center" @endif style="text-align:center; display:flex; justify-content: space-evenly">
<form action="{{ route('admin.remover') }}" method="POST">
@csrf
<input type="hidden" name="avaliador_id" value="{{ $avaliador->id }}" >
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<button type="button" class="btn btn-danger" @if($avaliador->trabalhos->where('evento_id', $evento->id)->count() != 0) disabled="disabled" @endif
data-toggle="modal" data-target="#modal{{ $avaliador->id }}"
>Remover</button>
<!-- Modal Remover -->
<div class="modal fade" id="modal{{ $avaliador->id }}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Remover Avaliador</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>Você tem certeza que deseja remover o avaliador: {{ $avaliador->user->name }}?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
<button type="submit" class="btn btn-danger">Remover</button>
</div>
</div>
</div>
</div>
</form>
<form action="{{ route('admin.reenviarConvite') }}" method="POST">
@csrf
<input type="hidden" name="avaliador_id" value="{{ $avaliador->id }}" >
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<button type="submit" class="btn btn-secondary" @if($avaliador->eventos->where('id', $evento->id)->first()->pivot->convite != null) disabled hidden @endif >Reenviar convite</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- Modal -->
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content modal-submeta">
<div class="modal-header modal-header-submeta">
<h5 class="modal-title titulo-table" id="exampleModalLongTitle" style="font-size: 20px;">Enviar Convite</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="color: rgb(182, 182, 182)">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="margin-left: 20px; margin-right: 20px;">
<form action="{{ route('admin.enviarConvite') }}" method="POST" class="labels-blue">
@csrf
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<div class="form-group">
<label for="exampleInputEmail1">Nome Completo <span style="color: red;">*</span></label>
<input type="text" class="form-control" name="nomeAvaliador" id="exampleInputNome1" required>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email <span style="color: red;">*</span></label>
<input type="email" class="form-control" name="emailAvaliador" id="exampleInputEmail1" required>
</div>
<!-- aki -->
@if($evento->natureza_id != 3)
<div class="form-group">
<label for="grandeArea" class="col-form-label">{{ __('Grande Área') }} <span style="color: red; font-weight:bold">*</span></label>
<select class="form-control" id="grandeArea" name="grande_area_id" onchange="areas()" required>
<option value="" disabled selected hidden>-- Grande Área --</option>
@foreach($grandeAreas as $grandeArea)
<option value="{{$grandeArea->id}}">{{$grandeArea->nome}}</option>
@endforeach
</select>
<label for="area" class="col-form-label">{{ __('Área') }} <span style="color: red; font-weight:bold">*</span></label>
<select class="form-control @error('area') is-invalid @enderror" id="area" name="area_id" required>
<option value="" disabled selected hidden>-- Área --</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlSelect1">Tipo</label>
<select class="form-control" name="tipo" id="exampleFormControlSelect1" disabled>
<option value="avaliador" >Avaliador</option>
</select>
</div>
@else
<div class="form-group">
<label for="grandeArea" class="col-form-label">{{ __('Áreas Temáticas') }} <span
style="color: red; font-weight:bold">*</span></label>
<select class="form-control" id="grandeAreaConvite" name="area_tematica_id"
required>
<option value="" disabled selected hidden>-- Áreas Temáticas --</option>
@foreach($areasTematicas as $areaTematica)
<option value="{{$areaTematica->id}}">{{$areaTematica->nome}}</option>
@endforeach
</select>
</div>
@endif
@if($evento->natureza_id != 3)
<div class="form-group">
<label for="exampleFormControlSelect1">Instituição <span style="color: red; font-weight:bold">*</span></label>
<select class="form-control" name="instituicao" id="membro" required onchange="mostrarDiv(this)">
<option value="" disabled>-- Selecione a instituição --</option>
<option value="ufape" >Universidade Federal do Agreste de Pernambuco</option>
<option value="outra" >Outra</option>
</select>
</div>
@endif
<div class="form-group" id="div-outra" style="@if(old('instituicao') != null && old('instituicao') == "outra") display: block; @else display: none; @endif">
<label for="outra">{{ __('Digite o nome da instituição') }}<span style="color: red; font-weight: bold;"> *</span></label>
<input id="outra" class="form-control @error('outra') is-invalid @enderror" type="text" name="outra" value="{{old('outra')}}" autocomplete="outra" placeholder="Universidade Federal ...">
@error('outra')
<div id="validationServer03Feedback" class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group" style="margin-top: 40px; margin-bottom: 40px;">
<button type="submit" class="btn btn-info" style="width: 100%">Enviar</button>
</div>
<div class="form-group texto-info">
O convite será enviador por e-mail e o preenchimento dos dados será de inteira responsabilidade do usuário convidado.
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script>
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
});
function buscar(input) {
var editais = document.getElementById('avaliadores').children;
if(input.value.length > 2) {
for(var i = 0; i < editais.length; i++) {
var nomeEvento = editais[i].children[1].textContent;
if(nomeEvento.substr(0).indexOf(input.value) >= 0) {
editais[i].style.display = "";
} else {
editais[i].style.display = "none";
}
}
} else {
for(var i = 0; i < editais.length; i++) {
editais[i].style.display = "";
}
}
}
function areas() {
var grandeArea = $('#grandeArea').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id='+grandeArea ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if($('#oldArea').val() == null || $('#oldArea').val() == ""){
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldArea').val() != null && $('#oldArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#area').html(option).show();
subareas();
},
error: (data) => {
console.log(data);
}
})
}
function mostrarDiv(select) {
if(select.value == "outra") {
document.getElementById('div-outra').style.display = "block";
$("#outra").prop('required',true);
}else if(select.value == "ufape"){
document.getElementById('div-outra').style.display = "none";
$("#outra").prop('required',false);
}
}
</script>
@endsection
@extends('layouts.app')
@section('styles')
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" integrity="sha512-nMNlpuaDPrqlEls3IX/Q56H36qvBASwb3ipuo3MxeWbsQB1881ox0cRv7UPTgBlriqoynt35KjEwgGUeUXIPnw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
@endsection
@section('content')
<div class="container" style="margin-top: 30px;">
<div class="container" >
<div class="row justify-content-center d-flex align-items-center" style="margin-bottom: 50px;">
<div class="col-md-1">
<a href="{{ route('admin.atribuir', ['evento_id' => $evento->id]) }}" class="btn btn-secondary">
Voltar
</a>
</div>
<div class="col-md-9" style="text-align: center;">
<h3 class="titulo-table">Avaliadores</h3>
</div>
<div class="col-md-2">
<!-- Button trigger modal -->
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#exampleModalCenter">
Enviar Convite
</button>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-sm-1">
<button class="btn" onclick="buscar(this.parentElement.parentElement.children[1].children[0])">
<img src="{{asset('img/icons/logo_lupa.png')}}" alt="">
</button>
</div>
<div class="col-sm-6">
<input type="text" class="form-control form-control-edit" placeholder="Digite o e-mail do avaliador" onkeyup="buscar(this)">
</div>
</div>
</div>
</div>
</div>
<hr>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Nome do Usuário</th>
<th scope="col">Email</th>
@if($evento->natureza_id == 3)
<th scope="col">Área Temática</th>
@else
<th scope="col">Área</th>
@endif
<th scope="col">Tipo</th>
<th scope="col" style="text-align:center">Ação</th>
</tr>
</thead>
<tbody id="avaliadores">
@foreach ($avaliadores as $avaliador)
<tr>
<td>{{ $avaliador->user->name }}</td>
<td>{{ $avaliador->user->email }}</td>
<td>
@if(is_null($avaliador->area))
@if($avaliador->areaTematicas()->get()->first() != null)
{{ $avaliador->areaTematicas()->get()->first()->nome }}
@else
Indefinida
@endif
@else
{{ $avaliador->area->nome }}
@endif
</td>
<td>
@if($avaliador->tipo == null)
Externo
@else
{{$avaliador->tipo}}
@endif
</td>
<td style="text-align:center">
<form action="{{ route('admin.adicionar') }}" method="POST">
@csrf
<!-- Possibilidade de exclusão -->
{{-- <input type="hidden" name="avaliador_id" value="{{ $avaliador->avaliador_id }}"> --}}
<input type="hidden" name="avaliador_id" value="{{ $avaliador->id }}" >
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<button type="submit" class="btn btn-primary" >Adicionar</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="container" style="margin-top: 50px;">
<div class="row justify-content-center" >
<h4 class="titulo-table">Avaliadores Selecionados para o Edital: <span style="color: black;">{{ $evento->nome }}</span> </h4>
</div>
</div>
<hr>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Nome do Usuário</th>
<th scope="col">Tipo</th>
<th scope="col">Email</th>
<th scope="col">Status</th>
<th scope="col">Projetos</th>
<th scope="col" style="text-align:center">Ação</th>
</tr>
</thead>
<tbody>
@foreach ($avalSelecionados as $avaliador)
<tr>
<td>{{ $avaliador->user->name }}</td>
<td>{{ $avaliador->tipo }}</td>
<td>{{ $avaliador->user->email }}</td>
@if($avaliador->eventos->where('id', $evento->id)->first()->pivot->convite == true)
<td style="color: rgb(3, 189, 3);">Aceito</td>
@elseif(is_null($avaliador->eventos->where('id', $evento->id)->first()->pivot->convite))
<td>A confirmar</td>
@else
<td style="color: red;">Recusado</td>
@endif
<!-- ANTOIM -->
@if($avaliador->trabalhos->where('evento_id', $evento->id)->count() == 0)
<td><button data-toggle="modal" class="btn btn-primary" style="color:white;
" data-target="#avaliadorModalCenter1{{$avaliador->id}}">Visualizar</button></td>
@else
<td><button data-toggle="modal" class="btn btn-primary" style="color:white;
" data-target="#avaliadorModalCenter{{$avaliador->id}}">Visualizar</button></td>
@endif
<!-- MODAL Projetos -->
<div class="modal fade" id="avaliadorModalCenter{{$avaliador->id}}" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true" style="overflow-y: hidden">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content modal-submeta modal-xl">
<div class="modal-header modal-header-submeta">
<div class="col-md-8" style="padding-left: 0px">
<h5 class="modal-title titulo-table" id="avaliacaoModalLongTitle">
Projetos do Avaliador</h5>
</div>
<div class="col-md-4" style="text-align: right">
<button type="button" class="close" aria-label="Close"
data-dismiss="modal" style="color: rgb(182, 182, 182);padding-right: 0px;">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div>
<div class="modal-body" style="margin-left: 20px; margin-right: 20px;">
@foreach($trabalhos as $trabalho)
@foreach($trabalho->avaliadors as $avaliador1)
@if($avaliador1->id == $avaliador->id)
{{-- {{ $avaliador->trabalhos->where('id', $trabalho->id)->first()->pivot }} --}}
<a href="{{route('admin.analisarProposta',['id'=>$trabalho->id])}}">Título: {{ $trabalho->titulo }}</a><br>
@endif
@endforeach
@endforeach
</div>
</div>
</div>
</div>
<div class="modal fade" id="avaliadorModalCenter1{{$avaliador->id}}" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true" style="overflow-y: hidden">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content modal-submeta modal-xl">
<div class="modal-header modal-header-submeta">
<div class="col-md-8" style="padding-left: 0px">
<h5 class="modal-title titulo-table" id="avaliacaoModalLongTitle">
Projetos do Avaliador</h5>
</div>
<div class="col-md-4" style="text-align: right">
<button type="button" class="close" aria-label="Close"
data-dismiss="modal" style="color: rgb(182, 182, 182);padding-right: 0px;">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div>
<div class="modal-body" style="margin-left: 20px; margin-right: 20px;">
Esse Avaliador não possui projetos. <a href="{{route('admin.analisar', ['evento_id' => $evento->id])}}">Clique aqui</a> e verifique os projetos disponíveis.
</div>
</div>
</div>
</div>
<td @if($avaliador->eventos->where('id', $evento->id)->first()->pivot->convite != null) style="text-align:center" @endif style="text-align:center; display:flex; justify-content: space-evenly">
<form action="{{ route('admin.remover') }}" method="POST">
@csrf
<input type="hidden" name="avaliador_id" value="{{ $avaliador->id }}" >
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<button type="button" class="btn btn-danger" @if($avaliador->trabalhos->where('evento_id', $evento->id)->count() != 0) disabled="disabled" @endif
data-toggle="modal" data-target="#modal{{ $avaliador->id }}"
>Remover</button>
<!-- Modal Remover -->
<div class="modal fade" id="modal{{ $avaliador->id }}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Remover Avaliador</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p>Você tem certeza que deseja remover o avaliador: {{ $avaliador->user->name }}?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
<button type="submit" class="btn btn-danger">Remover</button>
</div>
</div>
</div>
</div>
</form>
<form action="{{ route('admin.reenviarConvite') }}" method="POST">
@csrf
<input type="hidden" name="avaliador_id" value="{{ $avaliador->id }}" >
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<button type="submit" class="btn btn-secondary" @if($avaliador->eventos->where('id', $evento->id)->first()->pivot->convite != null) disabled hidden @endif >Reenviar convite</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- Modal -->
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content modal-submeta">
<div class="modal-header modal-header-submeta">
<h5 class="modal-title titulo-table" id="exampleModalLongTitle" style="font-size: 20px;">Enviar Convite</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="color: rgb(182, 182, 182)">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="margin-left: 20px; margin-right: 20px;">
<form action="{{ route('admin.enviarConvite') }}" method="POST" class="labels-blue">
@csrf
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<div class="form-group">
<label for="exampleInputEmail1">Nome Completo <span style="color: red;">*</span></label>
<input type="text" class="form-control" name="nomeAvaliador" id="exampleInputNome1" required>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email <span style="color: red;">*</span></label>
<input type="email" class="form-control" name="emailAvaliador" id="exampleInputEmail1" required>
</div>
<!-- aki -->
@if($evento->natureza_id != 3)
<div class="form-group">
<label for="grandeArea" class="col-form-label">{{ __('Grande Área') }} <span style="color: red; font-weight:bold">*</span></label>
<select class="form-control" id="grandeArea" name="grande_area_id" onchange="areas()" required>
<option value="" disabled selected hidden>-- Grande Área --</option>
@foreach($grandeAreas as $grandeArea)
<option value="{{$grandeArea->id}}">{{$grandeArea->nome}}</option>
@endforeach
</select>
<label for="area" class="col-form-label">{{ __('Área') }} <span style="color: red; font-weight:bold">*</span></label>
<select class="form-control @error('area') is-invalid @enderror" id="area" name="area_id" required>
<option value="" disabled selected hidden>-- Área --</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlSelect1">Tipo</label>
<select class="form-control" name="tipo" id="exampleFormControlSelect1" disabled>
<option value="avaliador" >Avaliador</option>
</select>
</div>
@else
<div class="form-group">
<label for="areasTemeticas" class="col-form-label">{{ __('Áreas Temáticas') }}<span style="color: red; font-weight:bold">*</span></label>
<select class="form-control" id="areaTematicaConvite" style="width: 425px" name="areasTemeticas[]" multiple="multiple" required>
@foreach($areasTematicas as $areaTematica)
<option value="{{$areaTematica->id}}">{{$areaTematica->nome}}</option>
@endforeach
</select>
</div>
@endif
@if($evento->natureza_id != 3)
<div class="form-group">
<label for="exampleFormControlSelect1">Instituição <span style="color: red; font-weight:bold">*</span></label>
<select class="form-control" name="instituicao" id="membro" required onchange="mostrarDiv(this)">
<option value="" disabled>-- Selecione a instituição --</option>
<option value="ufape" >Universidade Federal do Agreste de Pernambuco</option>
<option value="outra" >Outra</option>
</select>
</div>
@endif
<div class="form-group" id="div-outra" style="@if(old('instituicao') != null && old('instituicao') == "outra") display: block; @else display: none; @endif">
<label for="outra">{{ __('Digite o nome da instituição') }}<span style="color: red; font-weight: bold;"> *</span></label>
<input id="outra" class="form-control @error('outra') is-invalid @enderror" type="text" name="outra" value="{{old('outra')}}" autocomplete="outra" placeholder="Universidade Federal ...">
@error('outra')
<div id="validationServer03Feedback" class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group" style="margin-top: 40px; margin-bottom: 40px;">
<button type="submit" class="btn btn-info" style="width: 100%">Enviar</button>
</div>
<div class="form-group texto-info">
O convite será enviador por e-mail e o preenchimento dos dados será de inteira responsabilidade do usuário convidado.
</div>
</form>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js" integrity="sha512-2ImtlRlf2VVmiGZsjm9bEyhjGW4dU7B6TNwh/hx/iSByxNENtj3WVE6o/9Lj4TJeVXPi4bnOIMXFIJJAeufa0A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script type="text/javascript">
$("#areaTematicaConvite").select2({
placeholder: 'Selecione as áreas temáticas',
allowClear: true
});
</script>
<script>
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
});
function buscar(input) {
var editais = document.getElementById('avaliadores').children;
if(input.value.length > 2) {
for(var i = 0; i < editais.length; i++) {
var nomeEvento = editais[i].children[1].textContent;
if(nomeEvento.substr(0).indexOf(input.value) >= 0) {
editais[i].style.display = "";
} else {
editais[i].style.display = "none";
}
}
} else {
for(var i = 0; i < editais.length; i++) {
editais[i].style.display = "";
}
}
}
function areas() {
var grandeArea = $('#grandeArea').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id='+grandeArea ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if($('#oldArea').val() == null || $('#oldArea').val() == ""){
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldArea').val() != null && $('#oldArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#area').html(option).show();
subareas();
},
error: (data) => {
console.log(data);
}
})
}
function mostrarDiv(select) {
if(select.value == "outra") {
document.getElementById('div-outra').style.display = "block";
$("#outra").prop('required',true);
}else if(select.value == "ufape"){
document.getElementById('div-outra').style.display = "none";
$("#outra").prop('required',false);
}
}
</script>
@endsection
@extends('layouts.app')
@section('content')
<div class="container" style="margin-top: 30px;">
<div class="container" >
<div class="row justify-content-center" style="margin-bottom: 50px;">
<div class="col-md-1">
<a href="{{ route('admin.atribuir', ['evento_id' => $evento->id]) }}" class="btn btn-secondary">
Voltar
</a>
</div>
<div class="col-md-10" style="text-align: center;">
<h3 class="titulo-table">Status dos Projetos em Avaliação do edital: <span style="color: black;">{{ $evento->nome }}</span> </h3>
</div>
<div class="col-md-1">
<!-- Button trigger modal -->
{{-- <button type="button" class="btn btn-info" data-toggle="modal" data-target="#exampleModalCenter">
Enviar Convite
</button> --}}
</div>
</div>
<hr>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Nome do Usuário</th>
<th scope="col">Tipo de Avaliação</th>
<th scope="col">E-mail</th>
<th scope="col">Titulo do projeto</th>
<th scope="col">Status avaliação</th>
<th scope="col" style="text-align:center">Ação</th>
</tr>
</thead>
<tbody>
@foreach($trabalhos as $trabalho)
@foreach($trabalho->avaliadors as $avaliador)
{{-- Avaliação Interna --}}
@if(($avaliador->tipo == 'Interno' && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso != 1))
|| (($avaliador->user->instituicao == "UFAPE" || $avaliador->user->instituicao == "Universidade Federal do Agreste de Pernambuco") && $avaliador->tipo == null && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso != 1)))
<tr>
<td>{{ $avaliador->user->name }}</td>
<td> Interno </td>
<td>{{ $avaliador->user->email }}</td>
<td style="max-width:100px; overflow-x:hidden; text-overflow:ellipsis">{{ $trabalho->titulo }}</td>
@php
$parecerInterno = App\ParecerInterno::where([['avaliador_id',$avaliador->id],['trabalho_id',$trabalho->id]])->first();
@endphp
<td>@if($parecerInterno == null) Pendente @else Avaliado @endif</td>
<td>
<div class="btn-group dropright dropdown-options">
<a id="options" class="dropdown-toggle " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="{{asset('img/icons/ellipsis-v-solid.svg')}}" style="width:8px">
</a>
<div class="dropdown-menu">
@if($parecerInterno != null)
<a href="{{ route('admin.visualizarParecerInterno', ['trabalho_id' => $trabalho->id, 'avaliador_id' => $avaliador->id]) }}" class="dropdown-item text-center">
Vizualizar Parecer
</a>
@endif
<a href="{{ route('admin.removerProjAval', ['trabalho_id' => $trabalho->id, 'avaliador_id' => $avaliador->id,'flag'=>1]) }}" class="dropdown-item text-center">
Desatribuir Avaliador
</a>
</div>
</div>
</td>
</tr>
@endif
{{-- Avaliação Ad Hoc --}}
@if( ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null && $avaliador->tipo == "Externo") || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso != 2
|| (($avaliador->user->instituicao != "UFAPE" && $avaliador->user->instituicao != "Universidade Federal do Agreste de Pernambuco") && $avaliador->tipo == null && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso != 2)))
<tr>
<td>{{ $avaliador->user->name }}</td>
<td> Ad Hoc </td>
<td>{{ $avaliador->user->email }}</td>
<td style="max-width:100px; overflow-x:hidden; text-overflow:ellipsis">{{ $trabalho->titulo }}</td>
<td>@if($avaliador->trabalhos->where('id', $trabalho->id)->first()->pivot->status == false) Pendente @else Avaliado @endif</td>
<td>
<div class="btn-group dropright dropdown-options">
<a id="options" class="dropdown-toggle " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="{{asset('img/icons/ellipsis-v-solid.svg')}}" style="width:8px">
</a>
<div class="dropdown-menu">
@if($avaliador->trabalhos->where('id', $trabalho->id)->first()->pivot->status == true)
<a href="{{ route('admin.visualizarParecer', ['trabalho_id' => $trabalho->id, 'avaliador_id' => $avaliador->id]) }}" class="dropdown-item text-center">
Vizualizar Parecer
</a>
@endif
<a href="{{ route('admin.removerProjAval', ['trabalho_id' => $trabalho->id, 'avaliador_id' => $avaliador->id,'flag'=>0]) }}" class="dropdown-item text-center">
Desatribuir Avaliador
</a>
</div>
</div>
</td>
</tr>
@endif
@endforeach
@endforeach
</tbody>
</table>
<div class="container" style="margin-top: 50px;">
<div class="row justify-content-center d-flex align-items-center" >
<h3 class="titulo-table">Lista de Projetos do Edital: <span style="color: black;">{{ $evento->nome }}</span> </h3>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-sm-1">
<button class="btn" onclick="buscar(this.parentElement.parentElement.children[1].children[0])">
<img src="{{asset('img/icons/logo_lupa.png')}}" alt="">
</button>
</div>
<div class="col-sm-6">
<input type="text" class="form-control form-control-edit" placeholder="Digite o nome do projeto" onkeyup="buscar(this)">
</div>
</div>
</div>
</div>
</div>
<hr>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Nome do Projeto</th>
@if($evento->natureza_id == 3)
<th scope="col">Área Temática</th>
@else
<th scope="col">Área</th>
@endif
<th scope="col">Proponente</th>
<th scope="col" style="text-align:center">Ação</th>
</tr>
</thead>
<tbody id="projetos">
@foreach ($trabalhos as $trabalho)
<tr>
<td style="max-width:100px; overflow-x:auto; text-overflow:ellipsis">{{ $trabalho->titulo }}</td>
@if($evento->natureza_id == 3)
<td>{{ App\AreaTematica::find($trabalho->area_tematica_id)->nome }}</td>
@else
<td>{{ App\Area::find($trabalho->area_id)->nome }}</td>
@endif
<td>{{ $trabalho->proponente->user->name }}</td>
<td style="text-align:center">
<button type="button" class="btn btn-primary" value="{{ $trabalho->id }}" id="atribuir1" data-toggle="modal" data-target="#exampleModalCenter{{ $trabalho->id }}">
Atribuir
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModalCenter{{ $trabalho->id }}" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content modal-submeta">
<div class="modal-header modal-header-submeta">
<h5 class="modal-title titulo-table" id="exampleModalLongTitle">Selecione o(s) avaliador(es)</h5>
<div class="col-md-4" style="text-align: right">
<button type="button" id="enviarConviteButton" class="btn btn-info"
data-toggle="modal" onclick="abrirModalConviteAval({{ $trabalho->id }})">
Enviar Convites
</button>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="color: rgb(182, 182, 182)">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div>
<div class="modal-body">
<form action="{{ route('admin.atribuicao.projeto') }}" method="POST">
@csrf
<input type="hidden" name="trabalho_id" value="{{ $trabalho->id }}">
<input type="hidden" name="evento_id" value="{{ $evento->id }}">
<div class="form-group text-left">
<div class="row" style="margin-left: 2px;margin-bottom: 1px">
<div class="col-md-4">
<label for="exampleFormControlSelect2"
style="font-size: 16px;">Selecione o(s) avaliador(es)
para esse projeto</label>
</div>
<div class="col-md-3"
style="text-align: center;overflow-y: auto;overflow-x: auto">
<select class="form-control" id="grandeArea"
name="grande_area_id" onchange="areasFiltro()">
<option value="" disabled selected hidden>-- Grande Área
--
</option>
@foreach($grandesAreas as $grandeArea)
<option title="{{$grandeArea->nome}}"
value="{{$grandeArea->id}}">{{$grandeArea->nome}}</option>
@endforeach
</select>
</div>
<div class="col-md-2"
style="text-align: center;overflow-y: auto;overflow-x: auto">
<input type="hidden" id="oldArea" value="{{ old('area') }}">
<select class="form-control @error('area') is-invalid @enderror"
id="area" name="area_id"
onchange="(consultaExterno(),consultaInterno())">
<option value="" disabled selected hidden>-- Área --
</option>
</select>
</div>
<div class="col-sm-3" style="display:flex; align-items: end;">
<input type="text" class="form-control form-control-edit" placeholder="Nome do avaliador" onkeyup="buscar(this)" style="max-width: 200px;"> <img src="{{asset('img/icons/logo_lupa.png')}}" alt="">
</div>
</div>
<div class="col-md-6">
<label style="font-weight: bold;font-size: 18px">Internos</label>
</div>
<input type="hidden" id="oldAvalInterno"
value="{{ old('exampleFormControlSelect2') }}">
<select name="avaliadores_internos_id[]" multiple
class="form-control" id="exampleFormControlSelect2"
style="height: 200px;font-size: 15px">
@foreach ($trabalho->avaliadors as $avaliador)
@if(($avaliador->tipo == "Interno" && $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 1) ||
(($avaliador->user->instituicao == "UFAPE" || $avaliador->user->instituicao == "Universidade Federal do Agreste de Pernambuco") && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 1) ))
<option value="{{ $avaliador->id }}">{{ $avaliador->user->name }}
> {{$avaliador->user->instituicao ?? 'Instituição Indefinida'}}
> {{$avaliador->area->nome ?? 'Indefinida'}}
> {{$avaliador->user->email}}</option>
@endif
@endforeach
@foreach ($trabalho->aval as $avaliador)
@if($avaliador->tipo == "Interno" || $avaliador->user->instituicao == "UFAPE" || $avaliador->user->instituicao == "Universidade Federal do Agreste de Pernambuco")
<option value="{{ $avaliador->id }}"> {{ $avaliador->user->name }}
> {{$avaliador->user->instituicao ?? 'Instituição Indefinida'}}
> {{$avaliador->area->nome ?? 'Indefinida'}}
> {{$avaliador->user->email}}</option>
@endif
@endforeach
</select>
<div class="col-md-6">
<label style="font-weight: bold;font-size: 18px"><i>Ad Hoc</i></label>
</div>
<input type="hidden" id="trab" value="{{$trabalho->id}}">
<input type="hidden" id="oldAvalExterno"
value="{{ old('exampleFormControlSelect3') }}">
<select name="avaliadores_externos_id[]" multiple
class="form-control" id="exampleFormControlSelect3"
style="height: 200px;font-size:15px">
@foreach ($trabalho->avaliadors as $avaliador)
@if($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 2 || ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null && $avaliador->tipo == "Interno"))
<option value="{{ $avaliador->id }}">{{ $avaliador->user->name }}
> {{$avaliador->user->instituicao ?? 'Instituição Indefinida'}}
> {{$avaliador->area->nome ?? 'Indefinida'}}
> {{$avaliador->user->email}}</option>
@endif
@endforeach
@foreach ($trabalho->aval as $avaliador)
<option value="{{ $avaliador->id }}"> {{ $avaliador->user->name }}
> {{$avaliador->user->instituicao ?? 'Instituição Indefinida'}}
> {{$avaliador->area->nome ?? 'Indefinida'}}
> {{$avaliador->user->email}}</option>
@endforeach
</select>
<small id="emailHelp" class="form-text text-muted">Segure SHIFT do
teclado para selecionar mais de um.</small>
</div>
<div>
<button type="submit" class="btn btn-info" style="width: 100%">
Atribuir
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
<!-- Modal enviar convite e atribuir -->
<div class="modal fade" id="modalConviteAval" tabindex="-1" role="dialog"
aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content modal-submeta">
<div class="modal-header modal-header-submeta">
<h5 class="modal-title titulo-table" id="exampleModalLongTitle" style="font-size: 20px;">Enviar
Convite</h5>
<button type="button" class="close" onclick="fecharModalConvite()" aria-label="Close"
style="color: rgb(182, 182, 182)">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="margin-left: 20px; margin-right: 20px;">
<form action="{{ route('admin.convite.atribuicao.projeto') }}" method="POST" class="labels-blue" id="formConvite">
@csrf
<input type="hidden" name="evento_id" value="{{ $evento->id }}">
<input type="hidden" id="trabalho_id" name="trabalho_id" value="{{ $trabalho->id }}">
<div class="form-group">
<label for="exampleInputEmail1">Nome Completo<span style="color: red;">*</span></label>
<input type="text" class="form-control" name="nomeAvaliador" id="exampleInputNome1"
required>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email <span style="color: red;">*</span></label>
<input type="email" class="form-control" name="emailAvaliador" id="exampleInputEmail1"
required>
</div>
<div class="form-group">
@if($evento->natureza_id != 3)
<label for="grandeArea" class="col-form-label">{{ __('Grande Área') }} <span
style="color: red; font-weight:bold">*</span></label>
<select class="form-control" id="grandeAreaConvite" name="grande_area_id" onchange="areas()"
required>
<option value="" disabled selected hidden>-- Grande Área --</option>
@foreach($grandesAreas as $grandeArea)
<option value="{{$grandeArea->id}}">{{$grandeArea->nome}}</option>
@endforeach
</select>
<label for="area" class="col-form-label">{{ __('Área') }} <span
style="color: red; font-weight:bold">*</span></label>
<select class="form-control @error('area') is-invalid @enderror" id="areaConvite"
name="area_id" required>
<option value="" disabled selected hidden>-- Área --</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlSelect1">Tipo</label>
<select class="form-control" name="tipo" id="exampleFormControlSelect1" disabled>
<option value="avaliador">Avaliador</option>
</select>
</div>
@else
<label for="grandeArea" class="col-form-label">{{ __('Áreas Temáticas') }} <span
style="color: red; font-weight:bold">*</span></label>
<select class="form-control" id="grandeAreaConvite" name="area_tematica_id"
required>
<option value="" disabled selected hidden>-- Áreas Temáticas --</option>
@foreach($areasTematicas as $areaTematica)
<option value="{{$areaTematica->id}}">{{$areaTematica->nome}}</option>
@endforeach
</select>
@endif
@if($evento->natureza_id != 3)
<div class="form-group">
<label for="exampleFormControlSelect1">Instituição <span
style="color: red; font-weight:bold">*</span></label>
<select class="form-control" name="instituicao" id="membro" required
onchange="mostrarDiv(this)">
<option value="" disabled>-- Selecione a instituição --</option>
<option value="ufape">Universidade Federal do Agreste de Pernambuco</option>
<option value="outra">Outra</option>
</select>
</div>
@endif
<div class="form-group" id="div-outra"
style="@if(old('instituicao') != null && old('instituicao') == "outra") display: block; @else display: none; @endif">
<label for="outra">{{ __('Digite o nome da instituição') }}<span
style="color: red; font-weight: bold;"> *</span></label>
<input id="outra" class="form-control @error('outra') is-invalid @enderror" type="text"
name="outra" value="{{old('outra')}}" autocomplete="outra"
placeholder="Universidade Federal ...">
@error('outra')
<div id="validationServer03Feedback" class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group" style="margin-top: 40px; margin-bottom: 40px;">
<button type="submit" class="btn btn-info" style="width: 100%">Enviar</button>
</div>
<div class="form-group texto-info">
O convite será enviador por e-mail e o preenchimento dos dados será de inteira
responsabilidade do usuário convidado.
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script>
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
});
function buscar(input) {
var editais = document.getElementById('projetos').children;
if(input.value.length > 2) {
for(var i = 0; i < editais.length; i++) {
var nomeEvento = editais[i].children[0].textContent;
if(nomeEvento.substr(0).indexOf(input.value) >= 0) {
editais[i].style.display = "";
} else {
editais[i].style.display = "none";
}
}
} else {
for(var i = 0; i < editais.length; i++) {
editais[i].style.display = "";
}
}
}
function abrirModalConviteAval(id) {
// fechar modeal e abrir 2o modal
console.log(id);
$("#exampleModalCenter"+id).modal('toggle');
$("#trabalho_id").val(id);
setTimeout(() => {
$("#modalConviteAval").modal();
}, 500);
$('#modalConviteAval').focus();
}
function fecharModalConvite(){
$("#modalConviteAval").modal('toggle');
}
function areas() {
var grandeArea = $('#grandeAreaConvite').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id=' + grandeArea,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if ($('#oldArea').val() == null || $('#oldArea').val() == "") {
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function (i, obj) {
if ($('#oldArea').val() != null && $('#oldArea').val() == obj.id) {
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
} else {
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#areaConvite').html(option).show();
},
error: (data) => {
console.log(data);
}
})
}
function mostrarDiv(select) {
if (select.value == "outra") {
document.getElementById('div-outra').style.display = "block";
$("#outra").prop('required', true);
} else if (select.value == "ufape") {
document.getElementById('div-outra').style.display = "none";
$("#outra").prop('required', false);
}
}
</script>
@endsection
@extends('layouts.app')
@section('styles')
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/css/select2.min.css" integrity="sha512-nMNlpuaDPrqlEls3IX/Q56H36qvBASwb3ipuo3MxeWbsQB1881ox0cRv7UPTgBlriqoynt35KjEwgGUeUXIPnw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
@endsection
@section('content')
<div class="container" style="margin-top: 30px;">
<div class="container" >
<div class="row justify-content-center" style="margin-bottom: 50px;">
<div class="col-md-1">
<a href="{{ route('admin.atribuir', ['evento_id' => $evento->id]) }}" class="btn btn-secondary">
Voltar
</a>
</div>
<div class="col-md-10" style="text-align: center;">
<h3 class="titulo-table">Status dos Projetos em Avaliação do edital: <span style="color: black;">{{ $evento->nome }}</span> </h3>
</div>
<div class="col-md-1">
<!-- Button trigger modal -->
{{-- <button type="button" class="btn btn-info" data-toggle="modal" data-target="#exampleModalCenter">
Enviar Convite
</button> --}}
</div>
</div>
<hr>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Nome do Usuário</th>
<th scope="col">Tipo de Avaliação</th>
<th scope="col">E-mail</th>
<th scope="col">Titulo do projeto</th>
<th scope="col">Status avaliação</th>
<th scope="col" style="text-align:center">Ação</th>
</tr>
</thead>
<tbody>
@foreach($trabalhos as $trabalho)
@foreach($trabalho->avaliadors as $avaliador)
{{-- Avaliação Interna --}}
@if(($avaliador->tipo == 'Interno' && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso != 1))
|| (($avaliador->user->instituicao == "UFAPE" || $avaliador->user->instituicao == "Universidade Federal do Agreste de Pernambuco") && $avaliador->tipo == null && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso != 1)))
<tr>
<td>{{ $avaliador->user->name }}</td>
<td> Interno </td>
<td>{{ $avaliador->user->email }}</td>
<td style="max-width:100px; overflow-x:hidden; text-overflow:ellipsis">{{ $trabalho->titulo }}</td>
@php
$parecerInterno = App\ParecerInterno::where([['avaliador_id',$avaliador->id],['trabalho_id',$trabalho->id]])->first();
@endphp
<td>@if($parecerInterno == null) Pendente @else Avaliado @endif</td>
<td>
<div class="btn-group dropright dropdown-options">
<a id="options" class="dropdown-toggle " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="{{asset('img/icons/ellipsis-v-solid.svg')}}" style="width:8px">
</a>
<div class="dropdown-menu">
@if($parecerInterno != null)
<a href="{{ route('admin.visualizarParecerInterno', ['trabalho_id' => $trabalho->id, 'avaliador_id' => $avaliador->id]) }}" class="dropdown-item text-center">
Vizualizar Parecer
</a>
@endif
<a href="{{ route('admin.removerProjAval', ['trabalho_id' => $trabalho->id, 'avaliador_id' => $avaliador->id,'flag'=>1]) }}" class="dropdown-item text-center">
Desatribuir Avaliador
</a>
</div>
</div>
</td>
</tr>
@endif
{{-- Avaliação Ad Hoc --}}
@if( ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null && $avaliador->tipo == "Externo") || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso != 2
|| (($avaliador->user->instituicao != "UFAPE" && $avaliador->user->instituicao != "Universidade Federal do Agreste de Pernambuco") && $avaliador->tipo == null && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso != 2)))
<tr>
<td>{{ $avaliador->user->name }}</td>
<td> Ad Hoc </td>
<td>{{ $avaliador->user->email }}</td>
<td style="max-width:100px; overflow-x:hidden; text-overflow:ellipsis">{{ $trabalho->titulo }}</td>
<td>@if($avaliador->trabalhos->where('id', $trabalho->id)->first()->pivot->status == false) Pendente @else Avaliado @endif</td>
<td>
<div class="btn-group dropright dropdown-options">
<a id="options" class="dropdown-toggle " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="{{asset('img/icons/ellipsis-v-solid.svg')}}" style="width:8px">
</a>
<div class="dropdown-menu">
@if($avaliador->trabalhos->where('id', $trabalho->id)->first()->pivot->status == true)
<a href="{{ route('admin.visualizarParecer', ['trabalho_id' => $trabalho->id, 'avaliador_id' => $avaliador->id]) }}" class="dropdown-item text-center">
Vizualizar Parecer
</a>
@endif
<a href="{{ route('admin.removerProjAval', ['trabalho_id' => $trabalho->id, 'avaliador_id' => $avaliador->id,'flag'=>0]) }}" class="dropdown-item text-center">
Desatribuir Avaliador
</a>
</div>
</div>
</td>
</tr>
@endif
@endforeach
@endforeach
</tbody>
</table>
<div class="container" style="margin-top: 50px;">
<div class="row justify-content-center d-flex align-items-center" >
<h3 class="titulo-table">Lista de Projetos do Edital: <span style="color: black;">{{ $evento->nome }}</span> </h3>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-sm-1">
<button class="btn" onclick="buscar(this.parentElement.parentElement.children[1].children[0])">
<img src="{{asset('img/icons/logo_lupa.png')}}" alt="">
</button>
</div>
<div class="col-sm-6">
<input type="text" class="form-control form-control-edit" placeholder="Digite o nome do projeto" onkeyup="buscar(this)">
</div>
</div>
</div>
</div>
</div>
<hr>
<table class="table table-bordered">
<thead>
<tr>
<th scope="col">Nome do Projeto</th>
@if($evento->natureza_id == 3)
<th scope="col">Área Temática</th>
@else
<th scope="col">Área</th>
@endif
<th scope="col">Proponente</th>
<th scope="col" style="text-align:center">Ação</th>
</tr>
</thead>
<tbody id="projetos">
@foreach ($trabalhos as $trabalho)
<tr>
<td style="max-width:100px; overflow-x:auto; text-overflow:ellipsis">{{ $trabalho->titulo }}</td>
@if($evento->natureza_id == 3)
<td>{{ App\AreaTematica::find($trabalho->area_tematica_id)->nome }}</td>
@else
<td>{{ App\Area::find($trabalho->area_id)->nome }}</td>
@endif
<td>{{ $trabalho->proponente->user->name }}</td>
<td style="text-align:center">
<button type="button" class="btn btn-primary" value="{{ $trabalho->id }}" id="atribuir1" data-toggle="modal" data-target="#exampleModalCenter{{ $trabalho->id }}">
Atribuir
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModalCenter{{ $trabalho->id }}" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl" role="document">
<div class="modal-content modal-submeta">
<div class="modal-header modal-header-submeta">
<h5 class="modal-title titulo-table" id="exampleModalLongTitle">Selecione o(s) avaliador(es)</h5>
<div class="col-md-4" style="text-align: right">
<button type="button" id="enviarConviteButton" class="btn btn-info"
data-toggle="modal" onclick="abrirModalConviteAval({{ $trabalho->id }})">
Enviar Convites
</button>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="color: rgb(182, 182, 182)">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div>
<div class="modal-body">
<form action="{{ route('admin.atribuicao.projeto') }}" method="POST">
@csrf
<input type="hidden" name="trabalho_id" value="{{ $trabalho->id }}">
<input type="hidden" name="evento_id" value="{{ $evento->id }}">
<div class="form-group text-left">
<div class="row" style="margin-left: 2px;margin-bottom: 1px">
<div class="col-md-4">
<label for="exampleFormControlSelect2"
style="font-size: 16px;">Selecione o(s) avaliador(es)
para esse projeto</label>
</div>
<div class="col-md-3"
style="text-align: center;overflow-y: auto;overflow-x: auto">
<select class="form-control" id="grandeArea"
name="grande_area_id" onchange="areasFiltro()">
<option value="" disabled selected hidden>-- Grande Área
--
</option>
@foreach($grandesAreas as $grandeArea)
<option title="{{$grandeArea->nome}}"
value="{{$grandeArea->id}}">{{$grandeArea->nome}}</option>
@endforeach
</select>
</div>
<div class="col-md-2"
style="text-align: center;overflow-y: auto;overflow-x: auto">
<input type="hidden" id="oldArea" value="{{ old('area') }}">
<select class="form-control @error('area') is-invalid @enderror"
id="area" name="area_id"
onchange="(consultaExterno(),consultaInterno())">
<option value="" disabled selected hidden>-- Área --
</option>
</select>
</div>
<div class="col-sm-3" style="display:flex; align-items: end;">
<input type="text" class="form-control form-control-edit" placeholder="Nome do avaliador" onkeyup="buscar(this)" style="max-width: 200px;"> <img src="{{asset('img/icons/logo_lupa.png')}}" alt="">
</div>
</div>
<div class="col-md-6">
<label style="font-weight: bold;font-size: 18px">Internos</label>
</div>
<input type="hidden" id="oldAvalInterno"
value="{{ old('exampleFormControlSelect2') }}">
<select name="avaliadores_internos_id[]" multiple
class="form-control" id="exampleFormControlSelect2"
style="height: 200px;font-size: 15px">
@foreach ($trabalho->avaliadors as $avaliador)
@if(($avaliador->tipo == "Interno" && $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 1) ||
(($avaliador->user->instituicao == "UFAPE" || $avaliador->user->instituicao == "Universidade Federal do Agreste de Pernambuco") && ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null || $avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 1) ))
<option value="{{ $avaliador->id }}">{{ $avaliador->user->name }}
> {{$avaliador->user->instituicao ?? 'Instituição Indefinida'}}
> {{$avaliador->area->nome ?? 'Indefinida'}}
> {{$avaliador->user->email}}</option>
@endif
@endforeach
@foreach ($trabalho->aval as $avaliador)
@if($avaliador->tipo == "Interno" || $avaliador->user->instituicao == "UFAPE" || $avaliador->user->instituicao == "Universidade Federal do Agreste de Pernambuco")
<option value="{{ $avaliador->id }}"> {{ $avaliador->user->name }}
> {{$avaliador->user->instituicao ?? 'Instituição Indefinida'}}
> {{$avaliador->area->nome ?? 'Indefinida'}}
> {{$avaliador->user->email}}</option>
@endif
@endforeach
</select>
<div class="col-md-6">
<label style="font-weight: bold;font-size: 18px"><i>Ad Hoc</i></label>
</div>
<input type="hidden" id="trab" value="{{$trabalho->id}}">
<input type="hidden" id="oldAvalExterno"
value="{{ old('exampleFormControlSelect3') }}">
<select name="avaliadores_externos_id[]" multiple
class="form-control" id="exampleFormControlSelect3"
style="height: 200px;font-size:15px">
@foreach ($trabalho->avaliadors as $avaliador)
@if($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == 2 || ($avaliador->trabalhos()->where("trabalho_id",$trabalho->id)->first()->pivot->acesso == null && $avaliador->tipo == "Interno"))
<option value="{{ $avaliador->id }}">{{ $avaliador->user->name }}
> {{$avaliador->user->instituicao ?? 'Instituição Indefinida'}}
> {{$avaliador->area->nome ?? 'Indefinida'}}
> {{$avaliador->user->email}}</option>
@endif
@endforeach
@foreach ($trabalho->aval as $avaliador)
<option value="{{ $avaliador->id }}"> {{ $avaliador->user->name }}
> {{$avaliador->user->instituicao ?? 'Instituição Indefinida'}}
> {{$avaliador->area->nome ?? 'Indefinida'}}
> {{$avaliador->user->email}}</option>
@endforeach
</select>
<small id="emailHelp" class="form-text text-muted">Segure SHIFT do
teclado para selecionar mais de um.</small>
</div>
<div>
<button type="submit" class="btn btn-info" style="width: 100%">
Atribuir
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
<!-- Modal enviar convite e atribuir -->
<div class="modal fade" id="modalConviteAval" tabindex="-1" role="dialog"
aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content modal-submeta">
<div class="modal-header modal-header-submeta">
<h5 class="modal-title titulo-table" id="exampleModalLongTitle" style="font-size: 20px;">Enviar
Convite</h5>
<button type="button" class="close" onclick="fecharModalConvite()" aria-label="Close"
style="color: rgb(182, 182, 182)">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="margin-left: 20px; margin-right: 20px;">
<form action="{{ route('admin.convite.atribuicao.projeto') }}" method="POST" class="labels-blue" id="formConvite">
@csrf
<input type="hidden" name="evento_id" value="{{ $evento->id }}">
<input type="hidden" id="trabalho_id" name="trabalho_id" value="{{ $trabalho->id }}">
<div class="form-group">
<label for="exampleInputEmail1">Nome Completo<span style="color: red;">*</span></label>
<input type="text" class="form-control" name="nomeAvaliador" id="exampleInputNome1"
required>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email <span style="color: red;">*</span></label>
<input type="email" class="form-control" name="emailAvaliador" id="exampleInputEmail1"
required>
</div>
@if($evento->natureza_id != 3)
<div class="form-group">
<label for="grandeArea" class="col-form-label">{{ __('Grande Área') }} <span
style="color: red; font-weight:bold">*</span></label>
<select class="form-control" id="grandeAreaConvite" name="grande_area_id" onchange="areas()"
required>
<option value="" disabled selected hidden>-- Grande Área --</option>
@foreach($grandesAreas as $grandeArea)
<option value="{{$grandeArea->id}}">{{$grandeArea->nome}}</option>
@endforeach
</select>
<label for="area" class="col-form-label">{{ __('Área') }} <span
style="color: red; font-weight:bold">*</span></label>
<select class="form-control @error('area') is-invalid @enderror" id="areaConvite"
name="area_id" required>
<option value="" disabled selected hidden>-- Área --</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlSelect1">Tipo</label>
<select class="form-control" name="tipo" id="exampleFormControlSelect1" disabled>
<option value="avaliador">Avaliador</option>
</select>
</div>
@else
<div class="form-group">
<label for="areasTemeticas" class="col-form-label">{{ __('Áreas Temáticas') }}<span style="color: red; font-weight:bold">*</span></label>
<select class="form-control" id="areaTematicaConvite" style="width: 425px" name="areasTemeticas[]" multiple="multiple" required>
@foreach($areasTematicas as $areaTematica)
<option value="{{$areaTematica->id}}">{{$areaTematica->nome}}</option>
@endforeach
</select>
</div>
@endif
@if($evento->natureza_id != 3)
<div class="form-group">
<label for="exampleFormControlSelect1">Instituição <span
style="color: red; font-weight:bold">*</span></label>
<select class="form-control" name="instituicao" id="membro" required
onchange="mostrarDiv(this)">
<option value="" disabled>-- Selecione a instituição --</option>
<option value="ufape">Universidade Federal do Agreste de Pernambuco</option>
<option value="outra">Outra</option>
</select>
</div>
@endif
<div class="form-group" id="div-outra"
style="@if(old('instituicao') != null && old('instituicao') == "outra") display: block; @else display: none; @endif">
<label for="outra">{{ __('Digite o nome da instituição') }}<span
style="color: red; font-weight: bold;"> *</span></label>
<input id="outra" class="form-control @error('outra') is-invalid @enderror" type="text"
name="outra" value="{{old('outra')}}" autocomplete="outra"
placeholder="Universidade Federal ...">
@error('outra')
<div id="validationServer03Feedback" class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group" style="margin-top: 40px; margin-bottom: 40px;">
<button type="submit" class="btn btn-info" style="width: 100%">Enviar</button>
</div>
<div class="form-group texto-info">
O convite será enviador por e-mail e o preenchimento dos dados será de inteira
responsabilidade do usuário convidado.
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js" integrity="sha512-2ImtlRlf2VVmiGZsjm9bEyhjGW4dU7B6TNwh/hx/iSByxNENtj3WVE6o/9Lj4TJeVXPi4bnOIMXFIJJAeufa0A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script type="text/javascript">
$("#areaTematicaConvite").select2({
placeholder: 'Selecione as áreas temáticas',
allowClear: true
});
</script>
<script>
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').trigger('focus')
});
function buscar(input) {
var editais = document.getElementById('projetos').children;
if(input.value.length > 2) {
for(var i = 0; i < editais.length; i++) {
var nomeEvento = editais[i].children[0].textContent;
if(nomeEvento.substr(0).indexOf(input.value) >= 0) {
editais[i].style.display = "";
} else {
editais[i].style.display = "none";
}
}
} else {
for(var i = 0; i < editais.length; i++) {
editais[i].style.display = "";
}
}
}
function abrirModalConviteAval(id) {
// fechar modeal e abrir 2o modal
console.log(id);
$("#exampleModalCenter"+id).modal('toggle');
$("#trabalho_id").val(id);
setTimeout(() => {
$("#modalConviteAval").modal();
}, 500);
$('#modalConviteAval').focus();
}
function fecharModalConvite(){
$("#modalConviteAval").modal('toggle');
}
function areas() {
var grandeArea = $('#grandeAreaConvite').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id=' + grandeArea,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if ($('#oldArea').val() == null || $('#oldArea').val() == "") {
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function (i, obj) {
if ($('#oldArea').val() != null && $('#oldArea').val() == obj.id) {
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
} else {
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#areaConvite').html(option).show();
},
error: (data) => {
console.log(data);
}
})
}
function mostrarDiv(select) {
if (select.value == "outra") {
document.getElementById('div-outra').style.display = "block";
$("#outra").prop('required', true);
} else if (select.value == "ufape") {
document.getElementById('div-outra').style.display = "none";
$("#outra").prop('required', false);
}
}
</script>
@endsection
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-md-11">
<h5 style="color: #234B8B; font-weight: bold">Adicionar Integrante(s)</h5>
</div>
<div class="col-md-1 text-sm-right">
<a type="button" value="{{ $edital->id }}" id="atribuir1" data-toggle="modal" data-target="#modalIntegrante">
<img class="" src="{{asset('img/icons/add.ico')}}" style="width:30px" alt="">
</a>
</div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row" id="integrante">
</div>
</div>
</div>
</div>
</div>
<!-- MODAL -->
<div class="modal fade" id="modalIntegrante" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Adicionar Integrante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="form-row" style="padding: 30px;">
<div class="col-md-8">
<label for="cpf_consulta">CPF:</label>
<input type="text" id="cpf_consulta" name="cpf_consulta" class="form-control" onkeyup="mask_cpf();">
</div>
<div class="col-md-4 mt-4">
<button type="button" class="btn btn-primary" onclick="preencherUsuarioExistente()">Adicionar</button>
</div>
</div>
<div class="form-row" style="padding: 0px 30px 30px 30px;">
<label for="funcao_participante">Função do Participante:</label>
<select name="" id="funcao_participante" class="form-control">
@foreach($funcaoParticipantes as $funcao)
<option value="{{$funcao->id}}">{{ $funcao->nome }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
<!-- MODAL DE ERRO -->
<div class="modal fade" id="aviso-modal-usuario-nao-existe" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #dc3545;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
CPF não consta no sistema!
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="aviso-modal-usuario-adicionado" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #32CD32;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Sucesso!</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Integrante adicionado com sucesso
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<script>
function mask_cpf() {
$("#cpf_consulta").keydown(function(){
try {
$("#cpf_consulta").unmask();
} catch (e) {}
$("#cpf_consulta").mask("999.999.999-99");
// ajustando foco
var elem = this;
setTimeout(function(){
// mudo a posição do seletor
elem.selectionStart = elem.selectionEnd = 10000;
}, 0);
// reaplico o valor para mudar o foco
var currentValue = $(this).val();
$(this).val('');
$(this).val(currentValue);
});
}
function removerIntegrante(id) {
$(`#integrante${id}`).remove()
}
function preencherUsuarioExistente() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{ route('trabalho.buscarUsuario') }}',
type: 'POST',
dataType: 'json',
data: {
'cpf_consulta': $('#cpf_consulta').val(),
'funcao': $('#funcao_participante').val()
},
success: function (data) {
if(data == 'inexistente' || $('#cpf_consulta').val() == ""){
exibirModalUsuarioInexistente();
}else {
exibirUsuarioAdicionado();
$('#integrante').append(`
<div id="integrante${data[0]['id']}" class="col-md-6">
<div class="row">
<input name="integrantes[]" type="text" value="${data[0]['id']},${$('#funcao_participante').val()}" hidden>
<div class="col-md-2" style="display: flex; align-items: center;">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-md-4 mb-1">
<strong>Nome:</strong> ${data[0]['name']}
<strong>CPF:</strong> ${data[0]['cpf']}
<strong>Função:</strong> ${data[1]['nome']}
<button type="button" class="btn btn-danger" onclick="removerIntegrante(${data[0]['id']})">Remover</button>
</div>
</div>
</div>
`)
}
}
});
}
function exibirModalUsuarioInexistente() {
$('#aviso-modal-usuario-nao-existe').modal('show');
}
function exibirUsuarioAdicionado() {
$('#aviso-modal-usuario-adicionado').modal('show');;
}
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-md-11">
<h5 style="color: #234B8B; font-weight: bold">Adicionar Integrante(s)</h5>
</div>
<div class="col-md-1 text-sm-right">
<a type="button" value="{{ $edital->id }}" id="atribuir1" data-toggle="modal" data-target="#modalIntegrante">
<img class="" src="{{asset('img/icons/add.ico')}}" style="width:30px" alt="">
</a>
</div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row" id="integrante">
</div>
</div>
</div>
</div>
</div>
<!-- MODAL -->
<div class="modal fade" id="modalIntegrante" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Adicionar Integrante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="form-row" style="padding: 30px;">
<div class="col-md-8">
<label for="cpf_consulta">CPF:</label>
<input type="text" id="cpf_consulta" name="cpf_consulta" class="form-control" onkeyup="mask_cpf();">
</div>
<div class="col-md-4 mt-4">
<button type="button" class="btn btn-primary" onclick="preencherUsuarioExistente()">Adicionar</button>
</div>
</div>
<div class="form-row" style="padding: 0px 30px 30px 30px;">
<label for="funcao_participante">Função do Participante:</label>
<select name="" id="funcao_participante" class="form-control">
@foreach($funcaoParticipantes as $funcao)
<option value="{{$funcao->id}}">{{ $funcao->nome }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
<!-- MODAL DE ERRO -->
<div class="modal fade" id="aviso-modal-usuario-nao-existe" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #dc3545;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
CPF não consta no sistema!
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="aviso-modal-usuario-adicionado" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #32CD32;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Sucesso!</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Integrante adicionado com sucesso
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<script>
function mask_cpf() {
$("#cpf_consulta").keydown(function(){
try {
$("#cpf_consulta").unmask();
} catch (e) {}
$("#cpf_consulta").mask("999.999.999-99");
// ajustando foco
var elem = this;
setTimeout(function(){
// mudo a posição do seletor
elem.selectionStart = elem.selectionEnd = 10000;
}, 0);
// reaplico o valor para mudar o foco
var currentValue = $(this).val();
$(this).val('');
$(this).val(currentValue);
});
}
function removerIntegrante(id) {
$(`#integrante${id}`).remove()
}
function preencherUsuarioExistente() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{ route('trabalho.buscarUsuario') }}',
type: 'POST',
dataType: 'json',
data: {
'cpf_consulta': $('#cpf_consulta').val(),
'funcao': $('#funcao_participante').val()
},
success: function (data) {
if(data == 'inexistente' || $('#cpf_consulta').val() == ""){
exibirModalUsuarioInexistente();
}else {
exibirUsuarioAdicionado();
$('#integrante').append(`
<div id="integrante${data[0]['id']}" class="col-md-6">
<div class="row">
<input name="integrantes[]" type="text" value="${data[0]['id']},${$('#funcao_participante').val()}" hidden>
<div class="col-md-2" style="display: flex; align-items: center;">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-md-4 mb-1">
<strong>Nome:</strong> ${data[0]['name']}
<strong>CPF:</strong> ${data[0]['cpf']}
<strong>Função:</strong> ${data[1]['nome']}
<button type="button" class="btn btn-danger" onclick="removerIntegrante(${data[0]['id']})">Remover</button>
</div>
</div>
</div>
`)
}
}
});
}
function exibirModalUsuarioInexistente() {
$('#aviso-modal-usuario-nao-existe').modal('show');
}
function exibirUsuarioAdicionado() {
$('#aviso-modal-usuario-adicionado').modal('show');;
}
</script>
\ No newline at end of file
@extends('layouts.app')
@section('content')
<div>
{{-- action="{{route('trabalho.store')}}" --}}
<form method="POST" id="criarProjetoForm" action="{{route('trabalho.store')}}" enctype="multipart/form-data" >
@csrf
<input type="hidden" name="editalId" value="{{$edital->id}}">
<div class="container">
<div class="row justify-content-center" style="margin-top: 35px">
@include('evento.formulario.projeto')
@include('evento.formulario.proponente')
@include('evento.formulario.participantes')
@if($edital->natureza_id == 3)
@include('evento.formulario.integrantes')
@endif
@include('evento.formulario.anexos')
@include('evento.formulario.finalizar')
<style>
.col-form-label {
font-size: 15.5px;
}
</style>
</div>
</div>
</form>
<div id="participanteFirst" >
@component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ])
@endcomponent
</div>
<!-- Modal de Aviso Edit -->
<div class="modal fade" id="exampleModalAnexarDocumento" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" id="idCorCabecalhoModalDocumento">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12" style="font-family: 'Roboto', sans-serif;"><label id="idTituloDaMensagemModalDocumento"></label></div>
<div class="col-12" style="font-family: 'Roboto', sans-serif; margin-top:10px;">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal"style="width:200px;">Fechar</button>
</div>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="modalCpfInvalido" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: red;">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Existe um CPF inválido em um dos discentes por favor corrija para continuar.
</div>
{{-- <div class="modal-footer">
{{-- <button type="button" class="btn btn-secondary"></button>
{{-- <button type="button" class="btn btn-primary">Certo</button>
</div> --}}
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script>
let buttonSubmit = document.getElementById('idButtonSubmitProjeto');
let buttonRascunho = document.getElementById('idButtonSubmitRascunho');
let parts = document.getElementById('participante');
let partsFirst = document.getElementById('participanteFirst');
const participante = partsFirst.firstElementChild;
let contador = 0;
buttonSubmit.addEventListener('click', (e)=>{
$('.collapse').addClass('show')
})
buttonRascunho.addEventListener('click', (e)=>{
$('.collapse').addClass('show')
const input = '<input id="input_rascunho" type="hidden" name="rascunho" value="true">';
$("#criarProjetoForm").append(input);
})
function gerarPeriodo(e){
var select = e.parentElement.parentElement.nextElementSibling;
selectPeriodos = select.children[0].children[1];
var html = `<option value="" disabled selected>-- TOTAL DE PERÍODOS --</option>`;
for(var i = 0; i < parseInt(e.value); i++) {
html += `<option value="${i+1}">${i+1}º</option>`;
}
$(selectPeriodos).html('');
$(selectPeriodos).append(html);
}
function removerPart(e){
console.log(e)
if(e.parentElement.parentElement){
if(parts.children.length <= 1){
}else{
parts.removeChild(e.parentElement.parentElement);
//contador--;
}
}
}
buttonMais.addEventListener("click", (e) => {
if(parts.children.length >= "{{ $edital->numParticipantes }}"){
alert('Limite de participante.')
}else{
contador++;
var cln = participante.cloneNode(true);
cln.setAttribute('style', " ");
var id = cln.children[2].firstElementChild.id;
var id2 = cln.children[0].firstElementChild.id;
cln.children[2].firstElementChild.setAttribute('id', id + contador);
cln.children[0].firstElementChild.setAttribute('href', "#collapseParticipante" + contador);
cln.children[0].firstElementChild.setAttribute('id', id2 + contador);
for (i = 0; i < cln.children.length; i++) {
for (let index = 0; index < cln.children[i].querySelectorAll('input').length; index++) {
let input = cln.children[i].querySelectorAll('input')[index];
let name = input.getAttributeNode("name").value;
name = name.replace("[]", "");
input.getAttributeNode("name").value = name + '['+ contador +']';
let select = cln.children[i].querySelectorAll('select')[index];
if(select){
let selectName = select.getAttributeNode("name").value;
selectName = selectName.replace("[", "");
selectName = selectName.replace("]", "");
select.getAttributeNode("name").value = selectName + '['+ contador +']';
}
}
}
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
parts.appendChild(cln);
$("input.cpf:text").val("").mask("000.000.000-00");
$("input.celular:text").val("").mask(SPMaskBehavior, spOptions);
$("input.cep:text").val("").mask("00000-000");
}
});
$("input.rg:text").mask('00.000.000-0');
function marcar(id){
let nome = document.getElementById("nome"+id);
let linkNome = document.getElementById("nomePart"+(id+1));
let nomePlano = document.getElementById("nomePlano"+(id+1));
let linkTituloProj = document.getElementById("tituloProj"+(id+1));
let planoTrabalho = document.getElementById("nomePlanoTrabalho"+id);
if(nome.value != ""){
if(planoTrabalho.value != ""){
nomePlano.innerText = `Nome: ${nome.value} \n Plano: ${planoTrabalho.value}`;
}else {
nomePlano.innerText = `Nome: ${nome.value}`;
}
}else{
nomePlano.innerText = `Discente `+(id+1);
}
if(id >=1){
document.getElementById("cancelar"+(id-1)).setAttribute("disabled", true);
}
document.getElementById("checkB"+id).checked = true;
$("#atribuir1").attr('data-target','#exampleModal'+(id+1));
document.getElementById("part"+id).removeAttribute("hidden");
document.getElementById("exampleModal"+id).modal('hide');
}
function desmarcar(id){
if(id >= 1){;
document.getElementById("cancelar"+(id-1)).removeAttribute("disabled");
}
document.getElementById("checkB"+id).checked = false;
document.getElementById("part"+id).setAttribute("hidden",true);
$("#atribuir1").attr('data-target','#exampleModal'+(id));
document.getElementById("exampleModal"+id).modal('hide');
}
</script>
<script>
$( document ).ready( function () {
$('#nomeParticipante').keyup(function () {
$('#display').text($(this).val());
if($('#nomeParticipante').val() == ""){
$('#display').hide();
$('#pontos').hide();
}else{
$('#display').show();
$('#pontos').show();
}
});
$.validator.addMethod("alpha", function(value, element) {
return this.optional(element) || value == value.match(/^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$/);
});
$('input.cep:text').mask('00000-000');
$('input.cpf:text').mask('000.000.000-00');
$('.numero').mask('0000000000000');
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$('.celular').mask(SPMaskBehavior, spOptions);
$('.sus').mask('000 0000 0000 0000');
$("input[type='file']").on("change", function () {
if(this.files[0].size > 2000000) {
// console.log($(this).parents( ".col-sm-5" ))
alert("O tamanho do arquivo deve ser menor que 2MB!");
$(this).val('');
}
});
// $.validator.setDefaults( {
// submitHandler: function (form) {
// form.submit();
// }
// } );
// jQuery.extend(jQuery.validator.messages, {
// required: "Este campo &eacute; requerido.",
// remote: "Por favor, corrija este campo.",
// email: "Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.",
// url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
// date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
// dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
// number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.",
// digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
// creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
// equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
// accept: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
// maxlength: jQuery.validator.format("Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres."),
// minlength: jQuery.validator.format("Por favor, forne&ccedil;a ao menos {0} caracteres."),
// rangelength: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento."),
// range: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1}."),
// max: jQuery.validator.format("Por favor, forne&ccedil;a um valor menor ou igual a {0}."),
// min: jQuery.validator.format("Por favor, forne&ccedil;a um valor maior ou igual a {0}.")
// });
// $( "#criarProjetoForm" ).validate( {
// lang: 'PT_BR',
// rules: {
// firstname: "required",
// username: {
// required: true,
// minlength: 2
// },
// password: {
// required: true,
// minlength: 5
// },
// confirm_password: {
// required: true,
// minlength: 5,
// equalTo: "#password"
// },
// email: {
// required: true,
// email: true,
// },
// "complemento[]":{
// },
// "nomeParticipante[]":{
// alpha:true,
// },
// 'rg[]':{
// maxlength: 12,
// },
// agree: "required"
// },
// messages: {
// // nomeProjeto: "O nome do projeto é obrigatório.",
// // 'emailParticipante[]': "Este campo é obrigatório.",
// // 'data_de_nascimento[]': "Este campo é obrigatório.",
// // 'cpf[]': "Este campo é obrigatório.",
// // 'rg[]': {
// // required: "Este campo é obrigatório.",
// // maxlength: "Este campo deve conter no máximo 8 números."
// // },
// // 'celular[]': "Este campo é obrigatório.",
// // 'cep[]': "Este campo é obrigatório.",
// // 'uf[]': "Este campo é obrigatório.",
// // 'cidade[]': "Este campo é obrigatório.",
// // 'bairro[]': "Este campo é obrigatório.",
// // 'rua[]': "Este campo é obrigatório.",
// // 'numero[]': "Este campo é obrigatório.",
// // 'complemento[]': "Este campo é obrigatório.",
// // 'universidade[]': "Este campo é obrigatório.",
// // 'curso[]': "Este campo é obrigatório.",
// // 'turno[]': "Este campo é obrigatório.",
// // 'total_periodos[]': "Este campo é obrigatório.",
// // 'periodo_atual[]': "Este campo é obrigatório.",
// // 'ordem_prioridade[]': "Este campo é obrigatório.",
// // 'media_geral_curso[]': "Este campo é obrigatório.",
// // 'nomePlanoTrabalho[]': "Este campo é obrigatório.",
// // 'anexoPlanoTrabalho[]': "Este campo é obrigatório.",
// // grandeArea: "Escolha uma grande área.",
// // area: "Escolha uma área.",
// // linkGrupo: "Este campo é obrigatório.",
// // pontuacaoPlanilha: "Este campo é obrigatório.",
// // anexoProjeto: "Este campo é obrigatório.",
// // anexoLattesCoordenador: "Este campo é obrigatório.",
// // anexoConsuPreenchido: "Este campo é obrigatório.",
// // anexoGrupoPesquisa: "Este campo é obrigatório.",
// // anexoPlanilha: "Este campo é obrigatório.",
// // anexoComiteEtica: "Este campo é obrigatório.",
// // inputJustificativa: "Este campo é obrigatório.",
// // "nomeParticipante[]": {
// // required: "O nome do participante é obrigatório.",
// // alpha: "Não é permitido números."
// // },
// // username: {
// // required: "Please enter a username",
// // minlength: "Your username must consist of at least 2 characters"
// // },
// // password: {
// // required: "Please provide a password",
// // minlength: "Your password must be at least 5 characters long"
// // },
// // confirm_password: {
// // required: "Please provide a password",
// // minlength: "Your password must be at least 5 characters long",
// // equalTo: "Please enter the same password as above"
// // },
// // email: "Please enter a valid email address",
// // agree: "Please accept our policy"
// },
// errorElement: "em",
// errorPlacement: function ( error, element ) {
// // Add the `help-block` class to the error element
// error.addClass( "invalid-feedback" );
// if ( element.prop( "type" ) === "checkbox" ) {
// error.insertAfter( element.parent( "label" ) );
// } else {
// error.insertAfter( element );
// }
// },
// highlight: function ( element, errorClass, validClass ) {
// $( element ).parents( ".col-sm-5" ).addClass( "has-error" ).removeClass( "has-success" );
// },
// unhighlight: function (element, errorClass, validClass) {
// $( element ).parents( ".col-sm-5" ).addClass( "has-success" ).removeClass( "has-error" );
// }
// } );
} );
</script>
<script type="text/javascript">
function validarCPF(valor){
var soma = 0;
var resto;
var inputCPF = valor.match(/\d/g).join('');
if(inputCPF == '00000000000') return false;
if(inputCPF.length >11) return false;
for(i=1; i<=9; i++) soma = soma + parseInt(inputCPF.substring(i-1, i)) * (11 - i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(9, 10))) return false;
soma = 0;
for(i = 1; i <= 10; i++) soma = soma + parseInt(inputCPF.substring(i-1, i))*(12-i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(10, 11))) return false;
return true;
}
/*
* FUNCAO: Gerar as areas
*
*/
function areas() {
var grandeArea = $('#grandeArea').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id='+grandeArea ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if($('#oldArea').val() == null || $('#oldArea').val() == ""){
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldArea').val() != null && $('#oldArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#area').html(option).show();
subareas();
},
error: (data) => {
console.log(data);
}
})
}
/*
* FUNCAO: Gerar as subareas
*
*/
function subareas() {
var area = $('#area').val();
$.ajax({
type: 'POST',
url: '{{ route('subarea.consulta') }}',
data: 'id='+area ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados)=> {
if (dados.length > 0) {
if($('#oldSubArea').val() == null || $('#oldSubArea').val() == ""){
var option = '<option selected disabled>-- Subárea --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldSubArea').val() != null && $('#oldSubArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Subárea --</option>";
}
$('#subArea').html(option).show();
},
error: (dados) => {
console.log(dados);
}
})
}
/*
* FUNCAO: funcao responsavel pelo abre e fecha da area "possui autorizacoes especiais?"
*
*/
function displayAutorizacoesEspeciais(valor){
if(valor == "sim"){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else if(valor == "nao"){
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
}
/*
* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (PDF)
*
*/
function verificarArquivoAnexado_pdf(item, legenda){
if(item.files[0].type.split('/')[1] != "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo PDF! ";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else if(item.files[0].size > 2000000 && item.files[0].type.split('/')[1] == "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}
/* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (XLS, XLSX, ODS)
*
*/
function verificarArquivoAnexado_xls_xlsx_ods(item, legenda){
if(item.files[0].name.split('.')[1] == "xls" || item.files[0].name.split('.')[1] == "ods" || item.files[0].name.split('.')[1] == "xlsx"){
if(item.files[0].size > 2000000){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}else{
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo XLS, XLSX ou ODS! ";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}
}
/*
* FUNCAO: Gerar periodos 1
*
*/
// function gerarPeriodos1(select) {
// var div = select.parentElement.parentElement;
// var selectPeriodos = div.children[22].children[1];
// var html = `<option value="" disabled selected>-- TOTAL DE PERIODOS --</option>`;
// for(var i = 0; i < parseInt(select.value); i++) {
// html += `<option value="${i+1}">${i+1}º</option>`;
// }
// });
// });
// $(document).ready(function(){
// $(".cpf").change(function(){
// console.log(this.parentElement.children[0])
// if (validarCPF(retirarFormatacao(this.value))) {
// this.parentElement.children[1].style.display = "none";
// this.parentElement.children[2].style.display = "block";
// } else {
// this.parentElement.children[1].style.display = "block";
// this.parentElement.children[2].style.display = "none";
// }
// });
// });
function checarCPFdoCampo(input) {
if (input.value.length == 14) {
if (validarCPF(retirarFormatacao(input.value))) {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "block";
} else {
input.parentElement.children[1].style.display = "block";
input.parentElement.children[2].style.display = "none";
}
} else {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "none";
}
}
function validarCPF(strCPF) {
var soma;
var resto;
soma = 0;
// Verifica se foi informado todos os digitos corretamente
if (strCPF.length != 11) {
return false;
}
// Verifica se foi informada uma sequência de digitos repetidos. Ex: 111.111.111-11
if (varificarDigitos(strCPF)) {
return false;
}
// Faz o calculo para validar o CPF
for (var t = 9; t < 11; t++) {
for (var d = 0, c = 0; c < t; c++) {
d += strCPF[c] * ((t + 1) - c);
}
d = ((10 * d) % 11) % 10;
if (strCPF[c] != d) {
return false;
}
}
return true;
}
function retirarFormatacao(strCpf) {
resultado = "";
for(var i = 0; i < strCpf.length; i++) {
if (strCpf[i] != "." && strCpf[i] != "-") {
resultado += strCpf[i];
}
}
return resultado;
}
function varificarDigitos(strCpf) {
var cont = 1;
dig1 = strCpf[0];
for(var i = 1; i < strCpf.length; i++) {
if(dig1 == strCpf[i]) {
cont++;
}
}
if (cont == strCpf.length) {
return true;
}
return false;
}
function checarCpfs() {
var validacoes = document.getElementsByClassName("cpf-invalido");
var count = validacoes.length;
var quant = 0;
for(var i = 0; i < validacoes.length; i++) {
if (validacoes[i].style.display == "none") {
quant++;
}
}
if(quant == count) {
return true;
}
return false;
}
function submeterProposta() {
if (checarCpfs()) {
document.getElementById("submeterFormProposta").click();
} else {
$("#modalCpfInvalido").modal('show');
}
}
function mascaraCPF(input) {
var numeros = "0123456789.-";
var resultado = "";
if (input.value.length < 14) {
for (var i = 0; i < input.value.length; i++) {
if (numeros.indexOf(input.value[i]) > -1) {
if ((i == 2 || i == 6) && input.value[i+1] != ".") {
resultado += input.value[i] + ".";
} else if (i == 10 && input.value[i+1] != "-") {
resultado += input.value[i] + "-";
} else {
resultado += input.value[i];
}
}
}
} else {
for (var i = 0; i < 14; i++) {
resultado += input.value[i];
}
}
input.value = resultado;
}
function showInstituicao(instituicao){
var instituicaoSelect = instituicao;
var idSelect = instituicaoSelect.name;
var instituicao = document.getElementById('outra'+idSelect);
var display = document.getElementById('display'+idSelect);
if(instituicaoSelect.value === "Outra"){
display.style.display = "block";
instituicao.parentElement.style.display = '';
instituicao.value="";
}else if(instituicaoSelect.value === "UFAPE"){
display.style.display = "none";
}
}
function showCurso(curso){
var cursoSelect = curso;
var idSelect = cursoSelect.name;
var curso = document.getElementById('outro'+idSelect);
var displayCurso = document.getElementById('display'+idSelect);
if(cursoSelect.value === "Outro"){
displayCurso.style.display = "block";
curso.parentElement.style.display = '';
curso.value="";
}else{
displayCurso.style.display = "none";
}
}
</script>
@extends('layouts.app')
@section('content')
<div>
{{-- action="{{route('trabalho.store')}}" --}}
<form method="POST" id="criarProjetoForm" action="{{route('trabalho.store')}}" enctype="multipart/form-data" >
@csrf
<input type="hidden" name="editalId" value="{{$edital->id}}">
<div class="container">
<div class="row justify-content-center" style="margin-top: 35px">
@include('evento.formulario.projeto')
@include('evento.formulario.proponente')
@include('evento.formulario.participantes')
@if($edital->natureza_id == 3)
@include('evento.formulario.integrantes')
@endif
@include('evento.formulario.anexos')
@include('evento.formulario.finalizar')
<style>
.col-form-label {
font-size: 15.5px;
}
</style>
</div>
</div>
</form>
<div id="participanteFirst" >
@component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ])
@endcomponent
</div>
<!-- Modal de Aviso Edit -->
<div class="modal fade" id="exampleModalAnexarDocumento" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" id="idCorCabecalhoModalDocumento">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12" style="font-family: 'Roboto', sans-serif;"><label id="idTituloDaMensagemModalDocumento"></label></div>
<div class="col-12" style="font-family: 'Roboto', sans-serif; margin-top:10px;">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal"style="width:200px;">Fechar</button>
</div>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="modalCpfInvalido" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: red;">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Existe um CPF inválido em um dos discentes por favor corrija para continuar.
</div>
{{-- <div class="modal-footer">
{{-- <button type="button" class="btn btn-secondary"></button>
{{-- <button type="button" class="btn btn-primary">Certo</button>
</div> --}}
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script>
let buttonSubmit = document.getElementById('idButtonSubmitProjeto');
let buttonRascunho = document.getElementById('idButtonSubmitRascunho');
let parts = document.getElementById('participante');
let partsFirst = document.getElementById('participanteFirst');
const participante = partsFirst.firstElementChild;
let contador = 0;
buttonSubmit.addEventListener('click', (e)=>{
$('.collapse').addClass('show')
})
buttonRascunho.addEventListener('click', (e)=>{
$('.collapse').addClass('show')
const input = '<input id="input_rascunho" type="hidden" name="rascunho" value="true">';
$("#criarProjetoForm").append(input);
})
function gerarPeriodo(e){
var select = e.parentElement.parentElement.nextElementSibling;
selectPeriodos = select.children[0].children[1];
var html = `<option value="" disabled selected>-- TOTAL DE PERÍODOS --</option>`;
for(var i = 0; i < parseInt(e.value); i++) {
html += `<option value="${i+1}">${i+1}º</option>`;
}
$(selectPeriodos).html('');
$(selectPeriodos).append(html);
}
function removerPart(e){
console.log(e)
if(e.parentElement.parentElement){
if(parts.children.length <= 1){
}else{
parts.removeChild(e.parentElement.parentElement);
//contador--;
}
}
}
buttonMais.addEventListener("click", (e) => {
if(parts.children.length >= "{{ $edital->numParticipantes }}"){
alert('Limite de participante.')
}else{
contador++;
var cln = participante.cloneNode(true);
cln.setAttribute('style', " ");
var id = cln.children[2].firstElementChild.id;
var id2 = cln.children[0].firstElementChild.id;
cln.children[2].firstElementChild.setAttribute('id', id + contador);
cln.children[0].firstElementChild.setAttribute('href', "#collapseParticipante" + contador);
cln.children[0].firstElementChild.setAttribute('id', id2 + contador);
for (i = 0; i < cln.children.length; i++) {
for (let index = 0; index < cln.children[i].querySelectorAll('input').length; index++) {
let input = cln.children[i].querySelectorAll('input')[index];
let name = input.getAttributeNode("name").value;
name = name.replace("[]", "");
input.getAttributeNode("name").value = name + '['+ contador +']';
let select = cln.children[i].querySelectorAll('select')[index];
if(select){
let selectName = select.getAttributeNode("name").value;
selectName = selectName.replace("[", "");
selectName = selectName.replace("]", "");
select.getAttributeNode("name").value = selectName + '['+ contador +']';
}
}
}
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
parts.appendChild(cln);
$("input.cpf:text").val("").mask("000.000.000-00");
$("input.celular:text").val("").mask(SPMaskBehavior, spOptions);
$("input.cep:text").val("").mask("00000-000");
}
});
$("input.rg:text").mask('00.000.000-0');
function marcar(id){
let nome = document.getElementById("nome"+id);
let linkNome = document.getElementById("nomePart"+(id+1));
let nomePlano = document.getElementById("nomePlano"+(id+1));
let linkTituloProj = document.getElementById("tituloProj"+(id+1));
let planoTrabalho = document.getElementById("nomePlanoTrabalho"+id);
if(nome.value != ""){
if(planoTrabalho.value != ""){
nomePlano.innerText = `Nome: ${nome.value} \n Plano: ${planoTrabalho.value}`;
}else {
nomePlano.innerText = `Nome: ${nome.value}`;
}
}else{
nomePlano.innerText = `Discente `+(id+1);
}
if(id >=1){
document.getElementById("cancelar"+(id-1)).setAttribute("disabled", true);
}
document.getElementById("checkB"+id).checked = true;
$("#atribuir1").attr('data-target','#exampleModal'+(id+1));
document.getElementById("part"+id).removeAttribute("hidden");
document.getElementById("exampleModal"+id).modal('hide');
}
function desmarcar(id){
if(id >= 1){;
document.getElementById("cancelar"+(id-1)).removeAttribute("disabled");
}
document.getElementById("checkB"+id).checked = false;
document.getElementById("part"+id).setAttribute("hidden",true);
$("#atribuir1").attr('data-target','#exampleModal'+(id));
document.getElementById("exampleModal"+id).modal('hide');
}
</script>
<script>
$( document ).ready( function () {
$('#nomeParticipante').keyup(function () {
$('#display').text($(this).val());
if($('#nomeParticipante').val() == ""){
$('#display').hide();
$('#pontos').hide();
}else{
$('#display').show();
$('#pontos').show();
}
});
$.validator.addMethod("alpha", function(value, element) {
return this.optional(element) || value == value.match(/^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$/);
});
$('input.cep:text').mask('00000-000');
$('input.cpf:text').mask('000.000.000-00');
$('.numero').mask('0000000000000');
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$('.celular').mask(SPMaskBehavior, spOptions);
$('.sus').mask('000 0000 0000 0000');
$("input[type='file']").on("change", function () {
if(this.files[0].size > 2000000) {
// console.log($(this).parents( ".col-sm-5" ))
alert("O tamanho do arquivo deve ser menor que 2MB!");
$(this).val('');
}
});
// $.validator.setDefaults( {
// submitHandler: function (form) {
// form.submit();
// }
// } );
// jQuery.extend(jQuery.validator.messages, {
// required: "Este campo &eacute; requerido.",
// remote: "Por favor, corrija este campo.",
// email: "Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.",
// url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
// date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
// dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
// number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.",
// digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
// creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
// equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
// accept: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
// maxlength: jQuery.validator.format("Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres."),
// minlength: jQuery.validator.format("Por favor, forne&ccedil;a ao menos {0} caracteres."),
// rangelength: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento."),
// range: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1}."),
// max: jQuery.validator.format("Por favor, forne&ccedil;a um valor menor ou igual a {0}."),
// min: jQuery.validator.format("Por favor, forne&ccedil;a um valor maior ou igual a {0}.")
// });
// $( "#criarProjetoForm" ).validate( {
// lang: 'PT_BR',
// rules: {
// firstname: "required",
// username: {
// required: true,
// minlength: 2
// },
// password: {
// required: true,
// minlength: 5
// },
// confirm_password: {
// required: true,
// minlength: 5,
// equalTo: "#password"
// },
// email: {
// required: true,
// email: true,
// },
// "complemento[]":{
// },
// "nomeParticipante[]":{
// alpha:true,
// },
// 'rg[]':{
// maxlength: 12,
// },
// agree: "required"
// },
// messages: {
// // nomeProjeto: "O nome do projeto é obrigatório.",
// // 'emailParticipante[]': "Este campo é obrigatório.",
// // 'data_de_nascimento[]': "Este campo é obrigatório.",
// // 'cpf[]': "Este campo é obrigatório.",
// // 'rg[]': {
// // required: "Este campo é obrigatório.",
// // maxlength: "Este campo deve conter no máximo 8 números."
// // },
// // 'celular[]': "Este campo é obrigatório.",
// // 'cep[]': "Este campo é obrigatório.",
// // 'uf[]': "Este campo é obrigatório.",
// // 'cidade[]': "Este campo é obrigatório.",
// // 'bairro[]': "Este campo é obrigatório.",
// // 'rua[]': "Este campo é obrigatório.",
// // 'numero[]': "Este campo é obrigatório.",
// // 'complemento[]': "Este campo é obrigatório.",
// // 'universidade[]': "Este campo é obrigatório.",
// // 'curso[]': "Este campo é obrigatório.",
// // 'turno[]': "Este campo é obrigatório.",
// // 'total_periodos[]': "Este campo é obrigatório.",
// // 'periodo_atual[]': "Este campo é obrigatório.",
// // 'ordem_prioridade[]': "Este campo é obrigatório.",
// // 'media_geral_curso[]': "Este campo é obrigatório.",
// // 'nomePlanoTrabalho[]': "Este campo é obrigatório.",
// // 'anexoPlanoTrabalho[]': "Este campo é obrigatório.",
// // grandeArea: "Escolha uma grande área.",
// // area: "Escolha uma área.",
// // linkGrupo: "Este campo é obrigatório.",
// // pontuacaoPlanilha: "Este campo é obrigatório.",
// // anexoProjeto: "Este campo é obrigatório.",
// // anexoLattesCoordenador: "Este campo é obrigatório.",
// // anexoConsuPreenchido: "Este campo é obrigatório.",
// // anexoGrupoPesquisa: "Este campo é obrigatório.",
// // anexoPlanilha: "Este campo é obrigatório.",
// // anexoComiteEtica: "Este campo é obrigatório.",
// // inputJustificativa: "Este campo é obrigatório.",
// // "nomeParticipante[]": {
// // required: "O nome do participante é obrigatório.",
// // alpha: "Não é permitido números."
// // },
// // username: {
// // required: "Please enter a username",
// // minlength: "Your username must consist of at least 2 characters"
// // },
// // password: {
// // required: "Please provide a password",
// // minlength: "Your password must be at least 5 characters long"
// // },
// // confirm_password: {
// // required: "Please provide a password",
// // minlength: "Your password must be at least 5 characters long",
// // equalTo: "Please enter the same password as above"
// // },
// // email: "Please enter a valid email address",
// // agree: "Please accept our policy"
// },
// errorElement: "em",
// errorPlacement: function ( error, element ) {
// // Add the `help-block` class to the error element
// error.addClass( "invalid-feedback" );
// if ( element.prop( "type" ) === "checkbox" ) {
// error.insertAfter( element.parent( "label" ) );
// } else {
// error.insertAfter( element );
// }
// },
// highlight: function ( element, errorClass, validClass ) {
// $( element ).parents( ".col-sm-5" ).addClass( "has-error" ).removeClass( "has-success" );
// },
// unhighlight: function (element, errorClass, validClass) {
// $( element ).parents( ".col-sm-5" ).addClass( "has-success" ).removeClass( "has-error" );
// }
// } );
} );
</script>
<script type="text/javascript">
function validarCPF(valor){
var soma = 0;
var resto;
var inputCPF = valor.match(/\d/g).join('');
if(inputCPF == '00000000000') return false;
if(inputCPF.length >11) return false;
for(i=1; i<=9; i++) soma = soma + parseInt(inputCPF.substring(i-1, i)) * (11 - i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(9, 10))) return false;
soma = 0;
for(i = 1; i <= 10; i++) soma = soma + parseInt(inputCPF.substring(i-1, i))*(12-i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(10, 11))) return false;
return true;
}
/*
* FUNCAO: Gerar as areas
*
*/
function areas() {
var grandeArea = $('#grandeArea').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id='+grandeArea ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if($('#oldArea').val() == null || $('#oldArea').val() == ""){
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldArea').val() != null && $('#oldArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#area').html(option).show();
subareas();
},
error: (data) => {
console.log(data);
}
})
}
/*
* FUNCAO: Gerar as subareas
*
*/
function subareas() {
var area = $('#area').val();
$.ajax({
type: 'POST',
url: '{{ route('subarea.consulta') }}',
data: 'id='+area ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados)=> {
if (dados.length > 0) {
if($('#oldSubArea').val() == null || $('#oldSubArea').val() == ""){
var option = '<option selected disabled>-- Subárea --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldSubArea').val() != null && $('#oldSubArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Subárea --</option>";
}
$('#subArea').html(option).show();
},
error: (dados) => {
console.log(dados);
}
})
}
/*
* FUNCAO: funcao responsavel pelo abre e fecha da area "possui autorizacoes especiais?"
*
*/
function displayAutorizacoesEspeciais(valor){
if(valor == "sim"){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else if(valor == "nao"){
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
}
/*
* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (PDF)
*
*/
function verificarArquivoAnexado_pdf(item, legenda){
if(item.files[0].type.split('/')[1] != "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo PDF! ";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else if(item.files[0].size > 2000000 && item.files[0].type.split('/')[1] == "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}
/* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (XLS, XLSX, ODS)
*
*/
function verificarArquivoAnexado_xls_xlsx_ods(item, legenda){
if(item.files[0].name.split('.')[1] == "xls" || item.files[0].name.split('.')[1] == "ods" || item.files[0].name.split('.')[1] == "xlsx"){
if(item.files[0].size > 2000000){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}else{
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo XLS, XLSX ou ODS! ";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}
}
/*
* FUNCAO: Gerar periodos 1
*
*/
// function gerarPeriodos1(select) {
// var div = select.parentElement.parentElement;
// var selectPeriodos = div.children[22].children[1];
// var html = `<option value="" disabled selected>-- TOTAL DE PERIODOS --</option>`;
// for(var i = 0; i < parseInt(select.value); i++) {
// html += `<option value="${i+1}">${i+1}º</option>`;
// }
// });
// });
// $(document).ready(function(){
// $(".cpf").change(function(){
// console.log(this.parentElement.children[0])
// if (validarCPF(retirarFormatacao(this.value))) {
// this.parentElement.children[1].style.display = "none";
// this.parentElement.children[2].style.display = "block";
// } else {
// this.parentElement.children[1].style.display = "block";
// this.parentElement.children[2].style.display = "none";
// }
// });
// });
function checarCPFdoCampo(input) {
if (input.value.length == 14) {
if (validarCPF(retirarFormatacao(input.value))) {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "block";
} else {
input.parentElement.children[1].style.display = "block";
input.parentElement.children[2].style.display = "none";
}
} else {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "none";
}
}
function validarCPF(strCPF) {
var soma;
var resto;
soma = 0;
// Verifica se foi informado todos os digitos corretamente
if (strCPF.length != 11) {
return false;
}
// Verifica se foi informada uma sequência de digitos repetidos. Ex: 111.111.111-11
if (varificarDigitos(strCPF)) {
return false;
}
// Faz o calculo para validar o CPF
for (var t = 9; t < 11; t++) {
for (var d = 0, c = 0; c < t; c++) {
d += strCPF[c] * ((t + 1) - c);
}
d = ((10 * d) % 11) % 10;
if (strCPF[c] != d) {
return false;
}
}
return true;
}
function retirarFormatacao(strCpf) {
resultado = "";
for(var i = 0; i < strCpf.length; i++) {
if (strCpf[i] != "." && strCpf[i] != "-") {
resultado += strCpf[i];
}
}
return resultado;
}
function varificarDigitos(strCpf) {
var cont = 1;
dig1 = strCpf[0];
for(var i = 1; i < strCpf.length; i++) {
if(dig1 == strCpf[i]) {
cont++;
}
}
if (cont == strCpf.length) {
return true;
}
return false;
}
function checarCpfs() {
var validacoes = document.getElementsByClassName("cpf-invalido");
var count = validacoes.length;
var quant = 0;
for(var i = 0; i < validacoes.length; i++) {
if (validacoes[i].style.display == "none") {
quant++;
}
}
if(quant == count) {
return true;
}
return false;
}
function submeterProposta() {
if (checarCpfs()) {
document.getElementById("submeterFormProposta").click();
} else {
$("#modalCpfInvalido").modal('show');
}
}
function mascaraCPF(input) {
var numeros = "0123456789.-";
var resultado = "";
if (input.value.length < 14) {
for (var i = 0; i < input.value.length; i++) {
if (numeros.indexOf(input.value[i]) > -1) {
if ((i == 2 || i == 6) && input.value[i+1] != ".") {
resultado += input.value[i] + ".";
} else if (i == 10 && input.value[i+1] != "-") {
resultado += input.value[i] + "-";
} else {
resultado += input.value[i];
}
}
}
} else {
for (var i = 0; i < 14; i++) {
resultado += input.value[i];
}
}
input.value = resultado;
}
function showInstituicao(instituicao){
var instituicaoSelect = instituicao;
var idSelect = instituicaoSelect.name;
var instituicao = document.getElementById('outra'+idSelect);
var display = document.getElementById('display'+idSelect);
if(instituicaoSelect.value === "Outra"){
display.style.display = "block";
instituicao.parentElement.style.display = '';
instituicao.value="";
}else if(instituicaoSelect.value === "UFAPE"){
display.style.display = "none";
}
}
function showCurso(curso){
var cursoSelect = curso;
var idSelect = cursoSelect.name;
var curso = document.getElementById('outro'+idSelect);
var displayCurso = document.getElementById('display'+idSelect);
if(cursoSelect.value === "Outro"){
displayCurso.style.display = "block";
curso.parentElement.style.display = '';
curso.value="";
}else{
displayCurso.style.display = "none";
}
}
</script>
@endsection
\ No newline at end of file
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Laravel') }}</title>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<!-- Styles -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="{{ asset('js/jquery-3.4.1.min.js')}}"></script>
<script src="{{ asset('js/jquery-mask-plugin.js')}}"></script>
{{-- <script src="https://cdn.jsdelivr.net/npm/jquery-mask-plugin@1.14.16/dist/jquery.mask.min.js"></script> --}}
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<link href="{{ asset('css/layout.css') }}" rel="stylesheet">
<style>
body{
background-color: #f8fafc
}
.styleRodape {
background-color: rgb(0, 140, 255);;
text-align: center;
}
.styleRodape_Imagem_ufape {
padding-top: 1.5rem;
padding-bottom: 1rem;
text-align: center;
}
.styleRodape_Imagem_lmts {
padding-top: 3rem;
padding-bottom: 2rem;
text-align: center;
}
.styleRodape_Texto {
font-size: 13px;
color: white;
text-align: center;
}
.styleRodape_Texto_Titulo {
padding-top: 1rem;
padding-bottom: 1rem;
color: white;
}
.styleRodape_Texto_Conteudo_MapaDoSite {
color: white;
font-size: 13px;
padding-top: 0.4rem;
}
.styleRodape_container {
padding-bottom: 0.1rem;
text-align: left;
}
.styleRodape_Texto_Contato {
font-size: 14px;
}
.styleRodape_linha_left {
border-left: solid;
color: white;
margin-top: 0.5rem;
padding-bottom: 1rem;
margin-left: 0.5rem;
height: 100%;
}
.styleRodape_linha_top {
border-top: solid;
color: white;
margin: 0.5rem;
}
.font-size-naturezas {
font-size: 1.2rem;
}
</style>
</head>
<body>
<div id="app">
<header>
{{-- Navbar --}}
<nav class="navbar navbar-light backgroud-color-default shadow">
<div class="container">
<div class="links-menu">
<a class="navbar-brand" href="{{route('inicial')}}">
<img id="logo-menu" src="{{ asset('img/icons/logo_submeta_pemenor.png') }}" alt="">
</a>
</div>
<div class="navbar-text">
@guest
<a href="{{ route('coord.home') }}" class="btn navbar-text negrito" style="color: rgb(0, 140, 255);">Editais</a>
<a href="#" class="btn dropdown-toggle negrito" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="color: rgb(0, 140, 255);">Login</a>
<div id="dropdown-login" class="dropdown-menu dropdown-menu-right negrito" aria-labelledby="dropdownMenuLink" style="right: 15%; width: 300px; height: auto;">
<div class="">
<form method="POST" action="{{ route('login') }}">
@csrf
<div style="padding: 20px;">
<div style="color: rgb(0, 140, 255); margin: 5px; text-align: center; font-size: 20px;">
Entrar
</div>
<input type="hidden" name="login" value="0">
<div style="margin-top: 30px;">
<label for="email" class="col-form-label negrito" style="color: rgb(0, 140, 255);">{{ __('Endereço de E-mail') }}</label>
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<label for="password" class="col-form-label negrito" style="color: rgb(0, 140, 255);">{{ __('Senha') }}</label>
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label class="form-check-label" for="remember">
{{ __('Lembrar Senha') }}
</label>
</div>
</div>
<div style="margin-top: 10px; margin-bottom: 10px;">
<button class="btn btn-login">
{{__('Entrar')}}
</button>
<br>
<a href="{{ route('password.request') }}" style="font-weight: normal; color: rgb(44, 96, 209);">{{ __('Esqueceu sua senha?')}}</a>
</div>
<div style="margin-top: 10px; margin-bottom: 10px;">
<label for="password" class="col-form-label negrito" style="color: rgb(0, 140, 255);">{{ __('Crie sua conta!') }}</label>
<br>
<a href="{{ route('register') }}">
<button type="button" class="btn btn-cadastro">
{{__('Cadastre-se')}}
</button>
</a>
</div>
</div>
</form>
</div>
</div>
<a href="{{ route('register') }}" class="btn navbar-text btn-azul-destaque negrito" style="color: rgb(0, 140, 255);">{{ __('Cadastre-se') }}</a>
@else
@if(Auth::user()->avaliadors != null)
@if(Auth::user()->avaliadors->tipo == "Interno")
<a href="" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);pointer-events: none;" >Comissão Interna</a>
@elseif(Auth::user()->avaliadors->tipo == "Externo")
<a href="" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);pointer-events: none;" >Comissão <i>Ad Hoc</i></a>
@endif
@endif
@if(Auth::user()->administradors != null)
<a href="{{route('admin.editais')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);">Editais</a>
<!--<a href="{{route('admin.showProjetos')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);" >Projetos</a> -->
<a href="{{route('notificacao.listarTrab')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);" >Notificações</a>
@elseif(Auth::user()->coordenadorComissao != null)
<a href="{{route('notificacao.listarTrab')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);" >Notificações</a>
<a href="{{ route('coordenador.editais') }}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);">Editais</a>
@else
<a href="{{route('notificacao.listarTrab')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);" >Notificações</a>
<a href="{{route('coord.home')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);">Editais</a>
@endif
<a id="navbarDropdown" class="btn navbar-text negrito dropdown-toggle" style="color: rgb(0, 140, 255);" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<div class="dropdown-menu dropdown-menu-right" style="right: 5%;" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ route('user.perfil') }}">
<img src="{{asset('img/icons/perfil.svg')}}" alt="">
{{ __('Minha Conta') }}
</a>
@if(Auth::user()->administradors != null)
<a class="dropdown-item" href="{{ route('admin.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Administrador') }}
</a>
@endif
@if(Auth::user()->AdministradorResponsavel != null)
<a class="dropdown-item" href="{{ route('adminResp.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Pro-reitor') }}
</a>
@endif
@if(Auth::user()->coordenadorComissao != null)
<a class="dropdown-item" href="{{ route('coordenador.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Coordenador') }}
</a>
@endif
@if(Auth::user()->avaliadors != null)
<a class="dropdown-item" href="{{ route('avaliador.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Avaliador') }}
</a>
@endif
@if(Auth::user()->proponentes != null)
<a class="dropdown-item" href="{{ route('proponente.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Proponente') }}
</a>
@endif
@if(Auth::user()->participantes->where('user_id', Auth::user()->id)->count() != 0)
<a class="dropdown-item" href="{{ route('participante.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Participante') }}
</a>
@endif
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
<img src="{{asset('img/icons/sign-out-alt-solid.svg')}}" alt="">
{{ __('Sair') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
@csrf
</form>
</div>
@endguest
</div>
</div>
</nav>
</header>
<section>
@hasSection ('sidebar')
@yield('sidebar')
@endif
{{-- <main class="container-fluid"> --}}
@yield('content')
{{-- </main> --}}
</section>
</div>
@hasSection ('javascript')
@yield('javascript')
@else
@endif
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
<div class="styleRodape noPrint" style="background-color:#fff">
<div class="container">
<div class="form-row justify-content-center">
<div class="col-sm-4" style="margin-top: 2.5rem;">
<img src="{{ asset('img/icons/logo_submeta_pemenor2.png') }}" alt="Logo" width="200px;">
</div>
<div class="col-sm-4 form-group" style="margin-top: 0.5rem; color:#909090">
<div style="margin-top: 5px; margin-bottom:5px">Desenvolvido por:</div>
<div class="row justify-content-center">
<div class="col-sm-5" style="margin-right: 0.5rem;">
<a href="http://ufape.edu.br/" target="_blank"><img src="{{ asset('img\icons\Logo_UFAPE_Colorida_com_Lettering.png') }}" alt="Logo" width="170px;" style="margin-right: 0.5rem;"></a>
</div>
<div class="col-sm-5">
<a href="http://lmts.uag.ufrpe.br/" target="_blank"><img src="{{ asset('img/icons/logo_ufape_color.png') }}" alt="Logo" width="160px;"></a>
</div>
</div>
</div>
<div class="col-sm-4 form-group" style="margin-top: 0.5rem; color:#909090">
<div style="margin-top: 5px; margin-bottom:5px">Redes sociais:</div>
<div class="btn-group">
<div><a href="https://www.facebook.com/LMTSUFAPE/" target="_blank"><img src="{{ asset('img/icons/icon_facebook.svg') }}" alt="Logo" width="40px;" style="margin:5px"></a></div>
<div><a href="https://www.instagram.com/lmts_ufape/" target="_blank"><img src="{{ asset('img/icons/icon_instagram.svg') }}" alt="Logo" width="40px;" style="margin:5px"></a></div>
</div>
<div><img src="{{ asset('img/icons/icon_email.svg') }}" alt="Logo" width="20px;" style="margin:5px;"> <span>lmts@ufape.edu.br</span></div>
</div>
</div>
</div>
</div>
{{-- <script src="https://code.jquery.com/jquery-3.6.0.min.js" ></script> --}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-mask-plugin@1.14.16/dist/jquery.mask.min.js"></script>
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(document).ready(function() {
$("#dropdown-login").on('click', function(event){
event.stopPropagation();
});
});
@if(old('login') != null)
$(document).ready(function() {
$('#dropdownMenuLink').click();
});
@endif
</script>
<style>
@media print {
.noPrint{
display:none;
}
.doPrint{
display:block !important;
}
}
</style>
</body>
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Laravel') }}</title>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<!-- Styles -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="{{ asset('js/jquery-3.4.1.min.js')}}"></script>
<script src="{{ asset('js/jquery-mask-plugin.js')}}"></script>
{{-- <script src="https://cdn.jsdelivr.net/npm/jquery-mask-plugin@1.14.16/dist/jquery.mask.min.js"></script> --}}
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<link href="{{ asset('css/layout.css') }}" rel="stylesheet">
@yield('styles')
<style>
body{
background-color: #f8fafc
}
.styleRodape {
background-color: rgb(0, 140, 255);;
text-align: center;
}
.styleRodape_Imagem_ufape {
padding-top: 1.5rem;
padding-bottom: 1rem;
text-align: center;
}
.styleRodape_Imagem_lmts {
padding-top: 3rem;
padding-bottom: 2rem;
text-align: center;
}
.styleRodape_Texto {
font-size: 13px;
color: white;
text-align: center;
}
.styleRodape_Texto_Titulo {
padding-top: 1rem;
padding-bottom: 1rem;
color: white;
}
.styleRodape_Texto_Conteudo_MapaDoSite {
color: white;
font-size: 13px;
padding-top: 0.4rem;
}
.styleRodape_container {
padding-bottom: 0.1rem;
text-align: left;
}
.styleRodape_Texto_Contato {
font-size: 14px;
}
.styleRodape_linha_left {
border-left: solid;
color: white;
margin-top: 0.5rem;
padding-bottom: 1rem;
margin-left: 0.5rem;
height: 100%;
}
.styleRodape_linha_top {
border-top: solid;
color: white;
margin: 0.5rem;
}
.font-size-naturezas {
font-size: 1.2rem;
}
</style>
</head>
<body>
<div id="app">
<header>
{{-- Navbar --}}
<nav class="navbar navbar-light backgroud-color-default shadow">
<div class="container">
<div class="links-menu">
<a class="navbar-brand" href="{{route('inicial')}}">
<img id="logo-menu" src="{{ asset('img/icons/logo_submeta_pemenor.png') }}" alt="">
</a>
</div>
<div class="navbar-text">
@guest
<a href="{{ route('coord.home') }}" class="btn navbar-text negrito" style="color: rgb(0, 140, 255);">Editais</a>
<a href="#" class="btn dropdown-toggle negrito" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="color: rgb(0, 140, 255);">Login</a>
<div id="dropdown-login" class="dropdown-menu dropdown-menu-right negrito" aria-labelledby="dropdownMenuLink" style="right: 15%; width: 300px; height: auto;">
<div class="">
<form method="POST" action="{{ route('login') }}">
@csrf
<div style="padding: 20px;">
<div style="color: rgb(0, 140, 255); margin: 5px; text-align: center; font-size: 20px;">
Entrar
</div>
<input type="hidden" name="login" value="0">
<div style="margin-top: 30px;">
<label for="email" class="col-form-label negrito" style="color: rgb(0, 140, 255);">{{ __('Endereço de E-mail') }}</label>
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<label for="password" class="col-form-label negrito" style="color: rgb(0, 140, 255);">{{ __('Senha') }}</label>
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label class="form-check-label" for="remember">
{{ __('Lembrar Senha') }}
</label>
</div>
</div>
<div style="margin-top: 10px; margin-bottom: 10px;">
<button class="btn btn-login">
{{__('Entrar')}}
</button>
<br>
<a href="{{ route('password.request') }}" style="font-weight: normal; color: rgb(44, 96, 209);">{{ __('Esqueceu sua senha?')}}</a>
</div>
<div style="margin-top: 10px; margin-bottom: 10px;">
<label for="password" class="col-form-label negrito" style="color: rgb(0, 140, 255);">{{ __('Crie sua conta!') }}</label>
<br>
<a href="{{ route('register') }}">
<button type="button" class="btn btn-cadastro">
{{__('Cadastre-se')}}
</button>
</a>
</div>
</div>
</form>
</div>
</div>
<a href="{{ route('register') }}" class="btn navbar-text btn-azul-destaque negrito" style="color: rgb(0, 140, 255);">{{ __('Cadastre-se') }}</a>
@else
@if(Auth::user()->avaliadors != null)
@if(Auth::user()->avaliadors->tipo == "Interno")
<a href="" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);pointer-events: none;" >Comissão Interna</a>
@elseif(Auth::user()->avaliadors->tipo == "Externo")
<a href="" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);pointer-events: none;" >Comissão <i>Ad Hoc</i></a>
@endif
@endif
@if(Auth::user()->administradors != null)
<a href="{{route('admin.editais')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);">Editais</a>
<!--<a href="{{route('admin.showProjetos')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);" >Projetos</a> -->
<a href="{{route('notificacao.listarTrab')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);" >Notificações</a>
@elseif(Auth::user()->coordenadorComissao != null)
<a href="{{route('notificacao.listarTrab')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);" >Notificações</a>
<a href="{{ route('coordenador.editais') }}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);">Editais</a>
@else
<a href="{{route('notificacao.listarTrab')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);" >Notificações</a>
<a href="{{route('coord.home')}}" class="btn navbar-text negrito " style="color: rgb(0, 140, 255);">Editais</a>
@endif
<a id="navbarDropdown" class="btn navbar-text negrito dropdown-toggle" style="color: rgb(0, 140, 255);" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<div class="dropdown-menu dropdown-menu-right" style="right: 5%;" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ route('user.perfil') }}">
<img src="{{asset('img/icons/perfil.svg')}}" alt="">
{{ __('Minha Conta') }}
</a>
@if(Auth::user()->administradors != null)
<a class="dropdown-item" href="{{ route('admin.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Administrador') }}
</a>
@endif
@if(Auth::user()->AdministradorResponsavel != null)
<a class="dropdown-item" href="{{ route('adminResp.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Pro-reitor') }}
</a>
@endif
@if(Auth::user()->coordenadorComissao != null)
<a class="dropdown-item" href="{{ route('coordenador.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Coordenador') }}
</a>
@endif
@if(Auth::user()->avaliadors != null)
<a class="dropdown-item" href="{{ route('avaliador.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Avaliador') }}
</a>
@endif
@if(Auth::user()->proponentes != null)
<a class="dropdown-item" href="{{ route('proponente.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Proponente') }}
</a>
@endif
@if(Auth::user()->participantes->where('user_id', Auth::user()->id)->count() != 0)
<a class="dropdown-item" href="{{ route('participante.index') }}">
<img src="{{asset('img/icons/file-alt-regular-black.svg')}}" alt="">
{{ __('Perfil Participante') }}
</a>
@endif
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
<img src="{{asset('img/icons/sign-out-alt-solid.svg')}}" alt="">
{{ __('Sair') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
@csrf
</form>
</div>
@endguest
</div>
</div>
</nav>
</header>
<section>
@hasSection ('sidebar')
@yield('sidebar')
@endif
{{-- <main class="container-fluid"> --}}
@yield('content')
{{-- </main> --}}
</section>
</div>
@hasSection ('javascript')
@yield('javascript')
@else
@endif
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
<div class="styleRodape noPrint" style="background-color:#fff">
<div class="container">
<div class="form-row justify-content-center">
<div class="col-sm-4" style="margin-top: 2.5rem;">
<img src="{{ asset('img/icons/logo_submeta_pemenor2.png') }}" alt="Logo" width="200px;">
</div>
<div class="col-sm-4 form-group" style="margin-top: 0.5rem; color:#909090">
<div style="margin-top: 5px; margin-bottom:5px">Desenvolvido por:</div>
<div class="row justify-content-center">
<div class="col-sm-5" style="margin-right: 0.5rem;">
<a href="http://ufape.edu.br/" target="_blank"><img src="{{ asset('img\icons\Logo_UFAPE_Colorida_com_Lettering.png') }}" alt="Logo" width="170px;" style="margin-right: 0.5rem;"></a>
</div>
<div class="col-sm-5">
<a href="http://lmts.uag.ufrpe.br/" target="_blank"><img src="{{ asset('img/icons/logo_ufape_color.png') }}" alt="Logo" width="160px;"></a>
</div>
</div>
</div>
<div class="col-sm-4 form-group" style="margin-top: 0.5rem; color:#909090">
<div style="margin-top: 5px; margin-bottom:5px">Redes sociais:</div>
<div class="btn-group">
<div><a href="https://www.facebook.com/LMTSUFAPE/" target="_blank"><img src="{{ asset('img/icons/icon_facebook.svg') }}" alt="Logo" width="40px;" style="margin:5px"></a></div>
<div><a href="https://www.instagram.com/lmts_ufape/" target="_blank"><img src="{{ asset('img/icons/icon_instagram.svg') }}" alt="Logo" width="40px;" style="margin:5px"></a></div>
</div>
<div><img src="{{ asset('img/icons/icon_email.svg') }}" alt="Logo" width="20px;" style="margin:5px;"> <span>lmts@ufape.edu.br</span></div>
</div>
</div>
</div>
</div>
{{-- <script src="https://code.jquery.com/jquery-3.6.0.min.js" ></script> --}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery-mask-plugin@1.14.16/dist/jquery.mask.min.js"></script>
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(document).ready(function() {
$("#dropdown-login").on('click', function(event){
event.stopPropagation();
});
});
@if(old('login') != null)
$(document).ready(function() {
$('#dropdownMenuLink').click();
});
@endif
</script>
<style>
@media print {
.noPrint{
display:none;
}
.doPrint{
display:block !important;
}
}
</style>
</body>
</html>
\ No newline at end of file
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-md-11">
<h5 style="color: #234B8B; font-weight: bold">Integrante(s)</h5>
</div>
<div class="col-md-1 text-sm-right">
<a type="button" value="{{ $edital->id }}" id="atribuir1" data-toggle="modal" data-target="#modalIntegrante">
<img class="" src="{{asset('img/icons/add.ico')}}" style="width:30px" alt="">
</a>
</div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row" id="integrante">
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modalIntegrante" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Adicionar Integrante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="form-row" style="padding: 30px;">
<div class="col-md-8">
<label for="cpf_consulta">CPF:</label>
<input type="text" id="cpf_consulta" name="cpf_consulta" class="form-control" onkeyup="mask_cpf();">
</div>
<div class="col-md-4 mt-4">
<button type="button" class="btn btn-primary" onclick="preencherUsuarioExistente()">Adicionar</button>
</div>
</div>
<div class="form-row" style="padding: 0px 30px 30px 30px;">
<label for="funcao_participante">Função do Participante:</label>
<select name="" id="funcao_participante" class="form-control">
@foreach($funcaoParticipantes as $funcao)
<option value="{{$funcao->id}}">{{ $funcao->nome }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
<div class="modal fade" id="aviso-modal-usuario-adicionado" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #32CD32;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Sucesso!</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Integrante adicionado com sucesso
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<!-- MODAL DE ERRO -->
<div class="modal fade" id="aviso-modal-usuario-nao-existe" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #dc3545;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" >
<span id="texto-erro">CPF não consta no sistema!</span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<script>
function mask_cpf() {
$("#cpf_consulta").keydown(function(){
try {
$("#cpf_consulta").unmask();
} catch (e) {}
$("#cpf_consulta").mask("999.999.999-99");
// ajustando foco
var elem = this;
setTimeout(function(){
// mudo a posição do seletor
elem.selectionStart = elem.selectionEnd = 10000;
}, 0);
// reaplico o valor para mudar o foco
var currentValue = $(this).val();
$(this).val('');
$(this).val(currentValue);
});
}
function removerIntegrante(id) {
$(`#integrante${id}`).remove()
}
function preencherUsuarioExistente() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{ route('trabalho.buscarUsuario') }}',
type: 'POST',
dataType: 'json',
data: {
'cpf_consulta': $('#cpf_consulta').val(),
'funcao': $('#funcao_participante').val()
},
success: function (data) {
console.log(data)
if(data == 'inexistente' || $('#cpf_consulta').val() == ""){
$('#texto-erro').html('CPF não consta no sistema!');
exibirModalUsuarioInexistente();
}else {
exibirUsuarioAdicionado();
$('#integrante').append(`
<div id="integrante${data[0]['id']}" class="col-md-6">
<div class="row">
<input name="integrantes[]" type="text" value="${data[0]['id']},${$('#funcao_participante').val()}" hidden>
<div class="col-md-2" style="display: flex; align-items: center;">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-md-4 mb-1">
<strong>Nome:</strong> ${data[0]['name']}
<strong>CPF:</strong> ${data[0]['cpf']}
<strong>Função:</strong> ${data[1]['nome']}
<button type="button" class="btn btn-danger" onclick="removerIntegrante(${data[0]['id']})">Remover</button>
</div>
</div>
</div>
`)
}
}
});
}
function exibirModalUsuarioInexistente() {
$('#aviso-modal-usuario-nao-existe').modal('show');
}
function exibirUsuarioAdicionado() {
$('#aviso-modal-usuario-adicionado').modal('show');;
}
$(document).ready(function() {
@foreach($trabalhos_user as $trabalho_user)
$('#integrante').append(`
<div id="integrante{{$trabalho_user->id}}" class="col-md-6">
<div class="row">
<input name="integrantesExistentes[]" type="text" value="{{ $trabalho_user->user->id }}" hidden>
<div class="col-md-2" style="display: flex; align-items: center;">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-md-4 mb-1">
<strong>Nome:</strong> {{{$trabalho_user->user->name}}}
<strong>CPF:</strong> {{ $trabalho_user->user->cpf }}
<strong>Função:</strong> {{ $trabalho_user->funcao->nome }}
<button type="button" class="btn btn-danger" onclick="removerIntegrante({{$trabalho_user->id}})">Remover</button>
</div>
</div>
</div>
`)
@endforeach
});
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-md-11">
<h5 style="color: #234B8B; font-weight: bold">Integrante(s)</h5>
</div>
<div class="col-md-1 text-sm-right">
<a type="button" value="{{ $edital->id }}" id="atribuir1" data-toggle="modal" data-target="#modalIntegrante">
<img class="" src="{{asset('img/icons/add.ico')}}" style="width:30px" alt="">
</a>
</div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row" id="integrante">
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modalIntegrante" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-xl">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Adicionar Integrante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="form-row" style="padding: 30px;">
<div class="col-md-8">
<label for="cpf_consulta">CPF:</label>
<input type="text" id="cpf_consulta" name="cpf_consulta" class="form-control" onkeyup="mask_cpf();">
</div>
<div class="col-md-4 mt-4">
<button type="button" class="btn btn-primary" onclick="preencherUsuarioExistente()">Adicionar</button>
</div>
</div>
<div class="form-row" style="padding: 0px 30px 30px 30px;">
<label for="funcao_participante">Função do Participante:</label>
<select name="" id="funcao_participante" class="form-control">
@foreach($funcaoParticipantes as $funcao)
<option value="{{$funcao->id}}">{{ $funcao->nome }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
<div class="modal fade" id="aviso-modal-usuario-adicionado" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #32CD32;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Sucesso!</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Integrante adicionado com sucesso
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<!-- MODAL DE ERRO -->
<div class="modal fade" id="aviso-modal-usuario-nao-existe" data-backdrop="static" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" style="background-color: #dc3545;">
<h5 class="modal-title" id="exampleModalLabel" style="color: white;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" >
<span id="texto-erro">CPF não consta no sistema!</span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-color-dafault" data-dismiss="modal">Ok</button>
</div>
</div>
</div>
</div>
<script>
function mask_cpf() {
$("#cpf_consulta").keydown(function(){
try {
$("#cpf_consulta").unmask();
} catch (e) {}
$("#cpf_consulta").mask("999.999.999-99");
// ajustando foco
var elem = this;
setTimeout(function(){
// mudo a posição do seletor
elem.selectionStart = elem.selectionEnd = 10000;
}, 0);
// reaplico o valor para mudar o foco
var currentValue = $(this).val();
$(this).val('');
$(this).val(currentValue);
});
}
function removerIntegrante(id) {
$(`#integrante${id}`).remove()
}
function preencherUsuarioExistente() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '{{ route('trabalho.buscarUsuario') }}',
type: 'POST',
dataType: 'json',
data: {
'cpf_consulta': $('#cpf_consulta').val(),
'funcao': $('#funcao_participante').val()
},
success: function (data) {
console.log(data)
if(data == 'inexistente' || $('#cpf_consulta').val() == ""){
$('#texto-erro').html('CPF não consta no sistema!');
exibirModalUsuarioInexistente();
}else {
exibirUsuarioAdicionado();
$('#integrante').append(`
<div id="integrante${data[0]['id']}" class="col-md-6">
<div class="row">
<input name="integrantes[]" type="text" value="${data[0]['id']},${$('#funcao_participante').val()}" hidden>
<div class="col-md-2" style="display: flex; align-items: center;">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-md-4 mb-1">
<strong>Nome:</strong> ${data[0]['name']}
<strong>CPF:</strong> ${data[0]['cpf']}
<strong>Função:</strong> ${data[1]['nome']}
<button type="button" class="btn btn-danger" onclick="removerIntegrante(${data[0]['id']})">Remover</button>
</div>
</div>
</div>
`)
}
}
});
}
function exibirModalUsuarioInexistente() {
$('#aviso-modal-usuario-nao-existe').modal('show');
}
function exibirUsuarioAdicionado() {
$('#aviso-modal-usuario-adicionado').modal('show');;
}
$(document).ready(function() {
@foreach($trabalhos_user as $trabalho_user)
$('#integrante').append(`
<div id="integrante{{$trabalho_user->id}}" class="col-md-6">
<div class="row">
<input name="integrantesExistentes[]" type="text" value="{{ $trabalho_user->user->id }}" hidden>
<div class="col-md-2" style="display: flex; align-items: center;">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-md-4 mb-1">
<strong>Nome:</strong> {{{$trabalho_user->user->name}}}
<strong>CPF:</strong> {{ $trabalho_user->user->cpf }}
<strong>Função:</strong> {{ $trabalho_user->funcao->nome }}
<button type="button" class="btn btn-danger" onclick="removerIntegrante({{$trabalho_user->id}})">Remover</button>
</div>
</div>
</div>
`)
@endforeach
});
</script>
\ No newline at end of file
@extends('layouts.app')
@section('content')
<div>
{{-- action="{{route('trabalho.store')}}" --}}
<form method="POST" id="updateProjetoForm" action="{{route('trabalho.update', ['id' => $projeto->id])}}" enctype="multipart/form-data" >
@csrf
<input type="hidden" name="editalId" value="{{$edital->id}}">
<div class="container">
{{-- @dd($errors->get('name.*')) --}}
{{-- @dd($errors->has('cpf.*')) --}}
{{-- @dd($errors->getBags()['default']->keys()) --}}
@if (session('mensagem'))
<div class="alert alert-warning" role="alert">
{{ session('mensagem') }}
</div>
@endif
<!-- @if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif -->
<div class="row justify-content-center">
@include('projeto.editaFormulario.projeto')
@include('projeto.editaFormulario.proponente')
@include('projeto.editaFormulario.participantes')
@if($edital->natureza_id == 3)
@include('projeto.editaFormulario.integrantes')
@endif
@include('projeto.editaFormulario.anexos')
@include('projeto.editaFormulario.finalizar')
</div>
</div>
</form>
<div id="participanteFirst" >
@component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ])
@endcomponent
</div>
<!-- Modal de Aviso Edit -->
<div class="modal fade" id="exampleModalAnexarDocumento" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" id="idCorCabecalhoModalDocumento">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12" style="font-family: 'Roboto', sans-serif;"><label id="idTituloDaMensagemModalDocumento"></label></div>
<div class="col-12" style="font-family: 'Roboto', sans-serif; margin-top:10px;">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal"style="width:200px;">Fechar</button>
</div>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="modalCpfInvalido" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: red;">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Existe um CPF inválido em um dos discentes por favor corrija para continuar.
</div>
{{-- <div class="modal-footer">
{{-- <button type="button" class="btn btn-secondary"></button>
{{-- <button type="button" class="btn btn-primary">Certo</button>
</div> --}}
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script>
if(document.getElementById("radioSim").checked){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else{
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
let buttonSubmit = document.getElementById('idButtonSubmitProjeto');
let buttonRascunho = document.getElementById('idButtonSubmitRascunho');
let parts = document.getElementById('participante');
let partsFirst = document.getElementById('participanteFirst');
const participante = partsFirst.firstElementChild;
let contador = 0;
buttonSubmit.addEventListener('click', (e)=>{
$('.collapse').addClass('show')
})
buttonRascunho.addEventListener('click', (e)=>{
$('.collapse').addClass('show');
const input = '<input id="input_rascunho" type="hidden" name="rascunho" value="true">';
$("#updateProjetoForm").append(input);
})
function gerarPeriodo(e){
var select = e.parentElement.parentElement.nextElementSibling;
selectPeriodos = select.children[0].children[1];
var html = `<option value="" disabled selected>-- TOTAL DE PERIODOS --</option>`;
for(var i = 0; i < parseInt(e.value); i++) {
html += `<option value="${i+1}">${i+1}º</option>`;
}
$(selectPeriodos).html('');
$(selectPeriodos).append(html);
}
function removerPart(e){
console.log(e)
if(e.parentElement.parentElement){
if(parts.children.length <= 1){
}else{
parts.removeChild(e.parentElement.parentElement);
//contador--;
}
}
}
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$("input.cpf:text").mask("000.000.000-00");
$("input.celular:text").mask(SPMaskBehavior, spOptions);
$("input.cep:text").mask("00000-000");
buttonMais.addEventListener("click", (e) => {
if(parts.children.length >= "{{ $edital->numParticipantes }}"){
alert('Limite de participante.')
}else{
contador++;
var cln = participante.cloneNode(true);
cln.setAttribute('style', " ");
var id = cln.children[2].firstElementChild.id;
var id2 = cln.children[0].firstElementChild.id;
cln.children[2].firstElementChild.setAttribute('id', id + contador);
cln.children[0].firstElementChild.setAttribute('href', "#collapseParticipante" + contador);
cln.children[0].firstElementChild.setAttribute('id', id2 + contador);
for (i = 0; i < cln.children.length; i++) {
for (let index = 0; index < cln.children[i].querySelectorAll('input').length; index++) {
let input = cln.children[i].querySelectorAll('input')[index];
let name = input.getAttributeNode("name").value;
name = name.replace("[]", "");
input.getAttributeNode("name").value = name + '['+ contador +']';
let select = cln.children[i].querySelectorAll('select')[index];
if(select){
let selectName = select.getAttributeNode("name").value;
selectName = selectName.replace("[", "");
selectName = selectName.replace("]", "");
select.getAttributeNode("name").value = selectName + '['+ contador +']';
}
}
}
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
parts.appendChild(cln);
$("input.cpf:text").val("").mask("000.000.000-00");
$("input.celular:text").val("").mask(SPMaskBehavior, spOptions);
$("input.cep:text").val("").mask("00000-000");
}
});
function marcar(id){
let nome = document.getElementById("nome"+id);
let linkNome = document.getElementById("nomePart"+(id+1));
let linkTituloProj = document.getElementById("tituloProj"+(id+1));
let planoTrabalho = document.getElementById("nomePlanoTrabalho"+id);
if(nome.value != ""){
if(planoTrabalho.value != ""){
linkNome.innerText = `Nome: ${nome.value} \n Plano: ${planoTrabalho.value}`;
}else {
linkNome.innerText = `Nome: ${nome.value}`;
}
}
if(id >=1){
document.getElementById("cancelar"+(id-1)).setAttribute("disabled", true);
}
document.getElementById("checkB"+id).checked = true;
$("#atribuir1").attr('data-target','#exampleModal'+(id+1));
document.getElementById("part"+id).removeAttribute("hidden");
document.getElementById("exampleModal"+id).modal('hide');
}
function desmarcar(id){
if(id >= 1){;
document.getElementById("cancelar"+(id-1)).removeAttribute("disabled");
}
document.getElementById("checkB"+id).checked = false;
document.getElementById("part"+id).setAttribute("hidden",true);
$("#atribuir1").attr('data-target','#exampleModal'+(id));
document.getElementById("exampleModal"+id).modal('hide');
}
</script>
<script>
$.validator.addMethod("alpha", function(value, element) {
return this.optional(element) || value == value.match(/^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$/);
});
$('input.cep:text').mask('00000-000');
//$('input.cpf:text').mask('000.000.000-00');
$('.numero').mask('0000000000000');
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$('.celular').mask(SPMaskBehavior, spOptions);
$('.sus').mask('000 0000 0000 0000');
$("input[type='file']").on("change", function () {
if(this.files[0].size > 2000000) {
// console.log($(this).parents( ".col-sm-5" ))
alert("O tamanho do arquivo deve ser menor que 2MB!");
$(this).val('');
}
});
// $.validator.setDefaults( {
// submitHandler: function (form) {
// form.submit();
// }
// } );
// jQuery.extend(jQuery.validator.messages, {
// required: "Este campo &eacute; requerido.",
// remote: "Por favor, corrija este campo.",
// email: "Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.",
// url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
// date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
// dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
// number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.",
// digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
// creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
// equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
// accept: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
// maxlength: jQuery.validator.format("Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres."),
// minlength: jQuery.validator.format("Por favor, forne&ccedil;a ao menos {0} caracteres."),
// rangelength: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento."),
// range: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1}."),
// max: jQuery.validator.format("Por favor, forne&ccedil;a um valor menor ou igual a {0}."),
// min: jQuery.validator.format("Por favor, forne&ccedil;a um valor maior ou igual a {0}.")
// });
// $( "#criarProjetoForm" ).validate( {
// lang: 'PT_BR',
// rules: {
// firstname: "required",
// username: {
// required: true,
// minlength: 2
// },
// password: {
// required: true,
// minlength: 5
// },
// confirm_password: {
// required: true,
// minlength: 5,
// equalTo: "#password"
// },
// email: {
// required: true,
// email: true,
// },
// "complemento[]":{
// },
// "nomeParticipante[]":{
// alpha:true,
// },
// 'rg[]':{
// maxlength: 12,
// },
// agree: "required"
// },
// messages: {
// // nomeProjeto: "O nome do projeto é obrigatório.",
// // 'emailParticipante[]': "Este campo é obrigatório.",
// // 'data_de_nascimento[]': "Este campo é obrigatório.",
// // 'cpf[]': "Este campo é obrigatório.",
// // 'rg[]': {
// // required: "Este campo é obrigatório.",
// // maxlength: "Este campo deve conter no máximo 8 números."
// // },
// // 'celular[]': "Este campo é obrigatório.",
// // 'cep[]': "Este campo é obrigatório.",
// // 'uf[]': "Este campo é obrigatório.",
// // 'cidade[]': "Este campo é obrigatório.",
// // 'bairro[]': "Este campo é obrigatório.",
// // 'rua[]': "Este campo é obrigatório.",
// // 'numero[]': "Este campo é obrigatório.",
// // 'complemento[]': "Este campo é obrigatório.",
// // 'universidade[]': "Este campo é obrigatório.",
// // 'curso[]': "Este campo é obrigatório.",
// // 'turno[]': "Este campo é obrigatório.",
// // 'total_periodos[]': "Este campo é obrigatório.",
// // 'periodo_atual[]': "Este campo é obrigatório.",
// // 'ordem_prioridade[]': "Este campo é obrigatório.",
// // 'media_geral_curso[]': "Este campo é obrigatório.",
// // 'nomePlanoTrabalho[]': "Este campo é obrigatório.",
// // 'anexoPlanoTrabalho[]': "Este campo é obrigatório.",
// // grandeArea: "Escolha uma grande área.",
// // area: "Escolha uma área.",
// // linkGrupo: "Este campo é obrigatório.",
// // pontuacaoPlanilha: "Este campo é obrigatório.",
// // anexoProjeto: "Este campo é obrigatório.",
// // anexoLattesCoordenador: "Este campo é obrigatório.",
// // anexoConsuPreenchido: "Este campo é obrigatório.",
// // anexoGrupoPesquisa: "Este campo é obrigatório.",
// // anexoPlanilha: "Este campo é obrigatório.",
// // anexoComiteEtica: "Este campo é obrigatório.",
// // inputJustificativa: "Este campo é obrigatório.",
// // "nomeParticipante[]": {
// // required: "O nome do participante é obrigatório.",
// // alpha: "Não é permitido números."
// // },
// // username: {
// // required: "Please enter a username",
// // minlength: "Your username must consist of at least 2 characters"
// // },
// // password: {
// // required: "Please provide a password",
// // minlength: "Your password must be at least 5 characters long"
// // },
// // confirm_password: {
// // required: "Please provide a password",
// // minlength: "Your password must be at least 5 characters long",
// // equalTo: "Please enter the same password as above"
// // },
// // email: "Please enter a valid email address",
// // agree: "Please accept our policy"
// },
// errorElement: "em",
// errorPlacement: function ( error, element ) {
// // Add the `help-block` class to the error element
// error.addClass( "invalid-feedback" );
// if ( element.prop( "type" ) === "checkbox" ) {
// error.insertAfter( element.parent( "label" ) );
// } else {
// error.insertAfter( element );
// }
// },
// highlight: function ( element, errorClass, validClass ) {
// $( element ).parents( ".col-sm-5" ).addClass( "has-error" ).removeClass( "has-success" );
// },
// unhighlight: function (element, errorClass, validClass) {
// $( element ).parents( ".col-sm-5" ).addClass( "has-success" ).removeClass( "has-error" );
// }
// } );
} );
</script>
<script type="text/javascript">
function validarCPF(valor){
var soma = 0;
var resto;
var inputCPF = valor.match(/\d/g).join('');
if(inputCPF == '00000000000') return false;
if(inputCPF.length >11) return false;
for(i=1; i<=9; i++) soma = soma + parseInt(inputCPF.substring(i-1, i)) * (11 - i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(9, 10))) return false;
soma = 0;
for(i = 1; i <= 10; i++) soma = soma + parseInt(inputCPF.substring(i-1, i))*(12-i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(10, 11))) return false;
return true;
}
/*
* FUNCAO: Gerar as areas
*
*/
function areas() {
var grandeArea = $('#grandeArea').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id='+grandeArea ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if($('#oldArea').val() == null || $('#oldArea').val() == ""){
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldArea').val() != null && $('#oldArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#area').html(option).show();
subareas();
},
error: (data) => {
console.log(data);
}
})
}
/*
* FUNCAO: Gerar as subareas
*
*/
function subareas() {
var area = $('#area').val();
$.ajax({
type: 'POST',
url: '{{ route('subarea.consulta') }}',
data: 'id='+area ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados)=> {
if (dados.length > 0) {
if($('#oldSubArea').val() == null || $('#oldSubArea').val() == ""){
var option = '<option selected disabled>-- Subárea --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldSubArea').val() != null && $('#oldSubArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Subárea --</option>";
}
$('#subArea').html(option).show();
},
error: (dados) => {
console.log(dados);
}
})
}
/*
* FUNCAO: funcao responsavel pelo abre e fecha da area "possui autorizacoes especiais?"
*
*/
function displayAutorizacoesEspeciais(valor){
if(valor == "sim"){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else if(valor == "nao"){
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
}
/*
* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (PDF)
*
*/
function verificarArquivoAnexado_pdf(item, legenda){
if(item.files[0].type.split('/')[1] != "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo PDF! ";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else if(item.files[0].size > 2000000 && item.files[0].type.split('/')[1] == "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}
/* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (XLS, XLSX, ODS)
*
*/
function verificarArquivoAnexado_xls_xlsx_ods(item, legenda){
if(item.files[0].name.split('.')[1] == "xls" || item.files[0].name.split('.')[1] == "ods" || item.files[0].name.split('.')[1] == "xlsx"){
if(item.files[0].size > 2000000){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}else{
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo XLS, XLSX ou ODS! ";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}
}
/*
* FUNCAO: Gerar periodos 1
*
*/
// function gerarPeriodos1(select) {
// var div = select.parentElement.parentElement;
// var selectPeriodos = div.children[22].children[1];
// var html = `<option value="" disabled selected>-- TOTAL DE PERIODOS --</option>`;
// for(var i = 0; i < parseInt(select.value); i++) {
// html += `<option value="${i+1}">${i+1}º</option>`;
// }
// });
// });
// $(document).ready(function(){
// $(".cpf").change(function(){
// console.log(this.parentElement.children[0])
// if (validarCPF(retirarFormatacao(this.value))) {
// this.parentElement.children[1].style.display = "none";
// this.parentElement.children[2].style.display = "block";
// } else {
// this.parentElement.children[1].style.display = "block";
// this.parentElement.children[2].style.display = "none";
// }
// });
// });
function checarCPFdoCampo(input) {
if (input.value.length == 14) {
if (validarCPF(retirarFormatacao(input.value))) {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "block";
} else {
input.parentElement.children[1].style.display = "block";
input.parentElement.children[2].style.display = "none";
}
} else {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "none";
}
}
function validarCPF(strCPF) {
var soma;
var resto;
soma = 0;
// Verifica se foi informado todos os digitos corretamente
if (strCPF.length != 11) {
return false;
}
// Verifica se foi informada uma sequência de digitos repetidos. Ex: 111.111.111-11
if (varificarDigitos(strCPF)) {
return false;
}
// Faz o calculo para validar o CPF
for (var t = 9; t < 11; t++) {
for (var d = 0, c = 0; c < t; c++) {
d += strCPF[c] * ((t + 1) - c);
}
d = ((10 * d) % 11) % 10;
if (strCPF[c] != d) {
return false;
}
}
return true;
}
function retirarFormatacao(strCpf) {
resultado = "";
for(var i = 0; i < strCpf.length; i++) {
if (strCpf[i] != "." && strCpf[i] != "-") {
resultado += strCpf[i];
}
}
return resultado;
}
function varificarDigitos(strCpf) {
var cont = 1;
dig1 = strCpf[0];
for(var i = 1; i < strCpf.length; i++) {
if(dig1 == strCpf[i]) {
cont++;
}
}
if (cont == strCpf.length) {
return true;
}
return false;
}
function checarCpfs() {
var validacoes = document.getElementsByClassName("cpf-invalido");
var count = validacoes.length;
var quant = 0;
for(var i = 0; i < validacoes.length; i++) {
if (validacoes[i].style.display == "none") {
quant++;
}
}
if(quant == count) {
return true;
}
return false;
}
function submeterProposta() {
if (checarCpfs()) {
document.getElementById("submeterFormProposta").click();
} else {
$("#modalCpfInvalido").modal('show');
}
}
function mascaraCPF(input) {
var numeros = "0123456789.-";
var resultado = "";
if (input.value.length < 14) {
for (var i = 0; i < input.value.length; i++) {
if (numeros.indexOf(input.value[i]) > -1) {
if ((i == 2 || i == 6) && input.value[i+1] != ".") {
resultado += input.value[i] + ".";
} else if (i == 10 && input.value[i+1] != "-") {
resultado += input.value[i] + "-";
} else {
resultado += input.value[i];
}
}
}
} else {
for (var i = 0; i < 14; i++) {
resultado += input.value[i];
}
}
input.value = resultado;
}
function showInstituicao(instituicao){
var instituicaoSelect = instituicao;
var idSelect = instituicaoSelect.name;
var instituicao = document.getElementById('outra'+idSelect);
var display = document.getElementById('display'+idSelect);
if(instituicaoSelect.value === "Outra"){
display.style.display = "block";
instituicao.parentElement.style.display = '';
//instituicao.value="";
}else{
display.style.display = "none";
}
}
function showCurso(curso){
var cursoSelect = curso;
var idSelect = cursoSelect.name;
var curso = document.getElementById('outro'+idSelect);
var displayCurso = document.getElementById('display'+idSelect);
if(cursoSelect.value === "Outro"){
displayCurso.style.display = "block";
curso.parentElement.style.display = '';
//curso.value="";
}else{
displayCurso.style.display = "none";
}
}
</script>
@extends('layouts.app')
@section('content')
<div>
{{-- action="{{route('trabalho.store')}}" --}}
<form method="POST" id="updateProjetoForm" action="{{route('trabalho.update', ['id' => $projeto->id])}}" enctype="multipart/form-data" >
@csrf
<input type="hidden" name="editalId" value="{{$edital->id}}">
<div class="container">
{{-- @dd($errors->get('name.*')) --}}
{{-- @dd($errors->has('cpf.*')) --}}
{{-- @dd($errors->getBags()['default']->keys()) --}}
@if (session('mensagem'))
<div class="alert alert-warning" role="alert">
{{ session('mensagem') }}
</div>
@endif
<!-- @if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif -->
<div class="row justify-content-center">
@include('projeto.editaFormulario.projeto')
@include('projeto.editaFormulario.proponente')
@include('projeto.editaFormulario.participantes')
@if($edital->natureza_id == 3)
@include('projeto.editaFormulario.integrantes')
@endif
@include('projeto.editaFormulario.anexos')
@include('projeto.editaFormulario.finalizar')
</div>
</div>
</form>
<div id="participanteFirst" >
@component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ])
@endcomponent
</div>
<!-- Modal de Aviso Edit -->
<div class="modal fade" id="exampleModalAnexarDocumento" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" id="idCorCabecalhoModalDocumento">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12" style="font-family: 'Roboto', sans-serif;"><label id="idTituloDaMensagemModalDocumento"></label></div>
<div class="col-12" style="font-family: 'Roboto', sans-serif; margin-top:10px;">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal"style="width:200px;">Fechar</button>
</div>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="modalCpfInvalido" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: red;">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Existe um CPF inválido em um dos discentes por favor corrija para continuar.
</div>
{{-- <div class="modal-footer">
{{-- <button type="button" class="btn btn-secondary"></button>
{{-- <button type="button" class="btn btn-primary">Certo</button>
</div> --}}
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script>
if(document.getElementById("radioSim").checked){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else{
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
let buttonSubmit = document.getElementById('idButtonSubmitProjeto');
let buttonRascunho = document.getElementById('idButtonSubmitRascunho');
let parts = document.getElementById('participante');
let partsFirst = document.getElementById('participanteFirst');
const participante = partsFirst.firstElementChild;
let contador = 0;
buttonSubmit.addEventListener('click', (e)=>{
$('.collapse').addClass('show')
})
buttonRascunho.addEventListener('click', (e)=>{
$('.collapse').addClass('show');
const input = '<input id="input_rascunho" type="hidden" name="rascunho" value="true">';
$("#updateProjetoForm").append(input);
})
function gerarPeriodo(e){
var select = e.parentElement.parentElement.nextElementSibling;
selectPeriodos = select.children[0].children[1];
var html = `<option value="" disabled selected>-- TOTAL DE PERIODOS --</option>`;
for(var i = 0; i < parseInt(e.value); i++) {
html += `<option value="${i+1}">${i+1}º</option>`;
}
$(selectPeriodos).html('');
$(selectPeriodos).append(html);
}
function removerPart(e){
console.log(e)
if(e.parentElement.parentElement){
if(parts.children.length <= 1){
}else{
parts.removeChild(e.parentElement.parentElement);
//contador--;
}
}
}
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$("input.cpf:text").mask("000.000.000-00");
$("input.celular:text").mask(SPMaskBehavior, spOptions);
$("input.cep:text").mask("00000-000");
buttonMais.addEventListener("click", (e) => {
if(parts.children.length >= "{{ $edital->numParticipantes }}"){
alert('Limite de participante.')
}else{
contador++;
var cln = participante.cloneNode(true);
cln.setAttribute('style', " ");
var id = cln.children[2].firstElementChild.id;
var id2 = cln.children[0].firstElementChild.id;
cln.children[2].firstElementChild.setAttribute('id', id + contador);
cln.children[0].firstElementChild.setAttribute('href', "#collapseParticipante" + contador);
cln.children[0].firstElementChild.setAttribute('id', id2 + contador);
for (i = 0; i < cln.children.length; i++) {
for (let index = 0; index < cln.children[i].querySelectorAll('input').length; index++) {
let input = cln.children[i].querySelectorAll('input')[index];
let name = input.getAttributeNode("name").value;
name = name.replace("[]", "");
input.getAttributeNode("name").value = name + '['+ contador +']';
let select = cln.children[i].querySelectorAll('select')[index];
if(select){
let selectName = select.getAttributeNode("name").value;
selectName = selectName.replace("[", "");
selectName = selectName.replace("]", "");
select.getAttributeNode("name").value = selectName + '['+ contador +']';
}
}
}
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
parts.appendChild(cln);
$("input.cpf:text").val("").mask("000.000.000-00");
$("input.celular:text").val("").mask(SPMaskBehavior, spOptions);
$("input.cep:text").val("").mask("00000-000");
}
});
function marcar(id){
let nome = document.getElementById("nome"+id);
let linkNome = document.getElementById("nomePart"+(id+1));
let linkTituloProj = document.getElementById("tituloProj"+(id+1));
let planoTrabalho = document.getElementById("nomePlanoTrabalho"+id);
if(nome.value != ""){
if(planoTrabalho.value != ""){
linkNome.innerText = `Nome: ${nome.value} \n Plano: ${planoTrabalho.value}`;
}else {
linkNome.innerText = `Nome: ${nome.value}`;
}
}
if(id >=1){
document.getElementById("cancelar"+(id-1)).setAttribute("disabled", true);
}
document.getElementById("checkB"+id).checked = true;
$("#atribuir1").attr('data-target','#exampleModal'+(id+1));
document.getElementById("part"+id).removeAttribute("hidden");
document.getElementById("exampleModal"+id).modal('hide');
}
function desmarcar(id){
if(id >= 1){;
document.getElementById("cancelar"+(id-1)).removeAttribute("disabled");
}
document.getElementById("checkB"+id).checked = false;
document.getElementById("part"+id).setAttribute("hidden",true);
$("#atribuir1").attr('data-target','#exampleModal'+(id));
document.getElementById("exampleModal"+id).modal('hide');
}
</script>
<script>
$.validator.addMethod("alpha", function(value, element) {
return this.optional(element) || value == value.match(/^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$/);
});
$('input.cep:text').mask('00000-000');
//$('input.cpf:text').mask('000.000.000-00');
$('.numero').mask('0000000000000');
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$('.celular').mask(SPMaskBehavior, spOptions);
$('.sus').mask('000 0000 0000 0000');
$("input[type='file']").on("change", function () {
if(this.files[0].size > 2000000) {
// console.log($(this).parents( ".col-sm-5" ))
alert("O tamanho do arquivo deve ser menor que 2MB!");
$(this).val('');
}
});
// $.validator.setDefaults( {
// submitHandler: function (form) {
// form.submit();
// }
// } );
// jQuery.extend(jQuery.validator.messages, {
// required: "Este campo &eacute; requerido.",
// remote: "Por favor, corrija este campo.",
// email: "Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.",
// url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
// date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
// dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
// number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.",
// digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
// creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
// equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
// accept: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
// maxlength: jQuery.validator.format("Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres."),
// minlength: jQuery.validator.format("Por favor, forne&ccedil;a ao menos {0} caracteres."),
// rangelength: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento."),
// range: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1}."),
// max: jQuery.validator.format("Por favor, forne&ccedil;a um valor menor ou igual a {0}."),
// min: jQuery.validator.format("Por favor, forne&ccedil;a um valor maior ou igual a {0}.")
// });
// $( "#criarProjetoForm" ).validate( {
// lang: 'PT_BR',
// rules: {
// firstname: "required",
// username: {
// required: true,
// minlength: 2
// },
// password: {
// required: true,
// minlength: 5
// },
// confirm_password: {
// required: true,
// minlength: 5,
// equalTo: "#password"
// },
// email: {
// required: true,
// email: true,
// },
// "complemento[]":{
// },
// "nomeParticipante[]":{
// alpha:true,
// },
// 'rg[]':{
// maxlength: 12,
// },
// agree: "required"
// },
// messages: {
// // nomeProjeto: "O nome do projeto é obrigatório.",
// // 'emailParticipante[]': "Este campo é obrigatório.",
// // 'data_de_nascimento[]': "Este campo é obrigatório.",
// // 'cpf[]': "Este campo é obrigatório.",
// // 'rg[]': {
// // required: "Este campo é obrigatório.",
// // maxlength: "Este campo deve conter no máximo 8 números."
// // },
// // 'celular[]': "Este campo é obrigatório.",
// // 'cep[]': "Este campo é obrigatório.",
// // 'uf[]': "Este campo é obrigatório.",
// // 'cidade[]': "Este campo é obrigatório.",
// // 'bairro[]': "Este campo é obrigatório.",
// // 'rua[]': "Este campo é obrigatório.",
// // 'numero[]': "Este campo é obrigatório.",
// // 'complemento[]': "Este campo é obrigatório.",
// // 'universidade[]': "Este campo é obrigatório.",
// // 'curso[]': "Este campo é obrigatório.",
// // 'turno[]': "Este campo é obrigatório.",
// // 'total_periodos[]': "Este campo é obrigatório.",
// // 'periodo_atual[]': "Este campo é obrigatório.",
// // 'ordem_prioridade[]': "Este campo é obrigatório.",
// // 'media_geral_curso[]': "Este campo é obrigatório.",
// // 'nomePlanoTrabalho[]': "Este campo é obrigatório.",
// // 'anexoPlanoTrabalho[]': "Este campo é obrigatório.",
// // grandeArea: "Escolha uma grande área.",
// // area: "Escolha uma área.",
// // linkGrupo: "Este campo é obrigatório.",
// // pontuacaoPlanilha: "Este campo é obrigatório.",
// // anexoProjeto: "Este campo é obrigatório.",
// // anexoLattesCoordenador: "Este campo é obrigatório.",
// // anexoConsuPreenchido: "Este campo é obrigatório.",
// // anexoGrupoPesquisa: "Este campo é obrigatório.",
// // anexoPlanilha: "Este campo é obrigatório.",
// // anexoComiteEtica: "Este campo é obrigatório.",
// // inputJustificativa: "Este campo é obrigatório.",
// // "nomeParticipante[]": {
// // required: "O nome do participante é obrigatório.",
// // alpha: "Não é permitido números."
// // },
// // username: {
// // required: "Please enter a username",
// // minlength: "Your username must consist of at least 2 characters"
// // },
// // password: {
// // required: "Please provide a password",
// // minlength: "Your password must be at least 5 characters long"
// // },
// // confirm_password: {
// // required: "Please provide a password",
// // minlength: "Your password must be at least 5 characters long",
// // equalTo: "Please enter the same password as above"
// // },
// // email: "Please enter a valid email address",
// // agree: "Please accept our policy"
// },
// errorElement: "em",
// errorPlacement: function ( error, element ) {
// // Add the `help-block` class to the error element
// error.addClass( "invalid-feedback" );
// if ( element.prop( "type" ) === "checkbox" ) {
// error.insertAfter( element.parent( "label" ) );
// } else {
// error.insertAfter( element );
// }
// },
// highlight: function ( element, errorClass, validClass ) {
// $( element ).parents( ".col-sm-5" ).addClass( "has-error" ).removeClass( "has-success" );
// },
// unhighlight: function (element, errorClass, validClass) {
// $( element ).parents( ".col-sm-5" ).addClass( "has-success" ).removeClass( "has-error" );
// }
// } );
} );
</script>
<script type="text/javascript">
function validarCPF(valor){
var soma = 0;
var resto;
var inputCPF = valor.match(/\d/g).join('');
if(inputCPF == '00000000000') return false;
if(inputCPF.length >11) return false;
for(i=1; i<=9; i++) soma = soma + parseInt(inputCPF.substring(i-1, i)) * (11 - i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(9, 10))) return false;
soma = 0;
for(i = 1; i <= 10; i++) soma = soma + parseInt(inputCPF.substring(i-1, i))*(12-i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(10, 11))) return false;
return true;
}
/*
* FUNCAO: Gerar as areas
*
*/
function areas() {
var grandeArea = $('#grandeArea').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id='+grandeArea ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if($('#oldArea').val() == null || $('#oldArea').val() == ""){
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldArea').val() != null && $('#oldArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#area').html(option).show();
subareas();
},
error: (data) => {
console.log(data);
}
})
}
/*
* FUNCAO: Gerar as subareas
*
*/
function subareas() {
var area = $('#area').val();
$.ajax({
type: 'POST',
url: '{{ route('subarea.consulta') }}',
data: 'id='+area ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados)=> {
if (dados.length > 0) {
if($('#oldSubArea').val() == null || $('#oldSubArea').val() == ""){
var option = '<option selected disabled>-- Subárea --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldSubArea').val() != null && $('#oldSubArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Subárea --</option>";
}
$('#subArea').html(option).show();
},
error: (dados) => {
console.log(dados);
}
})
}
/*
* FUNCAO: funcao responsavel pelo abre e fecha da area "possui autorizacoes especiais?"
*
*/
function displayAutorizacoesEspeciais(valor){
if(valor == "sim"){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else if(valor == "nao"){
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
}
/*
* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (PDF)
*
*/
function verificarArquivoAnexado_pdf(item, legenda){
if(item.files[0].type.split('/')[1] != "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo PDF! ";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else if(item.files[0].size > 2000000 && item.files[0].type.split('/')[1] == "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}
/* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (XLS, XLSX, ODS)
*
*/
function verificarArquivoAnexado_xls_xlsx_ods(item, legenda){
if(item.files[0].name.split('.')[1] == "xls" || item.files[0].name.split('.')[1] == "ods" || item.files[0].name.split('.')[1] == "xlsx"){
if(item.files[0].size > 2000000){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}else{
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo XLS, XLSX ou ODS! ";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}
}
/*
* FUNCAO: Gerar periodos 1
*
*/
// function gerarPeriodos1(select) {
// var div = select.parentElement.parentElement;
// var selectPeriodos = div.children[22].children[1];
// var html = `<option value="" disabled selected>-- TOTAL DE PERIODOS --</option>`;
// for(var i = 0; i < parseInt(select.value); i++) {
// html += `<option value="${i+1}">${i+1}º</option>`;
// }
// });
// });
// $(document).ready(function(){
// $(".cpf").change(function(){
// console.log(this.parentElement.children[0])
// if (validarCPF(retirarFormatacao(this.value))) {
// this.parentElement.children[1].style.display = "none";
// this.parentElement.children[2].style.display = "block";
// } else {
// this.parentElement.children[1].style.display = "block";
// this.parentElement.children[2].style.display = "none";
// }
// });
// });
function checarCPFdoCampo(input) {
if (input.value.length == 14) {
if (validarCPF(retirarFormatacao(input.value))) {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "block";
} else {
input.parentElement.children[1].style.display = "block";
input.parentElement.children[2].style.display = "none";
}
} else {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "none";
}
}
function validarCPF(strCPF) {
var soma;
var resto;
soma = 0;
// Verifica se foi informado todos os digitos corretamente
if (strCPF.length != 11) {
return false;
}
// Verifica se foi informada uma sequência de digitos repetidos. Ex: 111.111.111-11
if (varificarDigitos(strCPF)) {
return false;
}
// Faz o calculo para validar o CPF
for (var t = 9; t < 11; t++) {
for (var d = 0, c = 0; c < t; c++) {
d += strCPF[c] * ((t + 1) - c);
}
d = ((10 * d) % 11) % 10;
if (strCPF[c] != d) {
return false;
}
}
return true;
}
function retirarFormatacao(strCpf) {
resultado = "";
for(var i = 0; i < strCpf.length; i++) {
if (strCpf[i] != "." && strCpf[i] != "-") {
resultado += strCpf[i];
}
}
return resultado;
}
function varificarDigitos(strCpf) {
var cont = 1;
dig1 = strCpf[0];
for(var i = 1; i < strCpf.length; i++) {
if(dig1 == strCpf[i]) {
cont++;
}
}
if (cont == strCpf.length) {
return true;
}
return false;
}
function checarCpfs() {
var validacoes = document.getElementsByClassName("cpf-invalido");
var count = validacoes.length;
var quant = 0;
for(var i = 0; i < validacoes.length; i++) {
if (validacoes[i].style.display == "none") {
quant++;
}
}
if(quant == count) {
return true;
}
return false;
}
function submeterProposta() {
if (checarCpfs()) {
document.getElementById("submeterFormProposta").click();
} else {
$("#modalCpfInvalido").modal('show');
}
}
function mascaraCPF(input) {
var numeros = "0123456789.-";
var resultado = "";
if (input.value.length < 14) {
for (var i = 0; i < input.value.length; i++) {
if (numeros.indexOf(input.value[i]) > -1) {
if ((i == 2 || i == 6) && input.value[i+1] != ".") {
resultado += input.value[i] + ".";
} else if (i == 10 && input.value[i+1] != "-") {
resultado += input.value[i] + "-";
} else {
resultado += input.value[i];
}
}
}
} else {
for (var i = 0; i < 14; i++) {
resultado += input.value[i];
}
}
input.value = resultado;
}
function showInstituicao(instituicao){
var instituicaoSelect = instituicao;
var idSelect = instituicaoSelect.name;
var instituicao = document.getElementById('outra'+idSelect);
var display = document.getElementById('display'+idSelect);
if(instituicaoSelect.value === "Outra"){
display.style.display = "block";
instituicao.parentElement.style.display = '';
//instituicao.value="";
}else{
display.style.display = "none";
}
}
function showCurso(curso){
var cursoSelect = curso;
var idSelect = cursoSelect.name;
var curso = document.getElementById('outro'+idSelect);
var displayCurso = document.getElementById('display'+idSelect);
if(cursoSelect.value === "Outro"){
displayCurso.style.display = "block";
curso.parentElement.style.display = '';
//curso.value="";
}else{
displayCurso.style.display = "none";
}
}
</script>
@endsection
\ No newline at end of file
<!-- Participantes -->
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-sm-8"><h5 style="color: #234B8B; font-weight: bold">Integrantes</h5></div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row justify-content-start" style="alignment: center">
@foreach($trabalhos_user as $trabalho_user)
<div class="col-sm-1 mt-4">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-sm-5 mt-4">
<h5 class="mb-0">Nome: {{ $trabalho_user->user->name }}</h5>
<h5 class="mb-0">Função: {{ $trabalho_user->funcao->nome }}</h5>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
<!--X Participantes X-->
<!-- Participantes -->
<div class="col-md-12" style="margin-top: 20px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;">
<div class="container">
<div class="form-row mt-3">
<div class="col-sm-8"><h5 style="color: #234B8B; font-weight: bold">Integrantes</h5></div>
</div>
<hr style="border-top: 1px solid#1492E6">
<div class="row justify-content-start" style="alignment: center">
@foreach($trabalhos_user as $trabalho_user)
<div class="col-sm-1 mt-4">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:60px" alt="">
</div>
<div class="col-sm-5 mt-4">
<h5 class="mb-0">Nome: {{ $trabalho_user->user->name }}</h5>
<h5 class="mb-0">Função: {{ $trabalho_user->funcao->nome }}</h5>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
<!--X Participantes X-->
@extends('layouts.app')
@section('content')
<div>
{{-- action="{{route('trabalho.store')}}" --}}
<form method="POST" id="criarProjetoForm" action="{{route('trabalho.update', ['id' => $projeto->id])}}" enctype="multipart/form-data" >
@csrf
<input type="hidden" name="editalId" value="{{$edital->id}}">
<div class="container">
@if (session('mensagem'))
<div class="alert alert-warning" role="alert">
{{ session('mensagem') }}
</div>
@endif
@if($errors->any())
<div class="alert alert-danger mt-1" >
{{$errors->first()}}
</div>
@endif
<div class="row justify-content-center" style="margin-top: 4rem">
@component('projeto.formularioVisualizar.projeto2',
['edital' => $edital, 'projeto' => $projeto])
@endcomponent
@component('projeto.formularioVisualizar.proponente2', ['projeto' => $projeto, 'edital' => $edital, 'areasTematicas' => $areasTematicas])
@endcomponent
@component('projeto.formularioVisualizar.anexos2', ['edital' => $edital,'projeto' => $projeto])
@endcomponent
@component('projeto.formularioVisualizar.participantes2', ['projeto' => $projeto, 'edital' => $edital])
@endcomponent
@if($edital->natureza_id == 3)
@component('projeto.formularioVisualizar.integrantes', ['projeto' => $projeto, 'edital' => $edital, 'trabalhos_user' => $trabalhos_user])
@endcomponent
@endif
@component('projeto.formularioVisualizar.relatorio',['edital' => $edital,'projeto' => $projeto,'flagSubstituicao' =>$flagSubstituicao])
@endcomponent
@component('projeto.formularioVisualizar.resultado2',
['projeto' => $projeto])
@endcomponent
{{-- @component('projeto.formularioVisualizar.finalizar', ['projeto' => $projeto])
@endcomponent --}}
</div>
<div class="row justify-content-end" style="padding: 15px;">
<a href="{{ url()->previous() }}" class="btn btn-primary" style="font-size: 16px;">Voltar</a>
</div>
</div>
</form>
<div class="modal fade" id="modalSelecionarDiscentes" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Selecione os discentes que dejesa solicitar certificado/declaração</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="padding-right: 32px;padding-left: 32px;padding-top: 20px;padding-bottom: 32px;">
<form id="certificadoForm" action="{{route('trabalho.solicitarCertificado', $projeto)}}" method="POST">
@csrf
<div class="form-check">
<input name="users[]" class="form-check-input" type="checkbox" value="{{$projeto->proponente->user->id}}" id="pa-{{$projeto->proponente->user->id}}">
<label class="form-check-label" for="pa-{{$projeto->proponente->user->id}}">
{{$projeto->proponente->user->name}}
</label>
</div>
@foreach ($projeto->participantes as $participante)
<div class="form-check">
<input name="users[]" class="form-check-input" type="checkbox" value="{{$participante->user->id}}" id="pa-{{$participante->user->id}}">
<label class="form-check-label" for="pa-{{$participante->user->id}}">
{{$participante->user->name}}
</label>
</div>
@endforeach
</form>
</div>
<div class="modal-footer d-flex justify-content-between px-3">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
<button type="submit" form="certificadoForm" class="btn btn-primary">Confirmar</button>
</div>
</div>
</div>
</div>
<div id="participanteFirst" >
@component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ])
@endcomponent
</div>
<!-- Modal de Aviso Edit -->
<div class="modal fade" id="exampleModalAnexarDocumento" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" id="idCorCabecalhoModalDocumento">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12" style="font-family: 'Roboto', sans-serif;"><label id="idTituloDaMensagemModalDocumento"></label></div>
<div class="col-12" style="font-family: 'Roboto', sans-serif; margin-top:10px;">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal"style="width:200px;">Fechar</button>
</div>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="modalCpfInvalido" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: red;">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Existe um CPF inválido em um dos discentes por favor corrija para continuar.
</div>
{{-- <div class="modal-footer">
{{-- <button type="button" class="btn btn-secondary"></button>
{{-- <button type="button" class="btn btn-primary">Certo</button>
</div> --}}
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<style>
body{font-family:Calibri, Tahoma, Arial}
.TabControl{ width:100%; overflow:hidden; height:400px}
.TabControl #header{ width:100%; overflow:hidden}
.TabControl #content{ width:100%; overflow:hidden; height:100%; }
.TabControl .abas{display:inline;}
.TabControl .abas li{float:left}
.aba{width:100px; height:30px; border-radius:5px 5px 0 0;
text-align:center; padding-top:5px;}
.ativa{width:100px; height:30px; border-radius:5px 5px 0 0;
text-align:center; padding-top:5px; background:#27408B;}
.ativa span, .selected span{color:#fff}
.TabControl .conteudo{width:100%; display:none; height:100%;}
.selected{width:100px; height:30px; border-radius:5px 5px 0 0;
text-align:center; padding-top:5px; background:#27408B}
.card:hover{
box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.2);
}
.card-body{
font-size:18.4px;
}
h6,h5{
font-size:18.4px;
}
</style>
<script>
if(document.getElementById("radioSim").checked){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else{
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
let buttonSubmit = document.getElementById('idButtonSubmitProjeto');
let parts = document.getElementById('participante');
let partsFirst = document.getElementById('participanteFirst');
const participante = partsFirst.firstElementChild;
let contador = 0;
buttonSubmit.addEventListener('click', (e)=>{
$('.collapse').addClass('show')
})
function gerarPeriodo(e){
var select = e.parentElement.parentElement.nextElementSibling;
selectPeriodos = select.children[0].children[1];
var html = `<option value="" disabled selected>-- TOTAL DE PERÍODOS --</option>`;
for(var i = 0; i < parseInt(e.value); i++) {
html += `<option value="${i+1}">${i+1}º</option>`;
}
$(selectPeriodos).html('');
$(selectPeriodos).append(html);
}
function removerPart(e){
console.log(e)
if(e.parentElement.parentElement){
if(parts.children.length <= 1){
}else{
parts.removeChild(e.parentElement.parentElement);
contador--;
}
}
}
buttonMais.addEventListener("click", (e) => {
if(parts.children.length >= "{{ $edital->numParticipantes }}"){
alert('Limite de participante.')
}else{
contador++;
var cln = participante.cloneNode(true);
cln.setAttribute('style', " ");
var id = cln.children[2].firstElementChild.id;
var id2 = cln.children[0].firstElementChild.id;
cln.children[2].firstElementChild.setAttribute('id', id + contador);
cln.children[0].firstElementChild.setAttribute('href', "#collapseParticipante" + contador);
cln.children[0].firstElementChild.setAttribute('id', id2 + contador);
for (i = 0; i < cln.children.length; i++) {
for (let index = 0; index < cln.children[i].querySelectorAll('input').length; index++) {
let input = cln.children[i].querySelectorAll('input')[index];
let name = input.getAttributeNode("name").value;
name = name.replace("[]", "");
input.getAttributeNode("name").value = name + '['+ contador +']';
let select = cln.children[i].querySelectorAll('select')[index];
if(select){
let selectName = select.getAttributeNode("name").value;
selectName = selectName.replace("[", "");
selectName = selectName.replace("]", "");
select.getAttributeNode("name").value = selectName + '['+ contador +']';
}
}
}
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
parts.appendChild(cln);
// console.log(cln);
$(cln).find(".cpf").val("").mask("000.000.000-00");
// $("input.cpf:text").val("").mask("000.000.000-00");
$("input.celular:text").val("").mask(SPMaskBehavior, spOptions);
$("input.cep:text").val("").mask("00000-000");
}
});
</script>
<script>
$( document ).ready( function () {
$('#nomeParticipante').keyup(function () {
$('#display').text($(this).val());
if($('#nomeParticipante').val() == ""){
$('#display').hide();
$('#pontos').hide();
}else{
$('#display').show();
$('#pontos').show();
}
});
$.validator.addMethod("alpha", function(value, element) {
return this.optional(element) || value == value.match(/^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$/);
});
$('.cep').mask('00000000');
// $('.cpf').mask('000.000.000-00');
$('.numero').mask('0000000000000');
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$('.celular').mask(SPMaskBehavior, spOptions);
$('.sus').mask('000 0000 0000 0000');
$("input[type='file']").on("change", function () {
if(this.files[0].size > 2000000) {
// console.log($(this).parents( ".col-sm-5" ))
alert("O tamanho do arquivo deve ser menor que 2MB!");
$(this).val('');
}
});
$.validator.setDefaults( {
submitHandler: function (form) {
form.submit();
}
} );
jQuery.extend(jQuery.validator.messages, {
required: "Este campo &eacute; requerido.",
remote: "Por favor, corrija este campo.",
email: "Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.",
url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.",
digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
accept: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
maxlength: jQuery.validator.format("Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres."),
minlength: jQuery.validator.format("Por favor, forne&ccedil;a ao menos {0} caracteres."),
rangelength: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento."),
range: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1}."),
max: jQuery.validator.format("Por favor, forne&ccedil;a um valor menor ou igual a {0}."),
min: jQuery.validator.format("Por favor, forne&ccedil;a um valor maior ou igual a {0}.")
});
$( "#criarProjetoForm" ).validate( {
lang: 'PT_BR',
rules: {
firstname: "required",
username: {
required: true,
minlength: 2
},
password: {
required: true,
minlength: 5
},
confirm_password: {
required: true,
minlength: 5,
equalTo: "#password"
},
email: {
required: true,
email: true,
},
"complemento[]":{
},
"nomeParticipante[]":{
required:true,
alpha:true,
},
'rg[]':{
required: true,
maxlength: 12,
},
agree: "required"
},
messages: {
// nomeProjeto: "O nome do projeto é obrigatório.",
// 'emailParticipante[]': "Este campo é obrigatório.",
// 'data_de_nascimento[]': "Este campo é obrigatório.",
// 'cpf[]': "Este campo é obrigatório.",
// 'rg[]': {
// required: "Este campo é obrigatório.",
// maxlength: "Este campo deve conter no máximo 8 números."
// },
// 'celular[]': "Este campo é obrigatório.",
// 'cep[]': "Este campo é obrigatório.",
// 'uf[]': "Este campo é obrigatório.",
// 'cidade[]': "Este campo é obrigatório.",
// 'bairro[]': "Este campo é obrigatório.",
// 'rua[]': "Este campo é obrigatório.",
// 'numero[]': "Este campo é obrigatório.",
// 'complemento[]': "Este campo é obrigatório.",
// 'universidade[]': "Este campo é obrigatório.",
// 'curso[]': "Este campo é obrigatório.",
// 'turno[]': "Este campo é obrigatório.",
// 'total_periodos[]': "Este campo é obrigatório.",
// 'periodo_atual[]': "Este campo é obrigatório.",
// 'ordem_prioridade[]': "Este campo é obrigatório.",
// 'media_geral_curso[]': "Este campo é obrigatório.",
// 'nomePlanoTrabalho[]': "Este campo é obrigatório.",
// 'anexoPlanoTrabalho[]': "Este campo é obrigatório.",
// grandeArea: "Escolha uma grande área.",
// area: "Escolha uma área.",
// linkGrupo: "Este campo é obrigatório.",
// pontuacaoPlanilha: "Este campo é obrigatório.",
// anexoProjeto: "Este campo é obrigatório.",
// anexoLattesCoordenador: "Este campo é obrigatório.",
// anexoConsuPreenchido: "Este campo é obrigatório.",
// anexoGrupoPesquisa: "Este campo é obrigatório.",
// anexoPlanilha: "Este campo é obrigatório.",
// anexoComiteEtica: "Este campo é obrigatório.",
// inputJustificativa: "Este campo é obrigatório.",
// "nomeParticipante[]": {
// required: "O nome do participante é obrigatório.",
// alpha: "Não é permitido números."
// },
// username: {
// required: "Please enter a username",
// minlength: "Your username must consist of at least 2 characters"
// },
// password: {
// required: "Please provide a password",
// minlength: "Your password must be at least 5 characters long"
// },
// confirm_password: {
// required: "Please provide a password",
// minlength: "Your password must be at least 5 characters long",
// equalTo: "Please enter the same password as above"
// },
// email: "Please enter a valid email address",
// agree: "Please accept our policy"
},
errorElement: "em",
errorPlacement: function ( error, element ) {
// Add the `help-block` class to the error element
error.addClass( "invalid-feedback" );
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.parent( "label" ) );
} else {
error.insertAfter( element );
}
},
highlight: function ( element, errorClass, validClass ) {
$( element ).parents( ".col-sm-5" ).addClass( "has-error" ).removeClass( "has-success" );
},
unhighlight: function (element, errorClass, validClass) {
$( element ).parents( ".col-sm-5" ).addClass( "has-success" ).removeClass( "has-error" );
}
} );
} );
</script>
<script type="text/javascript">
function validarCPF(valor){
var soma = 0;
var resto;
var inputCPF = valor.match(/\d/g).join('');
if(inputCPF == '00000000000') return false;
if(inputCPF.length >11) return false;
for(i=1; i<=9; i++) soma = soma + parseInt(inputCPF.substring(i-1, i)) * (11 - i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(9, 10))) return false;
soma = 0;
for(i = 1; i <= 10; i++) soma = soma + parseInt(inputCPF.substring(i-1, i))*(12-i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(10, 11))) return false;
return true;
}
/*
* FUNCAO: Gerar as areas
*
*/
function areas() {
var grandeArea = $('#grandeArea').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id='+grandeArea ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if($('#oldArea').val() == null || $('#oldArea').val() == ""){
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldArea').val() != null && $('#oldArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#area').html(option).show();
subareas();
},
error: (data) => {
console.log(data);
}
})
}
/*
* FUNCAO: Gerar as subareas
*
*/
function subareas() {
var area = $('#area').val();
$.ajax({
type: 'POST',
url: '{{ route('subarea.consulta') }}',
data: 'id='+area ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados)=> {
if (dados.length > 0) {
if($('#oldSubArea').val() == null || $('#oldSubArea').val() == ""){
var option = '<option selected disabled>-- Subárea --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldSubArea').val() != null && $('#oldSubArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Subárea --</option>";
}
$('#subArea').html(option).show();
},
error: (dados) => {
console.log(dados);
}
})
}
/*
* FUNCAO: funcao responsavel pelo abre e fecha da area "possui autorizacoes especiais?"
*
*/
function displayAutorizacoesEspeciais(valor){
if(valor == "sim"){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else if(valor == "nao"){
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
}
/*
* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (PDF)
*
*/
function verificarArquivoAnexado_pdf(item, legenda){
if(item.files[0].type.split('/')[1] != "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo PDF! ";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else if(item.files[0].size > 2000000 && item.files[0].type.split('/')[1] == "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}
/* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (XLS, XLSX, ODS)
*
*/
function verificarArquivoAnexado_xls_xlsx_ods(item, legenda){
if(item.files[0].name.split('.')[1] == "xls" || item.files[0].name.split('.')[1] == "ods" || item.files[0].name.split('.')[1] == "xlsx"){
if(item.files[0].size > 2000000){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}else{
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo XLS, XLSX ou ODS! ";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}
}
/*
* FUNCAO: Gerar periodos 1
*
*/
// function gerarPeriodos1(select) {
// var div = select.parentElement.parentElement;
// var selectPeriodos = div.children[22].children[1];
// var html = `<option value="" disabled selected>-- TOTAL DE PERIODOS --</option>`;
// for(var i = 0; i < parseInt(select.value); i++) {
// html += `<option value="${i+1}">${i+1}º</option>`;
// }
// });
// });
// $(document).ready(function(){
// $(".cpf").change(function(){
// console.log(this.parentElement.children[0])
// if (validarCPF(retirarFormatacao(this.value))) {
// this.parentElement.children[1].style.display = "none";
// this.parentElement.children[2].style.display = "block";
// } else {
// this.parentElement.children[1].style.display = "block";
// this.parentElement.children[2].style.display = "none";
// }
// });
// });
function checarCPFdoCampo(input) {
if (input.value.length == 14) {
if (validarCPF(retirarFormatacao(input.value))) {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "block";
} else {
input.parentElement.children[1].style.display = "block";
input.parentElement.children[2].style.display = "none";
}
} else {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "none";
}
}
function validarCPF(strCPF) {
var soma;
var resto;
soma = 0;
// Verifica se foi informado todos os digitos corretamente
if (strCPF.length != 11) {
return false;
}
// Verifica se foi informada uma sequência de digitos repetidos. Ex: 111.111.111-11
if (varificarDigitos(strCPF)) {
return false;
}
// Faz o calculo para validar o CPF
for (var t = 9; t < 11; t++) {
for (var d = 0, c = 0; c < t; c++) {
d += strCPF[c] * ((t + 1) - c);
}
d = ((10 * d) % 11) % 10;
if (strCPF[c] != d) {
return false;
}
}
return true;
}
function retirarFormatacao(strCpf) {
resultado = "";
for(var i = 0; i < strCpf.length; i++) {
if (strCpf[i] != "." && strCpf[i] != "-") {
resultado += strCpf[i];
}
}
return resultado;
}
function varificarDigitos(strCpf) {
var cont = 1;
dig1 = strCpf[0];
for(var i = 1; i < strCpf.length; i++) {
if(dig1 == strCpf[i]) {
cont++;
}
}
if (cont == strCpf.length) {
return true;
}
return false;
}
function checarCpfs() {
var validacoes = document.getElementsByClassName("cpf-invalido");
var count = validacoes.length;
var quant = 0;
for(var i = 0; i < validacoes.length; i++) {
if (validacoes[i].style.display == "none") {
quant++;
}
}
if(quant == count) {
return true;
}
return false;
}
function submeterProposta() {
document.getElementById("submeterFormProposta").click();
// if (checarCpfs()) {
// } else {
// $("#modalCpfInvalido").modal('show');
// }
}
function mascaraCPF(input) {
var numeros = "0123456789.-";
var resultado = "";
if (input.value.length < 14) {
for (var i = 0; i < input.value.length; i++) {
if (numeros.indexOf(input.value[i]) > -1) {
if ((i == 2 || i == 6) && input.value[i+1] != ".") {
resultado += input.value[i] + ".";
} else if (i == 10 && input.value[i+1] != "-") {
resultado += input.value[i] + "-";
} else {
resultado += input.value[i];
}
}
}
} else {
for (var i = 0; i < 14; i++) {
resultado += input.value[i];
}
}
input.value = resultado;
}
</script>
@endsection
@extends('layouts.app')
@section('content')
<div>
{{-- action="{{route('trabalho.store')}}" --}}
<form method="POST" id="criarProjetoForm" action="{{route('trabalho.update', ['id' => $projeto->id])}}" enctype="multipart/form-data" >
@csrf
<input type="hidden" name="editalId" value="{{$edital->id}}">
<div class="container">
@if (session('mensagem'))
<div class="alert alert-warning" role="alert">
{{ session('mensagem') }}
</div>
@endif
@if($errors->any())
<div class="alert alert-danger mt-1" >
{{$errors->first()}}
</div>
@endif
<div class="row justify-content-center" style="margin-top: 4rem">
@component('projeto.formularioVisualizar.projeto2',
['edital' => $edital, 'projeto' => $projeto])
@endcomponent
@component('projeto.formularioVisualizar.proponente2', ['projeto' => $projeto, 'edital' => $edital, 'areasTematicas' => $areasTematicas])
@endcomponent
@component('projeto.formularioVisualizar.anexos2', ['edital' => $edital,'projeto' => $projeto])
@endcomponent
@component('projeto.formularioVisualizar.participantes2', ['projeto' => $projeto, 'edital' => $edital])
@endcomponent
@if($edital->natureza_id == 3)
@component('projeto.formularioVisualizar.integrantes', ['projeto' => $projeto, 'edital' => $edital, 'trabalhos_user' => $trabalhos_user])
@endcomponent
@endif
@component('projeto.formularioVisualizar.relatorio',['edital' => $edital,'projeto' => $projeto,'flagSubstituicao' =>$flagSubstituicao])
@endcomponent
@component('projeto.formularioVisualizar.resultado2',
['projeto' => $projeto])
@endcomponent
{{-- @component('projeto.formularioVisualizar.finalizar', ['projeto' => $projeto])
@endcomponent --}}
</div>
<div class="row justify-content-end" style="padding: 15px;">
<a href="{{ url()->previous() }}" class="btn btn-primary" style="font-size: 16px;">Voltar</a>
</div>
</div>
</form>
<div class="modal fade" id="modalSelecionarDiscentes" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Selecione os discentes que dejesa solicitar certificado/declaração</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body" style="padding-right: 32px;padding-left: 32px;padding-top: 20px;padding-bottom: 32px;">
<form id="certificadoForm" action="{{route('trabalho.solicitarCertificado', $projeto)}}" method="POST">
@csrf
<div class="form-check">
<input name="users[]" class="form-check-input" type="checkbox" value="{{$projeto->proponente->user->id}}" id="pa-{{$projeto->proponente->user->id}}">
<label class="form-check-label" for="pa-{{$projeto->proponente->user->id}}">
{{$projeto->proponente->user->name}}
</label>
</div>
@foreach ($projeto->participantes as $participante)
<div class="form-check">
<input name="users[]" class="form-check-input" type="checkbox" value="{{$participante->user->id}}" id="pa-{{$participante->user->id}}">
<label class="form-check-label" for="pa-{{$participante->user->id}}">
{{$participante->user->name}}
</label>
</div>
@endforeach
</form>
</div>
<div class="modal-footer d-flex justify-content-between px-3">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
<button type="submit" form="certificadoForm" class="btn btn-primary">Confirmar</button>
</div>
</div>
</div>
</div>
<div id="participanteFirst" >
@component('componentes.participante', ['enum_turno' => $enum_turno,'estados' => $estados, ])
@endcomponent
</div>
<!-- Modal de Aviso Edit -->
<div class="modal fade" id="exampleModalAnexarDocumento" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" id="idCorCabecalhoModalDocumento">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-12" style="font-family: 'Roboto', sans-serif;"><label id="idTituloDaMensagemModalDocumento"></label></div>
<div class="col-12" style="font-family: 'Roboto', sans-serif; margin-top:10px;">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal"style="width:200px;">Fechar</button>
</div>
</div>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="modalCpfInvalido" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel2" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header" style="background-color: red;">
<h5 class="modal-title" id="exampleModalLabel2" style="font-size:20px; margin-top:7px; color:white; font-weight:bold; font-family: 'Roboto', sans-serif;">Aviso</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Existe um CPF inválido em um dos discentes por favor corrija para continuar.
</div>
{{-- <div class="modal-footer">
{{-- <button type="button" class="btn btn-secondary"></button>
{{-- <button type="button" class="btn btn-primary">Certo</button>
</div> --}}
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<style>
body{font-family:Calibri, Tahoma, Arial}
.TabControl{ width:100%; overflow:hidden; height:400px}
.TabControl #header{ width:100%; overflow:hidden}
.TabControl #content{ width:100%; overflow:hidden; height:100%; }
.TabControl .abas{display:inline;}
.TabControl .abas li{float:left}
.aba{width:100px; height:30px; border-radius:5px 5px 0 0;
text-align:center; padding-top:5px;}
.ativa{width:100px; height:30px; border-radius:5px 5px 0 0;
text-align:center; padding-top:5px; background:#27408B;}
.ativa span, .selected span{color:#fff}
.TabControl .conteudo{width:100%; display:none; height:100%;}
.selected{width:100px; height:30px; border-radius:5px 5px 0 0;
text-align:center; padding-top:5px; background:#27408B}
.card:hover{
box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.2);
}
.card-body{
font-size:18.4px;
}
h6,h5{
font-size:18.4px;
}
</style>
<script>
if(document.getElementById("radioSim").checked){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else{
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
let buttonSubmit = document.getElementById('idButtonSubmitProjeto');
let parts = document.getElementById('participante');
let partsFirst = document.getElementById('participanteFirst');
const participante = partsFirst.firstElementChild;
let contador = 0;
buttonSubmit.addEventListener('click', (e)=>{
$('.collapse').addClass('show')
})
function gerarPeriodo(e){
var select = e.parentElement.parentElement.nextElementSibling;
selectPeriodos = select.children[0].children[1];
var html = `<option value="" disabled selected>-- TOTAL DE PERÍODOS --</option>`;
for(var i = 0; i < parseInt(e.value); i++) {
html += `<option value="${i+1}">${i+1}º</option>`;
}
$(selectPeriodos).html('');
$(selectPeriodos).append(html);
}
function removerPart(e){
console.log(e)
if(e.parentElement.parentElement){
if(parts.children.length <= 1){
}else{
parts.removeChild(e.parentElement.parentElement);
contador--;
}
}
}
buttonMais.addEventListener("click", (e) => {
if(parts.children.length >= "{{ $edital->numParticipantes }}"){
alert('Limite de participante.')
}else{
contador++;
var cln = participante.cloneNode(true);
cln.setAttribute('style', " ");
var id = cln.children[2].firstElementChild.id;
var id2 = cln.children[0].firstElementChild.id;
cln.children[2].firstElementChild.setAttribute('id', id + contador);
cln.children[0].firstElementChild.setAttribute('href', "#collapseParticipante" + contador);
cln.children[0].firstElementChild.setAttribute('id', id2 + contador);
for (i = 0; i < cln.children.length; i++) {
for (let index = 0; index < cln.children[i].querySelectorAll('input').length; index++) {
let input = cln.children[i].querySelectorAll('input')[index];
let name = input.getAttributeNode("name").value;
name = name.replace("[]", "");
input.getAttributeNode("name").value = name + '['+ contador +']';
let select = cln.children[i].querySelectorAll('select')[index];
if(select){
let selectName = select.getAttributeNode("name").value;
selectName = selectName.replace("[", "");
selectName = selectName.replace("]", "");
select.getAttributeNode("name").value = selectName + '['+ contador +']';
}
}
}
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
parts.appendChild(cln);
// console.log(cln);
$(cln).find(".cpf").val("").mask("000.000.000-00");
// $("input.cpf:text").val("").mask("000.000.000-00");
$("input.celular:text").val("").mask(SPMaskBehavior, spOptions);
$("input.cep:text").val("").mask("00000-000");
}
});
</script>
<script>
$( document ).ready( function () {
$('#nomeParticipante').keyup(function () {
$('#display').text($(this).val());
if($('#nomeParticipante').val() == ""){
$('#display').hide();
$('#pontos').hide();
}else{
$('#display').show();
$('#pontos').show();
}
});
$.validator.addMethod("alpha", function(value, element) {
return this.optional(element) || value == value.match(/^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÍÏÓÔÕÖÚÇÑ ]+$/);
});
$('.cep').mask('00000000');
// $('.cpf').mask('000.000.000-00');
$('.numero').mask('0000000000000');
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, '').length === 11 ? '(00) 00000-0000' : '(00) 0000-00009';
},
spOptions = {
onKeyPress: function(val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$('.celular').mask(SPMaskBehavior, spOptions);
$('.sus').mask('000 0000 0000 0000');
$("input[type='file']").on("change", function () {
if(this.files[0].size > 2000000) {
// console.log($(this).parents( ".col-sm-5" ))
alert("O tamanho do arquivo deve ser menor que 2MB!");
$(this).val('');
}
});
$.validator.setDefaults( {
submitHandler: function (form) {
form.submit();
}
} );
jQuery.extend(jQuery.validator.messages, {
required: "Este campo &eacute; requerido.",
remote: "Por favor, corrija este campo.",
email: "Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.",
url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.",
digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
accept: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
maxlength: jQuery.validator.format("Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres."),
minlength: jQuery.validator.format("Por favor, forne&ccedil;a ao menos {0} caracteres."),
rangelength: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento."),
range: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1}."),
max: jQuery.validator.format("Por favor, forne&ccedil;a um valor menor ou igual a {0}."),
min: jQuery.validator.format("Por favor, forne&ccedil;a um valor maior ou igual a {0}.")
});
$( "#criarProjetoForm" ).validate( {
lang: 'PT_BR',
rules: {
firstname: "required",
username: {
required: true,
minlength: 2
},
password: {
required: true,
minlength: 5
},
confirm_password: {
required: true,
minlength: 5,
equalTo: "#password"
},
email: {
required: true,
email: true,
},
"complemento[]":{
},
"nomeParticipante[]":{
required:true,
alpha:true,
},
'rg[]':{
required: true,
maxlength: 12,
},
agree: "required"
},
messages: {
// nomeProjeto: "O nome do projeto é obrigatório.",
// 'emailParticipante[]': "Este campo é obrigatório.",
// 'data_de_nascimento[]': "Este campo é obrigatório.",
// 'cpf[]': "Este campo é obrigatório.",
// 'rg[]': {
// required: "Este campo é obrigatório.",
// maxlength: "Este campo deve conter no máximo 8 números."
// },
// 'celular[]': "Este campo é obrigatório.",
// 'cep[]': "Este campo é obrigatório.",
// 'uf[]': "Este campo é obrigatório.",
// 'cidade[]': "Este campo é obrigatório.",
// 'bairro[]': "Este campo é obrigatório.",
// 'rua[]': "Este campo é obrigatório.",
// 'numero[]': "Este campo é obrigatório.",
// 'complemento[]': "Este campo é obrigatório.",
// 'universidade[]': "Este campo é obrigatório.",
// 'curso[]': "Este campo é obrigatório.",
// 'turno[]': "Este campo é obrigatório.",
// 'total_periodos[]': "Este campo é obrigatório.",
// 'periodo_atual[]': "Este campo é obrigatório.",
// 'ordem_prioridade[]': "Este campo é obrigatório.",
// 'media_geral_curso[]': "Este campo é obrigatório.",
// 'nomePlanoTrabalho[]': "Este campo é obrigatório.",
// 'anexoPlanoTrabalho[]': "Este campo é obrigatório.",
// grandeArea: "Escolha uma grande área.",
// area: "Escolha uma área.",
// linkGrupo: "Este campo é obrigatório.",
// pontuacaoPlanilha: "Este campo é obrigatório.",
// anexoProjeto: "Este campo é obrigatório.",
// anexoLattesCoordenador: "Este campo é obrigatório.",
// anexoConsuPreenchido: "Este campo é obrigatório.",
// anexoGrupoPesquisa: "Este campo é obrigatório.",
// anexoPlanilha: "Este campo é obrigatório.",
// anexoComiteEtica: "Este campo é obrigatório.",
// inputJustificativa: "Este campo é obrigatório.",
// "nomeParticipante[]": {
// required: "O nome do participante é obrigatório.",
// alpha: "Não é permitido números."
// },
// username: {
// required: "Please enter a username",
// minlength: "Your username must consist of at least 2 characters"
// },
// password: {
// required: "Please provide a password",
// minlength: "Your password must be at least 5 characters long"
// },
// confirm_password: {
// required: "Please provide a password",
// minlength: "Your password must be at least 5 characters long",
// equalTo: "Please enter the same password as above"
// },
// email: "Please enter a valid email address",
// agree: "Please accept our policy"
},
errorElement: "em",
errorPlacement: function ( error, element ) {
// Add the `help-block` class to the error element
error.addClass( "invalid-feedback" );
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.parent( "label" ) );
} else {
error.insertAfter( element );
}
},
highlight: function ( element, errorClass, validClass ) {
$( element ).parents( ".col-sm-5" ).addClass( "has-error" ).removeClass( "has-success" );
},
unhighlight: function (element, errorClass, validClass) {
$( element ).parents( ".col-sm-5" ).addClass( "has-success" ).removeClass( "has-error" );
}
} );
} );
</script>
<script type="text/javascript">
function validarCPF(valor){
var soma = 0;
var resto;
var inputCPF = valor.match(/\d/g).join('');
if(inputCPF == '00000000000') return false;
if(inputCPF.length >11) return false;
for(i=1; i<=9; i++) soma = soma + parseInt(inputCPF.substring(i-1, i)) * (11 - i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(9, 10))) return false;
soma = 0;
for(i = 1; i <= 10; i++) soma = soma + parseInt(inputCPF.substring(i-1, i))*(12-i);
resto = (soma * 10) % 11;
if((resto == 10) || (resto == 11)) resto = 0;
if(resto != parseInt(inputCPF.substring(10, 11))) return false;
return true;
}
/*
* FUNCAO: Gerar as areas
*
*/
function areas() {
var grandeArea = $('#grandeArea').val();
$.ajax({
type: 'POST',
url: '{{ route('area.consulta') }}',
data: 'id='+grandeArea ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados) => {
if (dados.length > 0) {
if($('#oldArea').val() == null || $('#oldArea').val() == ""){
var option = '<option selected disabled>-- Área --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldArea').val() != null && $('#oldArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Área --</option>";
}
$('#area').html(option).show();
subareas();
},
error: (data) => {
console.log(data);
}
})
}
/*
* FUNCAO: Gerar as subareas
*
*/
function subareas() {
var area = $('#area').val();
$.ajax({
type: 'POST',
url: '{{ route('subarea.consulta') }}',
data: 'id='+area ,
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: (dados)=> {
if (dados.length > 0) {
if($('#oldSubArea').val() == null || $('#oldSubArea').val() == ""){
var option = '<option selected disabled>-- Subárea --</option>';
}
$.each(dados, function(i, obj) {
if($('#oldSubArea').val() != null && $('#oldSubArea').val() == obj.id){
option += '<option selected value="' + obj.id + '">' + obj.nome + '</option>';
}else{
option += '<option value="' + obj.id + '">' + obj.nome + '</option>';
}
})
} else {
var option = "<option selected disabled>-- Subárea --</option>";
}
$('#subArea').html(option).show();
},
error: (dados) => {
console.log(dados);
}
})
}
/*
* FUNCAO: funcao responsavel pelo abre e fecha da area "possui autorizacoes especiais?"
*
*/
function displayAutorizacoesEspeciais(valor){
if(valor == "sim"){
document.getElementById("radioSim").checked = true;
document.getElementById("radioNao").checked = false;
document.getElementById("displaySim").style.display = "block";
document.getElementById("displayNao").style.display = "none";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}else if(valor == "nao"){
document.getElementById("radioSim").checked = false;
document.getElementById("radioNao").checked = true;
document.getElementById("displaySim").style.display = "none";
document.getElementById("displayNao").style.display = "block";
document.getElementById("idAvisoAutorizacaoEspecial").style.display = "none";
}
}
/*
* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (PDF)
*
*/
function verificarArquivoAnexado_pdf(item, legenda){
if(item.files[0].type.split('/')[1] != "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo PDF! ";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else if(item.files[0].size > 2000000 && item.files[0].type.split('/')[1] == "pdf"){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "O arquivo deve ser no formato PDF de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}
/* FUNCAO: funcao responsavel pela verificacao dos arquivos anexados (XLS, XLSX, ODS)
*
*/
function verificarArquivoAnexado_xls_xlsx_ods(item, legenda){
if(item.files[0].name.split('.')[1] == "xls" || item.files[0].name.split('.')[1] == "ods" || item.files[0].name.split('.')[1] == "xlsx"){
if(item.files[0].size > 2000000){
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado é maior que 2MB!";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}else{
document.getElementById(legenda).innerHTML = item.value.split('\\')[2];
}
}else{
document.getElementById("idCorCabecalhoModalDocumento").style.backgroundColor = "red";
document.getElementById("idTituloDaMensagemModalDocumento").innerHTML = "O arquivo selecionado não é do tipo XLS, XLSX ou ODS! ";
document.getElementById(legenda).innerHTML = "Formato do arquivo: XLS, XLSX ou ODS de até 2MB.";
document.getElementById(item.id).value = "";
$("#exampleModalAnexarDocumento").modal({show: true});
}
}
/*
* FUNCAO: Gerar periodos 1
*
*/
// function gerarPeriodos1(select) {
// var div = select.parentElement.parentElement;
// var selectPeriodos = div.children[22].children[1];
// var html = `<option value="" disabled selected>-- TOTAL DE PERIODOS --</option>`;
// for(var i = 0; i < parseInt(select.value); i++) {
// html += `<option value="${i+1}">${i+1}º</option>`;
// }
// });
// });
// $(document).ready(function(){
// $(".cpf").change(function(){
// console.log(this.parentElement.children[0])
// if (validarCPF(retirarFormatacao(this.value))) {
// this.parentElement.children[1].style.display = "none";
// this.parentElement.children[2].style.display = "block";
// } else {
// this.parentElement.children[1].style.display = "block";
// this.parentElement.children[2].style.display = "none";
// }
// });
// });
function checarCPFdoCampo(input) {
if (input.value.length == 14) {
if (validarCPF(retirarFormatacao(input.value))) {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "block";
} else {
input.parentElement.children[1].style.display = "block";
input.parentElement.children[2].style.display = "none";
}
} else {
input.parentElement.children[1].style.display = "none";
input.parentElement.children[2].style.display = "none";
}
}
function validarCPF(strCPF) {
var soma;
var resto;
soma = 0;
// Verifica se foi informado todos os digitos corretamente
if (strCPF.length != 11) {
return false;
}
// Verifica se foi informada uma sequência de digitos repetidos. Ex: 111.111.111-11
if (varificarDigitos(strCPF)) {
return false;
}
// Faz o calculo para validar o CPF
for (var t = 9; t < 11; t++) {
for (var d = 0, c = 0; c < t; c++) {
d += strCPF[c] * ((t + 1) - c);
}
d = ((10 * d) % 11) % 10;
if (strCPF[c] != d) {
return false;
}
}
return true;
}
function retirarFormatacao(strCpf) {
resultado = "";
for(var i = 0; i < strCpf.length; i++) {
if (strCpf[i] != "." && strCpf[i] != "-") {
resultado += strCpf[i];
}
}
return resultado;
}
function varificarDigitos(strCpf) {
var cont = 1;
dig1 = strCpf[0];
for(var i = 1; i < strCpf.length; i++) {
if(dig1 == strCpf[i]) {
cont++;
}
}
if (cont == strCpf.length) {
return true;
}
return false;
}
function checarCpfs() {
var validacoes = document.getElementsByClassName("cpf-invalido");
var count = validacoes.length;
var quant = 0;
for(var i = 0; i < validacoes.length; i++) {
if (validacoes[i].style.display == "none") {
quant++;
}
}
if(quant == count) {
return true;
}
return false;
}
function submeterProposta() {
document.getElementById("submeterFormProposta").click();
// if (checarCpfs()) {
// } else {
// $("#modalCpfInvalido").modal('show');
// }
}
function mascaraCPF(input) {
var numeros = "0123456789.-";
var resultado = "";
if (input.value.length < 14) {
for (var i = 0; i < input.value.length; i++) {
if (numeros.indexOf(input.value[i]) > -1) {
if ((i == 2 || i == 6) && input.value[i+1] != ".") {
resultado += input.value[i] + ".";
} else if (i == 10 && input.value[i+1] != "-") {
resultado += input.value[i] + "-";
} else {
resultado += input.value[i];
}
}
}
} else {
for (var i = 0; i < 14; i++) {
resultado += input.value[i];
}
}
input.value = resultado;
}
</script>
@endsection
<?php
use App\Notifications\SubmissaoNotification;
use App\Trabalho;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Notification;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/email', function (Request $request) {
$id = Trabalho::find(9)->id;
Notification::send(Auth::user(), new SubmissaoNotification($id));
return 'Ok';
// Auth::user()->notify(new SubmissaoTrabalho('teste'));
});
Route::get('/baixarModeloAvaliacao', 'AdministradorController@baixarModeloAvaliacao')->name('baixarModelo');
Route::get('/', 'UserController@index')->name('home-user');
Route::get('/', 'UserController@inicial')->name('inicial');
Route::get('/home', 'HomeController@index')->name('home')->middleware('verified');
Route::get('/evento/visualizar/naologado/{id}', 'EventoController@showNaoLogado')->name('evento.visualizarNaoLogado');
Route::get('/editais/home', 'EventoController@index')->name('coord.home');
Route::get('/perfil', 'UserController@perfil')->name('perfil');
Auth::routes(['verify' => true]);
//Rota para avaliador atualizar perfil, deixando de ser usuario temporario
Route::post('/perfil-usuario', 'UserController@editarPerfil')->name('perfil.edit')->middleware(['auth', 'verified']);
Route::group(['middleware' => ['isTemp', 'auth', 'verified']], function () {
//######### Proponente ########################################
Route::get('/proponente/index', 'ProponenteController@index')->name('proponente.index');
Route::get('/proponente/cadastro', 'ProponenteController@create')->name('proponente.create');
Route::post('/proponente/cadastro', 'ProponenteController@store')->name('proponente.store');
Route::get('/proponente/editais', 'ProponenteController@editais')->name('proponente.editais');
Route::get('/projetos-submetidos', 'ProponenteController@projetosDoProponente')->name('proponente.projetos');
Route::get('/projetos-edital/{id}', 'ProponenteController@projetosEdital')->name('proponente.projetosEdital')->middleware('auth');
Route::post('/proponente/edital/{edital_id}/projeto/{projeto_id}/solicitar_desligamento/{participante_id}', 'ProponenteController@solicitarDesligamento')->name('proponente.solicitar.desligamento');
//######## Rotas Avaliador ####################################
Route::prefix('avaliacaoRelatorio')->name('avaliacaoRelatorio.')->group(function () {
Route::post('/atribuirAvaliadorPlano', 'AvaliacaoRelatorioController@atribuicaoAvaliador')->name('atribuicao.avaliador')->middleware('checkRoles:coordenador,administrador');
Route::get('/removerAvaliadorPlano/{id}', 'AvaliacaoRelatorioController@removerAvaliador')->name('remover.avaliador')->middleware('checkRoles:coordenador,administrador');
});
Route::get('/trabalho/planos/avaliacao/{id}', 'AvaliacaoRelatorioController@listarUser')->name('planos.avaliacoesUser');
Route::get('/trabalho/planos/avaliacoes/index', 'AvaliacaoRelatorioController@index')->name('planos.avaliacoes.index');
Route::post('/trabalho/planos/avaliacoes/criar', 'AvaliacaoRelatorioController@criar')->name('planos.avaliacoesUser.criar');
Route::prefix('areaTematica')->name('areaTematica.')->group(function () {
Route::get('/editar/{id}', 'AreaTematicaController@edit')->name('edit')->middleware('checkAdministrador');
Route::post('/atualizar/{id}', 'AreaTematicaController@update')->name('atualizar')->middleware('checkAdministrador');
Route::post('/excluir/{id}', 'AreaTematicaController@destroy')->name('deletar')->middleware('checkAdministrador');
Route::post('/salvar', 'AreaTematicaController@store')->name('salvar')->middleware('checkAdministrador');
Route::get('/nova', 'AreaTematicaController@create')->name('criar')->middleware('checkAdministrador');
});
Route::prefix('objetivoDeDenvolvimentoSustentavel')->name('objetivoDeDenvolvimentoSustentavel.')->group(function () {
Route::get('/editar/{id}', 'ObjetivoDeDesenvolvimentoSustentavelController@edit')->name('edit')->middleware('checkAdministrador');
Route::post('/atualizar/{id}', 'ObjetivoDeDesenvolvimentoSustentavelController@update')->name('atualizar')->middleware('checkAdministrador');
Route::post('/excluir/{id}', 'ObjetivoDeDesenvolvimentoSustentavelController@destroy')->name('deletar')->middleware('checkAdministrador');
Route::post('/salvar', 'ObjetivoDeDesenvolvimentoSustentavelController@store')->name('salvar')->middleware('checkAdministrador');
Route::get('/novo', 'ObjetivoDeDesenvolvimentoSustentavelController@create')->name('criar')->middleware('checkAdministrador');
});
//######### Rotas Administrador #################################
Route::get('/perfil-usuario', 'UserController@minhaConta')->name('user.perfil')->middleware(['auth', 'verified']);
//######## Rotas Avaliador ####################################
Route::prefix('avaliador')->name('avaliador.')->group(function () {
Route::get('/index', 'AvaliadorController@index')->name('index')->middleware('auth');
Route::get('/trabalhos', 'AvaliadorController@visualizarTrabalhos')->name('visualizarTrabalho')->middleware('auth');
Route::get('/planos', 'AvaliadorController@listarPlanos')->name('listarPlanos')->middleware('auth');
Route::post('/parecer', 'AvaliadorController@parecer')->name('parecer')->middleware('auth');
Route::post('/parecer/plano', 'AvaliadorController@parecerPlano')->name('parecer.plano')->middleware('auth');
Route::get('/editais', 'AvaliadorController@editais')->name('editais')->middleware('auth');
Route::post('/Enviarparecer', 'AvaliadorController@enviarParecer')->name('enviarParecer')->middleware('auth');
Route::post('/Enviarparecer/plano', 'AvaliadorController@enviarParecerPlano')->name('enviarParecerPlano')->middleware('auth');
Route::get('/Resposta', 'AvaliadorController@conviteResposta')->name('conviteResposta')->middleware('auth');
Route::post('/parecerInterno', 'AvaliadorController@parecerInterno')->name('parecerInterno')->middleware('auth');
Route::post('/EnviarparecerInterno', 'AvaliadorController@enviarParecerInterno')->name('enviarParecerInterno')->middleware('auth');
});
Route::get('/notificacao/listar', 'NotificacaoController@listar')->name('notificacao.listar')->middleware('auth');
Route::get('/notificacao/lista', 'NotificacaoController@listarTrab')->name('notificacao.listarTrab')->middleware('auth');
Route::get('/notificacao/ler/{id}', 'NotificacaoController@ler')->name('notificacao.ler');
Route::get('/home/edital', 'EventoController@index')->name('visualizarEvento');
// ######## rotas de teste #####################################
Route::get('/coordenador/evento/detalhes', 'EventoController@detalhes')->name('coord.detalhesEvento');
//####### Visualizar trabalhos do usuário ######################
Route::get('/user/trabalhos', 'UserController@meusTrabalhos')->name('user.meusTrabalhos');
//######### Cadastrar Comissão ###################################
Route::post('/evento/cadastrarComissao', 'ComissaoController@store')->name('cadastrar.comissao');
Route::post('/evento/cadastrarCoordComissao', 'ComissaoController@coordenadorComissao')->name('cadastrar.coordComissao');
//######### rota downloadArquivo ################################
Route::get('/downloadArquivo', 'HomeController@downloadArquivo')->name('download');
//######### Area do participante ###############################
Route::get('/participante', 'EventoController@areaParticipante')->name('area.participante');
Route::get('participante/editais', 'ParticipanteController@editais')->name('participante.editais');
//######### Participante ########################################
Route::get('/participante/index', 'ParticipanteController@index')->name('participante.index');
Route::get('/participante/edital/{id}', 'ParticipanteController@edital')->name('participante.edital');
//######### Plano de Trablho ########################################
Route::prefix('/plano/trabalho')->name('plano.trabalho.')->group(function () {
Route::get('/index/{evento_id}', 'PlanoTrabalhoController@index')->name('index');
Route::get('/selecionar/{evento_id}', 'PlanoTrabalhoController@selecionarPlanos')->name('selecionarPlanos');
Route::post('/atribuicao', 'PlanoTrabalhoController@atribuicao')->name('atribuicao');
});
//########## Area da comissao ###################################
Route::get('/comissoes', 'EventoController@listComissao')->name('comissoes');
Route::get('/area/comissao', 'EventoController@listComissaoTrabalhos')->name('area.comissao');
//########### Deletar Comissão ###################################
Route::delete('/evento/apagar-comissao/', 'ComissaoController@destroy')->name('delete.comissao');
Route::post('/evento/numTrabalhos', 'EventoController@numTrabalhos')->name('trabalho.numTrabalhos');
//########## Area ###########################################
Route::post('/area/criar', 'AreaController@store')->name('area.store');
//########### Deletar Area ######################################
Route::delete('/area/deletar/{id}', 'AreaController@destroy')->name('area.delete');
//######### Deletar Revisores ##############################
Route::delete('/revisor/apagar', 'RevisorController@destroy')->name('revisor.delete');
//######### AreaModalidade ###################################
Route::post('/areaModalidade/criar', 'AreaModalidadeController@store')->name('areaModalidade.store');
//######### Trabalho ########################################
Route::get('/trabalho/submeter/{id}', 'TrabalhoController@index')->name('trabalho.index');
// Route::get( '/trabalho/visualizar/{id}','TrabalhoController@show' )->name('trabalho.show');
Route::post('/trabalho/novaVersao', 'TrabalhoController@novaVersao')->name('trabalho.novaVersao');
Route::post('/trabalho/criar', 'TrabalhoController@salvar')->name('trabalho.store');
Route::post('/trabalho/criarRascunho', 'TrabalhoController@storeParcial')->name('trabalho.storeParcial');
Route::get('/edital/{id}/projetos', 'TrabalhoController@projetosDoEdital')->name('projetos.edital');
Route::get('/projeto/visualizar/{id}', 'TrabalhoController@show')->name('trabalho.show');
Route::get('/projeto/{id}/editar', 'TrabalhoController@edit')->name('trabalho.editar');
Route::post('/projeto/buscarUsuario', 'TrabalhoController@buscarUsuario')->name('trabalho.buscarUsuario');
Route::post('/projeto/{id}/atualizar', 'TrabalhoController@update')->name('trabalho.update');
Route::get('/projeto/{id}/excluir', 'TrabalhoController@destroy')->name('trabalho.destroy');
Route::get('/projeto/{id}/excluirParticipante', 'TrabalhoController@excluirParticipante')->name('trabalho.excluirParticipante');
Route::post('/projeto/{trabalho}/solicitarCertificado', 'TrabalhoController@solicitarCertificado')->name('trabalho.solicitarCertificado');
Route::get('/projeto/exportar/{id}', 'TrabalhoController@exportProjeto')->name('exportar.projeto');
Route::get('/projeto/substituirParticipante', 'TrabalhoController@telaTrocaPart')->name('trabalho.trocaParticipante');
Route::post('/projeto/substituirParticipante', 'TrabalhoController@trocaParticipante')->name('trabalho.infoTrocaParticipante');
Route::get('/showSubstituicoes', 'TrabalhoController@telaShowSubst')->name('trabalho.telaAnaliseSubstituicoes')->middleware('checkRoles:coordenador,administrador');
Route::post('/aprovarSubstituicao', 'TrabalhoController@aprovarSubstituicao')->name('trabalho.aprovarSubstituicao');
Route::post('/aprovarProposta/{id}', 'TrabalhoController@aprovarProposta')->name('trabalho.aprovarProposta');
Route::post('/certificado/{certificado}', 'CertificadoController@update')->name('certificado.update');
//########## Bolsas
Route::get('/bolsas', 'ParticipanteController@listarParticipanteEdital')->name('bolsas.listar');
Route::post('/bolsas/alteracao', 'ParticipanteController@alterarBolsa')->name('bolsa.alterar');
//########## Arquivar Projeto e Plano
Route::get('/arquivar/projeto', 'TrabalhoController@arquivar')->name('projeto.arquivar');
Route::get('/arquivar/plano', 'ArquivoController@arquivar')->name('arquivo.arquivar');
//######### Imprimir Resultado #################################
Route::get('/usuarios/showResultados/imprimir', 'AdministradorController@imprimirResultados')->name('resultados.gerar');
//########## Relatórios
Route::get('/projeto/planosTrabalho/{id}', 'ArquivoController@listar')->name('planos.listar');
Route::post('/projeto/planosTrabalho/anexarRelatorio', 'ArquivoController@anexarRelatorio')->name('planos.anexar.relatorio');
//########## Documentação Complementar
Route::get('/documentacaoComplementar', 'ParticipanteController@listarParticipanteProjeto')->name('docComplementar.listar');
Route::post('/documentacaoComplementar/enviar', 'ParticipanteController@atualizarDocComplementar')->name('docComplementar.enviar');
//######### Atribuição #######################################
Route::get('/atribuir', 'AtribuicaoController@distribuicaoAutomatica')->name('distribuicao');
Route::get('/atribuirPorArea', 'AtribuicaoController@distribuicaoPorArea')->name('distribuicaoAutomaticaPorArea');
Route::post('/distribuicaoManual', 'AtribuicaoController@distribuicaoManual')->name('distribuicaoManual');
Route::post('/removerAtribuicao', 'AtribuicaoController@deletePorRevisores')->name('atribuicao.delete');
//########## Revisores #########################################
Route::post('/revisor/criar', 'RevisorController@store')->name('revisor.store');
Route::get('/revisor/listarTrabalhos', 'RevisorController@indexListarTrabalhos')->name('revisor.listarTrabalhos');
Route::post('/revisor/email', 'RevisorController@enviarEmailRevisor')->name('revisor.email');
Route::post('/revisor/emailTodos', 'RevisorController@enviarEmailTodosRevisores')->name('revisor.emailTodos');
//########## Rotas de download de documentos ###########################
Route::get('/baixar/anexo-projeto/{id}', 'TrabalhoController@baixarAnexoProjeto')->name('baixar.anexo.projeto');
Route::get('/baixar/anexo-consu/{id}', 'TrabalhoController@baixarAnexoConsu')->name('baixar.anexo.consu');
Route::get('/baixar/anexo-comite/{id}', 'TrabalhoController@baixarAnexoComite')->name('baixar.anexo.comite');
Route::get('/baixar/anexo-justificativa/{id}', 'TrabalhoController@baixarAnexoJustificativa')->name('baixar.anexo.justificativa');
Route::get('/baixar/anexo-lattes/{id}', 'TrabalhoController@baixarAnexoLattes')->name('baixar.anexo.lattes');
Route::get('/baixar/anexo-planilha/{id}', 'TrabalhoController@baixarAnexoPlanilha')->name('baixar.anexo.planilha');
Route::get('/baixar/plano-de-trabalho/{id}', 'ArquivoController@baixarPlano')->name('baixar.plano');
Route::get('/baixar/anexoGrupoPesquisa/{id}', 'TrabalhoController@baixarAnexoGrupoPesquisa')->name('baixar.anexoGrupoPesquisa');
Route::get('/baixar/anexo-temp/{eventoId}/{nomeAnexo}', 'TrabalhoController@baixarAnexoTemp')->name('baixar.anexo.temp');
Route::get('/baixar/evento-temp/{nomeAnexo}', 'TrabalhoController@baixarEventoTemp')->name('baixar.evento.temp');
Route::get('/baixar/documentosParticipante', 'ParticipanteController@baixarDocumento')->name('baixar.documentosParticipante');
Route::get('/baixar/anexoDocExtra/{id}', 'TrabalhoController@baixarAnexoDocExtra')->name('baixar.anexo.docExtra');
});
Route::get('/baixar/edital/{id}', 'EventoController@baixarEdital')->name('baixar.edital');
Route::get('/baixar/modelos/{id}', 'EventoController@baixarModelos')->name('baixar.modelos');
Route::prefix('usuarios')->name('admin.')->group(function () {
//######### Rotas da administração dos usuários ####################
Route::get('/home-admin', 'AdministradorController@index')->name('index')->middleware('checkAdministrador');
Route::get('/usuarios', 'AdministradorController@usuarios')->name('usuarios')->middleware('checkAdministrador');
Route::get('/novo', 'AdministradorController@create')->name('user.create')->middleware('checkAdministrador');
Route::post('/salvar-novo', 'AdministradorController@salvar')->name('user.store')->middleware('checkAdministrador');
Route::get('/editar/{id}', 'AdministradorController@edit')->name('user.edit')->middleware('checkAdministrador');
Route::post('/editar/atualizar/{id}', 'AdministradorController@update')->name('user.update')->middleware('checkAdministrador');
Route::post('/editar/deletar/{id}', 'AdministradorController@destroy')->name('user.destroy')->middleware('checkAdministrador');
Route::get('/editais', 'AdministradorController@editais')->name('editais');
Route::get('/atribuir', 'AdministradorController@atribuir')->name('atribuir');
Route::get('/selecionarAvaliador', 'AdministradorController@selecionar')->name('selecionar');
Route::get('/selecionarProjetos', 'AdministradorController@projetos')->name('projetos');
Route::post('/adicionarAvalEvento', 'AdministradorController@adicionar')->name('adicionar');
Route::post('/removerAvalEvento', 'AdministradorController@remover')->name('remover');
Route::get('/removerProjAval', 'AdministradorController@removerProjAval')->name('removerProjAval');
Route::post('/atribuirAvaliadorProjeto', 'AdministradorController@atribuicaoProjeto')->name('atribuicao.projeto');
Route::post('/enviarConviteEAtribuirProjeto', 'AdministradorController@enviarConviteEAtribuir')->name('convite.atribuicao.projeto');
Route::get('/reenviarConviteAtribuicaoProjeto', 'AdministradorController@reenviarConviteAtribuicaoProjeto')->name('reenviar.atribuicao.projeto');
Route::post('/enviarConviteAvaliador', 'AdministradorController@enviarConvite')->name('enviarConvite');
Route::post('/reenviarConviteAvaliador', 'AdministradorController@reenviarConvite')->name('reenviarConvite');
Route::post('/visualizarParecer', 'AdministradorController@visualizarParecer')->name('visualizarParecer');
Route::get('/visualizarParecer', 'AdministradorController@visualizarParecer')->name('visualizarParecer');
Route::get('/visualizarParecerInterno', 'AdministradorController@visualizarParecerInterno')->name('visualizarParecerInterno');
Route::get('/pareceresProjetos', 'AdministradorController@pareceres')->name('pareceres');
Route::get('/analisarProjetos/{column?}', 'AdministradorController@analisar')->name('analisar')->middleware('checkRoles:coordenador,administrador');
Route::get('/analisarProposta', 'AdministradorController@analisarProposta')->name('analisarProposta')->middleware('checkRoles:coordenador,administrador');
Route::get('/showProjetos', 'AdministradorController@showProjetos')->name('showProjetos');
Route::get('/showResultados', 'AdministradorController@showResultados')->name('showResultados')->middleware(['auth', 'verified']);
});
Route::prefix('naturezas')->group(function () {
//########### Rotas das naturezas ###############################
Route::get('/', 'AdministradorController@naturezas')->name('admin.naturezas')->middleware('checkAdministrador');
Route::get('/index', 'NaturezaController@index')->name('natureza.index')->middleware('checkAdministrador');
Route::get('/nova', 'NaturezaController@create')->name('natureza.criar')->middleware('checkAdministrador');
Route::post('/salvar', 'NaturezaController@store')->name('natureza.salvar')->middleware('checkAdministrador');
Route::get('/detalhes/{id}', 'NaturezaController@show')->name('natureza.show')->middleware('checkAdministrador');
Route::get('/editar/{id}', 'NaturezaController@edit')->name('natureza.editar')->middleware('checkAdministrador');
Route::get('/atualizar/{id}', 'NaturezaController@update')->name('natureza.atualizar')->middleware('checkAdministrador');
Route::get('/excluir/{id}', 'NaturezaController@destroy')->name('natureza.deletar')->middleware('checkAdministrador');
//########### Rotas das grandes areas ##############################
Route::get('/grande-area', 'GrandeAreaController@index')->name('grandearea.index')->middleware('checkAdministrador');
Route::get('/grande-area/nova', 'GrandeAreaController@create')->name('grandearea.criar')->middleware('checkAdministrador');
Route::post('/grande-area/salvar', 'GrandeAreaController@store')->name('grandearea.salvar')->middleware('checkAdministrador');
Route::get('/grande-area/detalhes/{id}', 'GrandeAreaController@show')->name('grandearea.show')->middleware('checkAdministrador');
Route::get('/grande-area/editar/{id}', 'GrandeAreaController@edit')->name('grandearea.editar')->middleware('checkAdministrador');
Route::post('/grande-area/atualizar/{id}', 'GrandeAreaController@update')->name('grandearea.atualizar')->middleware('checkAdministrador');
Route::post('/grande-area/excluir/{id}', 'GrandeAreaController@destroy')->name('grandearea.deletar')->middleware('checkAdministrador');
//#### Rotas das areas, id's de nova e salvar são os ids da grande área a qual a nova área pertence ####
Route::get('/areas', 'AreaController@index')->name('area.index')->middleware('checkAdministrador');
Route::get('/{id}/area/nova', 'AreaController@create')->name('area.criar')->middleware('checkAdministrador');
Route::post('/{id}/area/salvar', 'AreaController@store')->name('area.salvar')->middleware('checkAdministrador');
Route::get('/area/detalhes/{id}', 'AreaController@show')->name('area.show')->middleware('checkAdministrador');
Route::get('/area/editar/{id}', 'AreaController@edit')->name('area.editar')->middleware('checkAdministrador');
Route::post('/area/atualizar/{id}', 'AreaController@update')->name('area.atualizar')->middleware('checkAdministrador');
Route::post('/area/excluir/{id}', 'AreaController@destroy')->name('area.deletar')->middleware('checkAdministrador');
Route::post('/areas/', 'AreaController@consulta')->name('area.consulta');
Route::post('/avalConExterno/', 'AvaliadorController@consultaExterno')->name('aval.consultaExterno');
Route::post('/avalConInterno/', 'AvaliadorController@consultaInterno')->name('aval.consultaInterno');
//### Rotas das subareas, id's de nova e salvar são os ids da área a qual a nova subárea pertence #####
Route::get('/subareas', 'SubAreaController@index')->name('subarea.index')->middleware('checkAdministrador');
Route::get('/{id}/subarea/nova', 'SubAreaController@create')->name('subarea.criar')->middleware('checkAdministrador');
Route::post('/{id}/subarea/salvar', 'SubAreaController@store')->name('subarea.salvar')->middleware('checkAdministrador');
Route::get('/subarea/detalhes/{id}', 'SubAreaController@show')->name('subarea.show')->middleware('checkAdministrador');
Route::get('/subarea/editar/{id}', 'SubAreaController@edit')->name('subarea.editar')->middleware('checkAdministrador');
Route::post('/subarea/atualizar/{id}', 'SubAreaController@update')->name('subarea.atualizar')->middleware('checkAdministrador');
Route::post('/subarea/excluir/{id}', 'SubAreaController@destroy')->name('subarea.deletar')->middleware('checkAdministrador');
Route::post('/subarea/', 'SubAreaController@consulta')->name('subarea.consulta');
Route::post('/funcao-participante/store', 'ParticipanteController@storeFuncao')->name('funcao_participante.store');
Route::post('/funcao-participante/{id}/update', 'ParticipanteController@updateFuncao')->name('funcao_participante.update');
Route::get('/funcao-participante/{id}/destroy', 'ParticipanteController@destroyFuncao')->name('funcao_participante.destroy');
});
//############ Evento ##############################################
Route::prefix('evento')->name('evento.')->group(function () {
Route::get('/criar', 'EventoController@create')->name('criar')->middleware('checkAdministrador');
Route::post('/criar', 'EventoController@store')->name('criar')->middleware('checkAdministrador');
Route::get('/visualizar/{id}', 'EventoController@show')->name('visualizar')->middleware('auth');
Route::get('/listar', 'EventoController@listar')->name('listar')->middleware('auth');
Route::delete('/excluir/{id}', 'EventoController@destroy')->name('deletar')->middleware('checkRoles:coordenador,administrador');
Route::get('/editar/{id}', 'EventoController@edit')->name('editar')->middleware('checkRoles:coordenador,administrador');
Route::post('/editar/{id}', 'EventoController@update')->name('update')->middleware('checkRoles:coordenador,administrador');
Route::post('/setResumo', 'EventoController@setResumo')->name('setResumo')->middleware('checkAdministrador');
Route::post('/setFoto', 'EventoController@setFotoEvento')->name('setFotoEvento')->middleware('checkAdministrador');
});
//########## Rotas de administrador responsavel (Reitor ou pro-reitor)########
Route::prefix('adminResp')->name('adminResp.')->group(function () {
Route::get('/index', 'AdministradorResponsavelController@index')->name('index');
Route::get('/editais', 'AdministradorResponsavelController@editais')->name('editais');
Route::get('/usuarios', 'AdministradorResponsavelController@usuarios')->name('usuarios');
Route::get('/atribuir', 'AdministradorResponsavelController@atribuirPermissao')->name('atribuir');
Route::post('/atribuir', 'AdministradorResponsavelController@atribuirPermissao')->name('atribuir');
Route::post('/verPermissao', 'AdministradorResponsavelController@verPermissao')->name('verPermissao');
});
//########### Rotas Coordenador ##################################
Route::prefix('coordenador')->name('coordenador.')->group(function () {
Route::get('/index', 'CoordenadorComissaoController@index')->name('index');
Route::get('/editais', 'CoordenadorComissaoController@editais')->name('editais');
Route::get('/usuarios', 'CoordenadorComissaoController@usuarios')->name('usuarios');
Route::get('/listarCoord', 'CoordenadorComissaoController@coordenadorComite')->name('coord');
Route::get('/listarAvaliador', 'CoordenadorComissaoController@avaliador')->name('avaliador');
Route::get('/listarProponente', 'CoordenadorComissaoController@proponente')->name('proponente');
Route::get('/listarParticipante', 'CoordenadorComissaoController@participante')->name('participante');
Route::get('/listarTrabalhos', 'CoordenadorComissaoController@listarTrabalhos')->name('listarTrabalhos');
Route::get('/detalhesEdital/{evento_id}', 'CoordenadorComissaoController@detalhesEdital')->name('detalhesEdital');
Route::post('/retornoDetalhes', 'CoordenadorComissaoController@retornoDetalhes')->name('retornoDetalhes');
Route::post('/atribuirAvaliadorTrabalho', 'TrabalhoController@atribuirAvaliadorTrabalho')->name('atribuirAvaliadorTrabalho');
Route::post('/atribuir', 'TrabalhoController@atribuir')->name('atribuir');
Route::post('/atribuir', 'TrabalhoController@atribuir')->name('atribuir');
Route::post('/resposta-solicitacao-desligamento/{desligamento_id}', 'CoordenadorComissaoController@respostaDesligamento')->name('resposta.desligamento');
});
<?php
use App\Notifications\SubmissaoNotification;
use App\Trabalho;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Notification;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/email', function (Request $request) {
$id = Trabalho::find(9)->id;
Notification::send(Auth::user(), new SubmissaoNotification($id));
return 'Ok';
// Auth::user()->notify(new SubmissaoTrabalho('teste'));
});
Route::get('/baixarModeloAvaliacao', 'AdministradorController@baixarModeloAvaliacao')->name('baixarModelo');
Route::get('/', 'UserController@index')->name('home-user');
Route::get('/', 'UserController@inicial')->name('inicial');
Route::get('/home', 'HomeController@index')->name('home')->middleware('verified');
Route::get('/evento/visualizar/naologado/{id}', 'EventoController@showNaoLogado')->name('evento.visualizarNaoLogado');
Route::get('/editais/home', 'EventoController@index')->name('coord.home');
Route::get('/perfil', 'UserController@perfil')->name('perfil');
Auth::routes(['verify' => true]);
//Rota para avaliador atualizar perfil, deixando de ser usuario temporario
Route::post('/perfil-usuario', 'UserController@editarPerfil')->name('perfil.edit')->middleware(['auth', 'verified']);
Route::group(['middleware' => ['isTemp', 'auth', 'verified']], function () {
//######### Proponente ########################################
Route::get('/proponente/index', 'ProponenteController@index')->name('proponente.index');
Route::get('/proponente/cadastro', 'ProponenteController@create')->name('proponente.create');
Route::post('/proponente/cadastro', 'ProponenteController@store')->name('proponente.store');
Route::get('/proponente/editais', 'ProponenteController@editais')->name('proponente.editais');
Route::get('/projetos-submetidos', 'ProponenteController@projetosDoProponente')->name('proponente.projetos');
Route::get('/projetos-edital/{id}', 'ProponenteController@projetosEdital')->name('proponente.projetosEdital')->middleware('auth');
Route::post('/proponente/edital/{edital_id}/projeto/{projeto_id}/solicitar_desligamento/{participante_id}', 'ProponenteController@solicitarDesligamento')->name('proponente.solicitar.desligamento');
//######## Rotas Avaliador ####################################
Route::prefix('avaliacaoRelatorio')->name('avaliacaoRelatorio.')->group(function () {
Route::post('/atribuirAvaliadorPlano', 'AvaliacaoRelatorioController@atribuicaoAvaliador')->name('atribuicao.avaliador')->middleware('checkRoles:coordenador,administrador');
Route::get('/removerAvaliadorPlano/{id}', 'AvaliacaoRelatorioController@removerAvaliador')->name('remover.avaliador')->middleware('checkRoles:coordenador,administrador');
});
Route::get('/trabalho/planos/avaliacao/{id}', 'AvaliacaoRelatorioController@listarUser')->name('planos.avaliacoesUser');
Route::get('/trabalho/planos/avaliacoes/index', 'AvaliacaoRelatorioController@index')->name('planos.avaliacoes.index');
Route::post('/trabalho/planos/avaliacoes/criar', 'AvaliacaoRelatorioController@criar')->name('planos.avaliacoesUser.criar');
Route::prefix('areaTematica')->name('areaTematica.')->group(function () {
Route::get('/editar/{id}', 'AreaTematicaController@edit')->name('edit')->middleware('checkAdministrador');
Route::post('/atualizar/{id}', 'AreaTematicaController@update')->name('atualizar')->middleware('checkAdministrador');
Route::post('/excluir/{id}', 'AreaTematicaController@destroy')->name('deletar')->middleware('checkAdministrador');
Route::post('/salvar', 'AreaTematicaController@store')->name('salvar')->middleware('checkAdministrador');
Route::get('/nova', 'AreaTematicaController@create')->name('criar')->middleware('checkAdministrador');
});
Route::prefix('objetivoDeDenvolvimentoSustentavel')->name('objetivoDeDenvolvimentoSustentavel.')->group(function () {
Route::get('/editar/{id}', 'ObjetivoDeDesenvolvimentoSustentavelController@edit')->name('edit')->middleware('checkAdministrador');
Route::post('/atualizar/{id}', 'ObjetivoDeDesenvolvimentoSustentavelController@update')->name('atualizar')->middleware('checkAdministrador');
Route::post('/excluir/{id}', 'ObjetivoDeDesenvolvimentoSustentavelController@destroy')->name('deletar')->middleware('checkAdministrador');
Route::post('/salvar', 'ObjetivoDeDesenvolvimentoSustentavelController@store')->name('salvar')->middleware('checkAdministrador');
Route::get('/novo', 'ObjetivoDeDesenvolvimentoSustentavelController@create')->name('criar')->middleware('checkAdministrador');
});
//######### Rotas Administrador #################################
Route::get('/perfil-usuario', 'UserController@minhaConta')->name('user.perfil')->middleware(['auth', 'verified']);
//######## Rotas Avaliador ####################################
Route::prefix('avaliador')->name('avaliador.')->group(function () {
Route::get('/index', 'AvaliadorController@index')->name('index')->middleware('auth');
Route::get('/trabalhos', 'AvaliadorController@visualizarTrabalhos')->name('visualizarTrabalho')->middleware('auth');
Route::get('/planos', 'AvaliadorController@listarPlanos')->name('listarPlanos')->middleware('auth');
Route::post('/parecer', 'AvaliadorController@parecer')->name('parecer')->middleware('auth');
Route::post('/parecer/plano', 'AvaliadorController@parecerPlano')->name('parecer.plano')->middleware('auth');
Route::get('/editais', 'AvaliadorController@editais')->name('editais')->middleware('auth');
Route::post('/Enviarparecer', 'AvaliadorController@enviarParecer')->name('enviarParecer')->middleware('auth');
Route::post('/Enviarparecer/plano', 'AvaliadorController@enviarParecerPlano')->name('enviarParecerPlano')->middleware('auth');
Route::get('/Resposta', 'AvaliadorController@conviteResposta')->name('conviteResposta')->middleware('auth');
Route::post('/parecerInterno', 'AvaliadorController@parecerInterno')->name('parecerInterno')->middleware('auth');
Route::post('/EnviarparecerInterno', 'AvaliadorController@enviarParecerInterno')->name('enviarParecerInterno')->middleware('auth');
});
Route::get('/notificacao/listar', 'NotificacaoController@listar')->name('notificacao.listar')->middleware('auth');
Route::get('/notificacao/lista', 'NotificacaoController@listarTrab')->name('notificacao.listarTrab')->middleware('auth');
Route::get('/notificacao/ler/{id}', 'NotificacaoController@ler')->name('notificacao.ler');
Route::get('/home/edital', 'EventoController@index')->name('visualizarEvento');
// ######## rotas de teste #####################################
Route::get('/coordenador/evento/detalhes', 'EventoController@detalhes')->name('coord.detalhesEvento');
//####### Visualizar trabalhos do usuário ######################
Route::get('/user/trabalhos', 'UserController@meusTrabalhos')->name('user.meusTrabalhos');
//######### Cadastrar Comissão ###################################
Route::post('/evento/cadastrarComissao', 'ComissaoController@store')->name('cadastrar.comissao');
Route::post('/evento/cadastrarCoordComissao', 'ComissaoController@coordenadorComissao')->name('cadastrar.coordComissao');
//######### rota downloadArquivo ################################
Route::get('/downloadArquivo', 'HomeController@downloadArquivo')->name('download');
//######### Area do participante ###############################
Route::get('/participante', 'EventoController@areaParticipante')->name('area.participante');
Route::get('participante/editais', 'ParticipanteController@editais')->name('participante.editais');
//######### Participante ########################################
Route::get('/participante/index', 'ParticipanteController@index')->name('participante.index');
Route::get('/participante/edital/{id}', 'ParticipanteController@edital')->name('participante.edital');
//######### Plano de Trablho ########################################
Route::prefix('/plano/trabalho')->name('plano.trabalho.')->group(function () {
Route::get('/index/{evento_id}', 'PlanoTrabalhoController@index')->name('index');
Route::get('/selecionar/{evento_id}', 'PlanoTrabalhoController@selecionarPlanos')->name('selecionarPlanos');
Route::post('/atribuicao', 'PlanoTrabalhoController@atribuicao')->name('atribuicao');
});
//########## Area da comissao ###################################
Route::get('/comissoes', 'EventoController@listComissao')->name('comissoes');
Route::get('/area/comissao', 'EventoController@listComissaoTrabalhos')->name('area.comissao');
//########### Deletar Comissão ###################################
Route::delete('/evento/apagar-comissao/', 'ComissaoController@destroy')->name('delete.comissao');
Route::post('/evento/numTrabalhos', 'EventoController@numTrabalhos')->name('trabalho.numTrabalhos');
//########## Area ###########################################
Route::post('/area/criar', 'AreaController@store')->name('area.store');
//########### Deletar Area ######################################
Route::delete('/area/deletar/{id}', 'AreaController@destroy')->name('area.delete');
//######### Deletar Revisores ##############################
Route::delete('/revisor/apagar', 'RevisorController@destroy')->name('revisor.delete');
//######### AreaModalidade ###################################
Route::post('/areaModalidade/criar', 'AreaModalidadeController@store')->name('areaModalidade.store');
//######### Trabalho ########################################
Route::get('/trabalho/submeter/{id}', 'TrabalhoController@index')->name('trabalho.index');
// Route::get( '/trabalho/visualizar/{id}','TrabalhoController@show' )->name('trabalho.show');
Route::post('/trabalho/novaVersao', 'TrabalhoController@novaVersao')->name('trabalho.novaVersao');
Route::post('/trabalho/criar', 'TrabalhoController@salvar')->name('trabalho.store');
Route::post('/trabalho/criarRascunho', 'TrabalhoController@storeParcial')->name('trabalho.storeParcial');
Route::get('/edital/{id}/projetos', 'TrabalhoController@projetosDoEdital')->name('projetos.edital');
Route::get('/projeto/visualizar/{id}', 'TrabalhoController@show')->name('trabalho.show');
Route::get('/projeto/{id}/editar', 'TrabalhoController@edit')->name('trabalho.editar');
Route::post('/projeto/buscarUsuario', 'TrabalhoController@buscarUsuario')->name('trabalho.buscarUsuario');
Route::post('/projeto/{id}/atualizar', 'TrabalhoController@update')->name('trabalho.update');
Route::get('/projeto/{id}/excluir', 'TrabalhoController@destroy')->name('trabalho.destroy');
Route::get('/projeto/{id}/excluirParticipante', 'TrabalhoController@excluirParticipante')->name('trabalho.excluirParticipante');
Route::post('/projeto/{trabalho}/solicitarCertificado', 'TrabalhoController@solicitarCertificado')->name('trabalho.solicitarCertificado');
Route::get('/projeto/exportar/{id}', 'TrabalhoController@exportProjeto')->name('exportar.projeto');
Route::get('/projeto/substituirParticipante', 'TrabalhoController@telaTrocaPart')->name('trabalho.trocaParticipante');
Route::post('/projeto/substituirParticipante', 'TrabalhoController@trocaParticipante')->name('trabalho.infoTrocaParticipante');
Route::get('/showSubstituicoes', 'TrabalhoController@telaShowSubst')->name('trabalho.telaAnaliseSubstituicoes')->middleware('checkRoles:coordenador,administrador');
Route::post('/aprovarSubstituicao', 'TrabalhoController@aprovarSubstituicao')->name('trabalho.aprovarSubstituicao');
Route::post('/aprovarProposta/{id}', 'TrabalhoController@aprovarProposta')->name('trabalho.aprovarProposta');
Route::post('/certificado/{certificado}', 'CertificadoController@update')->name('certificado.update');
//########## Bolsas
Route::get('/bolsas', 'ParticipanteController@listarParticipanteEdital')->name('bolsas.listar');
Route::post('/bolsas/alteracao', 'ParticipanteController@alterarBolsa')->name('bolsa.alterar');
//########## Arquivar Projeto e Plano
Route::get('/arquivar/projeto', 'TrabalhoController@arquivar')->name('projeto.arquivar');
Route::get('/arquivar/plano', 'ArquivoController@arquivar')->name('arquivo.arquivar');
//######### Imprimir Resultado #################################
Route::get('/usuarios/showResultados/imprimir', 'AdministradorController@imprimirResultados')->name('resultados.gerar');
//########## Relatórios
Route::get('/projeto/planosTrabalho/{id}', 'ArquivoController@listar')->name('planos.listar');
Route::post('/projeto/planosTrabalho/anexarRelatorio', 'ArquivoController@anexarRelatorio')->name('planos.anexar.relatorio');
//########## Documentação Complementar
Route::get('/documentacaoComplementar', 'ParticipanteController@listarParticipanteProjeto')->name('docComplementar.listar');
Route::post('/documentacaoComplementar/enviar', 'ParticipanteController@atualizarDocComplementar')->name('docComplementar.enviar');
//######### Atribuição #######################################
Route::get('/atribuir', 'AtribuicaoController@distribuicaoAutomatica')->name('distribuicao');
Route::get('/atribuirPorArea', 'AtribuicaoController@distribuicaoPorArea')->name('distribuicaoAutomaticaPorArea');
Route::post('/distribuicaoManual', 'AtribuicaoController@distribuicaoManual')->name('distribuicaoManual');
Route::post('/removerAtribuicao', 'AtribuicaoController@deletePorRevisores')->name('atribuicao.delete');
//########## Revisores #########################################
Route::post('/revisor/criar', 'RevisorController@store')->name('revisor.store');
Route::get('/revisor/listarTrabalhos', 'RevisorController@indexListarTrabalhos')->name('revisor.listarTrabalhos');
Route::post('/revisor/email', 'RevisorController@enviarEmailRevisor')->name('revisor.email');
Route::post('/revisor/emailTodos', 'RevisorController@enviarEmailTodosRevisores')->name('revisor.emailTodos');
//########## Rotas de download de documentos ###########################
Route::get('/baixar/anexo-projeto/{id}', 'TrabalhoController@baixarAnexoProjeto')->name('baixar.anexo.projeto');
Route::get('/baixar/anexo-consu/{id}', 'TrabalhoController@baixarAnexoConsu')->name('baixar.anexo.consu');
Route::get('/baixar/anexo-comite/{id}', 'TrabalhoController@baixarAnexoComite')->name('baixar.anexo.comite');
Route::get('/baixar/anexo-justificativa/{id}', 'TrabalhoController@baixarAnexoJustificativa')->name('baixar.anexo.justificativa');
Route::get('/baixar/anexo-lattes/{id}', 'TrabalhoController@baixarAnexoLattes')->name('baixar.anexo.lattes');
Route::get('/baixar/anexo-planilha/{id}', 'TrabalhoController@baixarAnexoPlanilha')->name('baixar.anexo.planilha');
Route::get('/baixar/plano-de-trabalho/{id}', 'ArquivoController@baixarPlano')->name('baixar.plano');
Route::get('/baixar/anexoGrupoPesquisa/{id}', 'TrabalhoController@baixarAnexoGrupoPesquisa')->name('baixar.anexoGrupoPesquisa');
Route::get('/baixar/anexo-temp/{eventoId}/{nomeAnexo}', 'TrabalhoController@baixarAnexoTemp')->name('baixar.anexo.temp');
Route::get('/baixar/evento-temp/{nomeAnexo}', 'TrabalhoController@baixarEventoTemp')->name('baixar.evento.temp');
Route::get('/baixar/documentosParticipante', 'ParticipanteController@baixarDocumento')->name('baixar.documentosParticipante');
Route::get('/baixar/anexoDocExtra/{id}', 'TrabalhoController@baixarAnexoDocExtra')->name('baixar.anexo.docExtra');
});
Route::get('/baixar/edital/{id}', 'EventoController@baixarEdital')->name('baixar.edital');
Route::get('/baixar/modelos/{id}', 'EventoController@baixarModelos')->name('baixar.modelos');
Route::prefix('usuarios')->name('admin.')->group(function () {
//######### Rotas da administração dos usuários ####################
Route::get('/home-admin', 'AdministradorController@index')->name('index')->middleware('checkAdministrador');
Route::get('/usuarios', 'AdministradorController@usuarios')->name('usuarios')->middleware('checkAdministrador');
Route::get('/novo', 'AdministradorController@create')->name('user.create')->middleware('checkAdministrador');
Route::post('/salvar-novo', 'AdministradorController@salvar')->name('user.store')->middleware('checkAdministrador');
Route::get('/editar/{id}', 'AdministradorController@edit')->name('user.edit')->middleware('checkAdministrador');
Route::post('/editar/atualizar/{id}', 'AdministradorController@update')->name('user.update')->middleware('checkAdministrador');
Route::post('/editar/deletar/{id}', 'AdministradorController@destroy')->name('user.destroy')->middleware('checkAdministrador');
Route::get('/editais', 'AdministradorController@editais')->name('editais');
Route::get('/atribuir', 'AdministradorController@atribuir')->name('atribuir');
Route::get('/selecionarAvaliador', 'AdministradorController@selecionar')->name('selecionar');
Route::get('/selecionarProjetos', 'AdministradorController@projetos')->name('projetos');
Route::post('/adicionarAvalEvento', 'AdministradorController@adicionar')->name('adicionar');
Route::post('/removerAvalEvento', 'AdministradorController@remover')->name('remover');
Route::get('/removerProjAval', 'AdministradorController@removerProjAval')->name('removerProjAval');
Route::post('/atribuirAvaliadorProjeto', 'AdministradorController@atribuicaoProjeto')->name('atribuicao.projeto');
Route::post('/enviarConviteEAtribuirProjeto', 'AdministradorController@enviarConviteEAtribuir')->name('convite.atribuicao.projeto');
Route::get('/reenviarConviteAtribuicaoProjeto', 'AdministradorController@reenviarConviteAtribuicaoProjeto')->name('reenviar.atribuicao.projeto');
Route::post('/enviarConviteAvaliador', 'AdministradorController@enviarConvite')->name('enviarConvite');
Route::post('/reenviarConviteAvaliador', 'AdministradorController@reenviarConvite')->name('reenviarConvite');
Route::post('/visualizarParecer', 'AdministradorController@visualizarParecer')->name('visualizarParecer');
Route::get('/visualizarParecer', 'AdministradorController@visualizarParecer')->name('visualizarParecer');
Route::get('/visualizarParecerInterno', 'AdministradorController@visualizarParecerInterno')->name('visualizarParecerInterno');
Route::get('/pareceresProjetos', 'AdministradorController@pareceres')->name('pareceres');
Route::get('/analisarProjetos/{column?}', 'AdministradorController@analisar')->name('analisar')->middleware('checkRoles:coordenador,administrador');
Route::get('/analisarProposta', 'AdministradorController@analisarProposta')->name('analisarProposta')->middleware('checkRoles:coordenador,administrador');
Route::get('/showProjetos', 'AdministradorController@showProjetos')->name('showProjetos');
Route::get('/showResultados', 'AdministradorController@showResultados')->name('showResultados')->middleware(['auth', 'verified']);
});
Route::prefix('naturezas')->group(function () {
//########### Rotas das naturezas ###############################
Route::get('/', 'AdministradorController@naturezas')->name('admin.naturezas')->middleware('checkAdministrador');
Route::get('/index', 'NaturezaController@index')->name('natureza.index')->middleware('checkAdministrador');
Route::get('/nova', 'NaturezaController@create')->name('natureza.criar')->middleware('checkAdministrador');
Route::post('/salvar', 'NaturezaController@store')->name('natureza.salvar')->middleware('checkAdministrador');
Route::get('/detalhes/{id}', 'NaturezaController@show')->name('natureza.show')->middleware('checkAdministrador');
Route::get('/editar/{id}', 'NaturezaController@edit')->name('natureza.editar')->middleware('checkAdministrador');
Route::get('/atualizar/{id}', 'NaturezaController@update')->name('natureza.atualizar')->middleware('checkAdministrador');
Route::get('/excluir/{id}', 'NaturezaController@destroy')->name('natureza.deletar')->middleware('checkAdministrador');
//########### Rotas das grandes areas ##############################
Route::get('/grande-area', 'GrandeAreaController@index')->name('grandearea.index')->middleware('checkAdministrador');
Route::get('/grande-area/nova', 'GrandeAreaController@create')->name('grandearea.criar')->middleware('checkAdministrador');
Route::post('/grande-area/salvar', 'GrandeAreaController@store')->name('grandearea.salvar')->middleware('checkAdministrador');
Route::get('/grande-area/detalhes/{id}', 'GrandeAreaController@show')->name('grandearea.show')->middleware('checkAdministrador');
Route::get('/grande-area/editar/{id}', 'GrandeAreaController@edit')->name('grandearea.editar')->middleware('checkAdministrador');
Route::post('/grande-area/atualizar/{id}', 'GrandeAreaController@update')->name('grandearea.atualizar')->middleware('checkAdministrador');
Route::post('/grande-area/excluir/{id}', 'GrandeAreaController@destroy')->name('grandearea.deletar')->middleware('checkAdministrador');
//#### Rotas das areas, id's de nova e salvar são os ids da grande área a qual a nova área pertence ####
Route::get('/areas', 'AreaController@index')->name('area.index')->middleware('checkAdministrador');
Route::get('/{id}/area/nova', 'AreaController@create')->name('area.criar')->middleware('checkAdministrador');
Route::post('/{id}/area/salvar', 'AreaController@store')->name('area.salvar')->middleware('checkAdministrador');
Route::get('/area/detalhes/{id}', 'AreaController@show')->name('area.show')->middleware('checkAdministrador');
Route::get('/area/editar/{id}', 'AreaController@edit')->name('area.editar')->middleware('checkAdministrador');
Route::post('/area/atualizar/{id}', 'AreaController@update')->name('area.atualizar')->middleware('checkAdministrador');
Route::post('/area/excluir/{id}', 'AreaController@destroy')->name('area.deletar')->middleware('checkAdministrador');
Route::post('/areas/', 'AreaController@consulta')->name('area.consulta');
Route::post('/avalConExterno/', 'AvaliadorController@consultaExterno')->name('aval.consultaExterno');
Route::post('/avalConInterno/', 'AvaliadorController@consultaInterno')->name('aval.consultaInterno');
//### Rotas das subareas, id's de nova e salvar são os ids da área a qual a nova subárea pertence #####
Route::get('/subareas', 'SubAreaController@index')->name('subarea.index')->middleware('checkAdministrador');
Route::get('/{id}/subarea/nova', 'SubAreaController@create')->name('subarea.criar')->middleware('checkAdministrador');
Route::post('/{id}/subarea/salvar', 'SubAreaController@store')->name('subarea.salvar')->middleware('checkAdministrador');
Route::get('/subarea/detalhes/{id}', 'SubAreaController@show')->name('subarea.show')->middleware('checkAdministrador');
Route::get('/subarea/editar/{id}', 'SubAreaController@edit')->name('subarea.editar')->middleware('checkAdministrador');
Route::post('/subarea/atualizar/{id}', 'SubAreaController@update')->name('subarea.atualizar')->middleware('checkAdministrador');
Route::post('/subarea/excluir/{id}', 'SubAreaController@destroy')->name('subarea.deletar')->middleware('checkAdministrador');
Route::post('/subarea/', 'SubAreaController@consulta')->name('subarea.consulta');
Route::post('/funcao-participante/store', 'ParticipanteController@storeFuncao')->name('funcao_participante.store');
Route::post('/funcao-participante/{id}/update', 'ParticipanteController@updateFuncao')->name('funcao_participante.update');
Route::get('/funcao-participante/{id}/destroy', 'ParticipanteController@destroyFuncao')->name('funcao_participante.destroy');
});
//############ Evento ##############################################
Route::prefix('evento')->name('evento.')->group(function () {
Route::get('/criar', 'EventoController@create')->name('criar')->middleware('checkAdministrador');
Route::post('/criar', 'EventoController@store')->name('criar')->middleware('checkAdministrador');
Route::get('/visualizar/{id}', 'EventoController@show')->name('visualizar')->middleware('auth');
Route::get('/listar', 'EventoController@listar')->name('listar')->middleware('auth');
Route::delete('/excluir/{id}', 'EventoController@destroy')->name('deletar')->middleware('checkRoles:coordenador,administrador');
Route::get('/editar/{id}', 'EventoController@edit')->name('editar')->middleware('checkRoles:coordenador,administrador');
Route::post('/editar/{id}', 'EventoController@update')->name('update')->middleware('checkRoles:coordenador,administrador');
Route::post('/setResumo', 'EventoController@setResumo')->name('setResumo')->middleware('checkAdministrador');
Route::post('/setFoto', 'EventoController@setFotoEvento')->name('setFotoEvento')->middleware('checkAdministrador');
});
//########## Rotas de administrador responsavel (Reitor ou pro-reitor)########
Route::prefix('adminResp')->name('adminResp.')->group(function () {
Route::get('/index', 'AdministradorResponsavelController@index')->name('index');
Route::get('/editais', 'AdministradorResponsavelController@editais')->name('editais');
Route::get('/usuarios', 'AdministradorResponsavelController@usuarios')->name('usuarios');
Route::get('/atribuir', 'AdministradorResponsavelController@atribuirPermissao')->name('atribuir');
Route::post('/atribuir', 'AdministradorResponsavelController@atribuirPermissao')->name('atribuir');
Route::post('/verPermissao', 'AdministradorResponsavelController@verPermissao')->name('verPermissao');
});
//########### Rotas Coordenador ##################################
Route::prefix('coordenador')->name('coordenador.')->group(function () {
Route::get('/index', 'CoordenadorComissaoController@index')->name('index');
Route::get('/editais', 'CoordenadorComissaoController@editais')->name('editais');
Route::get('/usuarios', 'CoordenadorComissaoController@usuarios')->name('usuarios');
Route::get('/listarCoord', 'CoordenadorComissaoController@coordenadorComite')->name('coord');
Route::get('/listarAvaliador', 'CoordenadorComissaoController@avaliador')->name('avaliador');
Route::get('/listarProponente', 'CoordenadorComissaoController@proponente')->name('proponente');
Route::get('/listarParticipante', 'CoordenadorComissaoController@participante')->name('participante');
Route::get('/listarTrabalhos', 'CoordenadorComissaoController@listarTrabalhos')->name('listarTrabalhos');
Route::get('/detalhesEdital/{evento_id}', 'CoordenadorComissaoController@detalhesEdital')->name('detalhesEdital');
Route::post('/retornoDetalhes', 'CoordenadorComissaoController@retornoDetalhes')->name('retornoDetalhes');
Route::post('/atribuirAvaliadorTrabalho', 'TrabalhoController@atribuirAvaliadorTrabalho')->name('atribuirAvaliadorTrabalho');
Route::post('/atribuir', 'TrabalhoController@atribuir')->name('atribuir');
Route::post('/atribuir', 'TrabalhoController@atribuir')->name('atribuir');
Route::post('/resposta-solicitacao-desligamento/{desligamento_id}', 'CoordenadorComissaoController@respostaDesligamento')->name('resposta.desligamento');
});
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