"git@sites.upe.br:walter.felipe/submeta.git" did not exist on "900cd536061a9f14912c1a0057ef5b6f45202f69"
Commit 347c241e authored by Guilherme Silva's avatar Guilherme Silva
Browse files

Merge branch 'master' of https://github.com/GuilhermeGz/submeta

parents 2c84bdb2 b81c5a5b
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Desligamento extends Model
{
protected $fillable = [
'status',
'justificativa',
'participante_id',
'trabalho_id',
];
public const STATUS_ENUM = [
'solicitado' => 1,
'aceito' => 2,
'recusado' => 3,
];
public function participante(){
return $this->belongsTo(Participante::class, 'participante_id', 'id');
}
public function trabalho(){
return $this->belongsTo(Trabalho::class, 'trabalho_id', 'id');
}
public function getStatus()
{
switch ($this->status) {
case Desligamento::STATUS_ENUM['solicitado']:
return 'Solicitado';
break;
case Desligamento::STATUS_ENUM['aceito']:
return 'Aceito';
break;
case Desligamento::STATUS_ENUM['recusado']:
return 'Recusado';
break;
default:
break;
}
}
}
...@@ -67,26 +67,25 @@ class AdministradorController extends Controller ...@@ -67,26 +67,25 @@ class AdministradorController extends Controller
return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]); return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]);
} }
public function analisar(Request $request){ public function analisar(Request $request){
$evento = Evento::find($request->evento_id);
$evento = Evento::where('id', $request->evento_id)->first(); $status = ['submetido', 'avaliado', 'aprovado', 'reprovado', 'corrigido'];
$trabalhosSubmetidos = $evento->trabalhos->where('status', 'submetido'); $withPath = '/usuarios/analisarProjetos?evento_id='.$evento->id;
$trabalhosAvaliados = $evento->trabalhos->Where('status', 'avaliado'); if($request->column != null ) {
$trabalhosAprovados = $evento->trabalhos->Where('status', 'aprovado'); $status = [$request->column];
$trabalhosReprovados = $evento->trabalhos->Where('status', 'reprovado'); $withPath = '/usuarios/analisarProjetos/'.$request->column.'?evento_id='.$evento->id;
$trabalhosCorrigidos = $evento->trabalhos->Where('status', 'corrigido'); }
$trabalhos = $this->paginate($trabalhosSubmetidos); $trabalhos = Trabalho::where('evento_id', $evento->id)
$trabalhos = $this->paginate($trabalhosSubmetidos ->whereIn('status', $status)
->merge($trabalhosAvaliados)->merge($trabalhosAprovados) ->orderBy('titulo')
->merge($trabalhosReprovados)->merge($trabalhosCorrigidos)->sortBy('titulo')) ->paginate(5)
->withPath('/usuarios/analisarProjetos?evento_id='.$evento->id); ->withPath($withPath);
$funcaoParticipantes = FuncaoParticipantes::all(); $funcaoParticipantes = FuncaoParticipantes::all();
// $participantes = Participante::where('trabalho_id', $id)->get(); // $participantes = Participante::where('trabalho_id', $id)->get();
// $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get(); // $participantesUsersIds = Participante::where('trabalho_id', $id)->select('user_id')->get();
// $participantes = User::whereIn('id', $participantesUsersIds)->get(); // $participantes = User::whereIn('id', $participantesUsersIds)->get();
return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes]); return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes, 'column' => $request->column]);
} }
// Utilizado para paginação de Collection // Utilizado para paginação de Collection
...@@ -110,13 +109,15 @@ class AdministradorController extends Controller ...@@ -110,13 +109,15 @@ class AdministradorController extends Controller
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get(); $avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
$trabalho->aval = $avalProjeto; $trabalho->aval = $avalProjeto;
$grandeAreas = GrandeArea::orderBy('nome')->get();
return view('administrador.analisarProposta')->with( return view('administrador.analisarProposta')->with(
[ 'trabalho' => $trabalho, [ 'trabalho' => $trabalho,
'funcaoParticipantes' => $funcaoParticipantes, 'funcaoParticipantes' => $funcaoParticipantes,
'evento' => $evento, 'evento' => $evento,
'substituicoesPendentes' => $substituicoesPendentes, 'substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,]); 'substituicoesProjeto' => $substituicoesProjeto,
'grandeAreas' => $grandeAreas,]);
} }
public function showProjetos(Request $request){ public function showProjetos(Request $request){
...@@ -589,6 +590,78 @@ class AdministradorController extends Controller ...@@ -589,6 +590,78 @@ class AdministradorController extends Controller
} }
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();
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));
}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));
$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);
$user->save();
$avaliador->save();
}else{
$avaliador = $user->avaliadors;
$avaliador->eventos()->attach($evento);
$user->save();
$avaliador->save();
}
$trabalho = Trabalho::where('id', $request->trabalho_id)->first();
$trabalho->avaliadors()->attach($avaliador);
$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){ public function reenviarConviteAtribuicaoProjeto(Request $request){
$evento = Evento::where('id', $request->evento_id)->first(); $evento = Evento::where('id', $request->evento_id)->first();
$avaliador = Avaliador::where('id', $request->avaliador_id)->first(); $avaliador = Avaliador::where('id', $request->avaliador_id)->first();
......
...@@ -2,13 +2,18 @@ ...@@ -2,13 +2,18 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Auth;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Evento; use App\Evento;
use App\CoordenadorComissao; use App\CoordenadorComissao;
use App\Avaliador; use App\Avaliador;
use App\Desligamento;
use App\Mail\SolicitacaoDesligamento;
use App\Notificacao;
use App\Proponente; use App\Proponente;
use App\Participante; use App\Participante;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
class CoordenadorComissaoController extends Controller class CoordenadorComissaoController extends Controller
{ {
...@@ -114,7 +119,30 @@ class CoordenadorComissaoController extends Controller ...@@ -114,7 +119,30 @@ class CoordenadorComissaoController extends Controller
} }
public function respostaDesligamento(Request $request)
{
$desligamento = Desligamento::find($request->desligamento);
$desligamento->status = intval($request->opcao);
$desligamento->update();
if($desligamento->status == Desligamento::STATUS_ENUM['aceito']){
$desligamento->participante->delete();
}
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $desligamento->trabalho->proponente_id,
'trabalho_id' => $desligamento->trabalho->id,
'lido' => false,
'tipo' => 7,
]);
$notificacao->save();
Mail::to($desligamento->trabalho->proponente->user->email)->send(new SolicitacaoDesligamento($desligamento->trabalho->evento, $desligamento->trabalho, "resultado"));
return redirect()->back()->with(['sucesso' => 'Desligamento '.$desligamento->getStatus().' com sucesso.']);
}
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Certificado;
use App\Notificacao; use App\Notificacao;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
...@@ -125,6 +126,13 @@ class NotificacaoController extends Controller ...@@ -125,6 +126,13 @@ class NotificacaoController extends Controller
} else { } else {
return redirect()->route('avaliador.editais'); return redirect()->route('avaliador.editais');
} }
}elseif ($notificacao->tipo == 7) {
if ($notificacao->destinatario_id == Auth()->user()->id && Auth()->user()->tipo != 'proponente') {
return redirect()->route('admin.analisarProposta', ['id' => $notificacao->trabalho->id]);
}
} elseif ($notificacao->tipo == 6) {
$trabalho = $notificacao->trabalho;
return view('administrador.visualizarSolicitacaoCertificado', compact('notificacao', 'trabalho'));
} }
} }
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Desligamento;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
...@@ -10,7 +11,12 @@ use App\User; ...@@ -10,7 +11,12 @@ use App\User;
use App\Trabalho; use App\Trabalho;
use App\Proponente; use App\Proponente;
use App\Evento; use App\Evento;
use App\Mail\SolicitacaoDesligamento;
use App\Mail\SolicitacaoSubstituicao;
use App\Notificacao;
use App\Participante;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Mail;
class ProponenteController extends Controller class ProponenteController extends Controller
{ {
...@@ -111,4 +117,35 @@ class ProponenteController extends Controller ...@@ -111,4 +117,35 @@ class ProponenteController extends Controller
return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje'=>$hoje]); return view('proponente.projetosEdital')->with(['edital' => $edital, 'projetos' => $projetos, 'hoje'=>$hoje]);
} }
public function solicitarDesligamento(Request $request){
$participante = Participante::find($request->participante);
$request->validate([
'justificativa' => 'required|max:5000|min:5',
]);
$desligamento = new Desligamento();
$desligamento->status = Desligamento::STATUS_ENUM['solicitado'];
$desligamento->justificativa = $request->justificativa;
$desligamento->trabalho_id = $request->trabalho;
$desligamento->participante_id = $participante->id;
$desligamento->save();
$trabalho = Trabalho::find($request->trabalho);
$notificacao = Notificacao::create([
'remetente_id' => Auth::user()->id,
'destinatario_id' => $trabalho->evento->coordenadorComissao->user_id,
'trabalho_id' => $trabalho->id,
'lido' => false,
'tipo' => 7,
]);
$notificacao->save();
Mail::to($trabalho->evento->coordenadorComissao->user->email)->send(new SolicitacaoDesligamento($trabalho->evento, $trabalho));
return redirect()->back()->with(['sucesso' => 'Solicitação de desligamento feita com sucesso.']);
}
} }
...@@ -4,6 +4,7 @@ namespace App\Http\Controllers; ...@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use PDF; use PDF;
use App; use App;
use App\Administrador;
use Auth; use Auth;
use App\Area; use App\Area;
use App\User; use App\User;
...@@ -23,6 +24,7 @@ use App\Modalidade; ...@@ -23,6 +24,7 @@ use App\Modalidade;
use App\Proponente; use App\Proponente;
use App\Participante; use App\Participante;
use App\AreaModalidade; use App\AreaModalidade;
use App\Certificado;
use Illuminate\Http\File; use Illuminate\Http\File;
use App\Mail\EventoCriado; use App\Mail\EventoCriado;
use Illuminate\Support\Str; use Illuminate\Support\Str;
...@@ -41,8 +43,12 @@ use Illuminate\Support\Facades\Storage; ...@@ -41,8 +43,12 @@ use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use App\Mail\EmailParaUsuarioNaoCadastrado; use App\Mail\EmailParaUsuarioNaoCadastrado;
use App\Mail\SolicitacaoSubstituicao; use App\Mail\SolicitacaoSubstituicao;
use App\Notificacao;
use App\Notifications\SolicitacaoCertificadoNotification;
use App\Notifications\SubmissaoNotification; use App\Notifications\SubmissaoNotification;
use App\Notifications\SubmissaoRecebidaNotification; use App\Notifications\SubmissaoRecebidaNotification;
use App\SolicitacaoCertificado;
use App\SolicitacaoParticipante;
use App\Substituicao; use App\Substituicao;
use Illuminate\Support\Facades\Notification; use Illuminate\Support\Facades\Notification;
...@@ -447,6 +453,42 @@ class TrabalhoController extends Controller ...@@ -447,6 +453,42 @@ class TrabalhoController extends Controller
return redirect()->back(); 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) public function novaVersao(Request $request)
{ {
......
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class SolicitacaoDesligamento extends Mailable
{
use Queueable, SerializesModels;
public $edital;
public $projeto;
public $tipo;
public function __construct($edital, $projeto, $tipo = '')
{
$this->edital = $edital;
$this->projeto = $projeto;
$this->tipo = $tipo;
}
public function build(){
return $this->from('lmtsteste@gmail.com', 'Submeta - LMTS')
->subject('Solicitação de Desligamento')
->view('emails.solicitacaoDesligamento')
->with([
'edital' => $this->edital,
'projeto' => $this->projeto,
'tipo' => $this->tipo
]);
}
}
...@@ -12,7 +12,7 @@ class Notificacao extends Model ...@@ -12,7 +12,7 @@ class Notificacao extends Model
* @var array * @var array
*/ */
protected $fillable = [ protected $fillable = [
'lido', 'tipo', 'destinatario_id', 'remetente_id', 'perfil_id', 'trabalho_id', 'lido', 'tipo', 'destinatario_id', 'remetente_id', 'perfil_id', 'trabalho_id', 'solicitacao_certificado_id',
]; ];
public function destinatario(){ public function destinatario(){
...@@ -26,4 +26,9 @@ class Notificacao extends Model ...@@ -26,4 +26,9 @@ class Notificacao extends Model
public function trabalho(){ public function trabalho(){
return $this->belongsTo(Trabalho::class,'trabalho_id','id'); return $this->belongsTo(Trabalho::class,'trabalho_id','id');
} }
public function solicitacaoCertificado()
{
return $this->belongsTo('\App\SolicitacaoCertificado', 'solicitacao_certificado_id');
}
} }
<?php
namespace App\Notifications;
use App\Proponente;
use App\Trabalho;
use App\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
use Illuminate\Support\Str;
class SolicitacaoCertificadoNotification extends Notification
{
use Queueable;
public $proponente;
public $trabalho;
public $destinatario;
public $users;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct(Proponente $proponente, Trabalho $trabalho, User $destinatario, $users)
{
$this->proponente = $proponente;
$this->trabalho = $trabalho;
$this->destinatario = $destinatario;
$this->users = $users;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$nomes = $this->users
->reject(function ($value, $key) {
return $value->name == $this->proponente->user->name;
})->map(function($user) {
return $user->name;
})->implode(', ');
$qtd = $this->users->count();
return (new MailMessage)
->subject('Recebimento de solicitação de certificado/declaração')
->greeting("Olá, {$notifiable->name}!")
->line("O proponente ". $this->proponente->user->name . " registrou uma solicitação de certificado/declaração para ". Str::plural('o', $qtd) . ' ' . Str::plural('seguinte', $qtd) . ' ' . Str::plural('discente', $qtd) . ': ' . $nomes)
->line('Obrigado por usar o nosso sistema.')
->markdown('vendor.notifications.email');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
...@@ -34,4 +34,11 @@ class Participante extends Model ...@@ -34,4 +34,11 @@ class Participante extends Model
return $this->hasOne('App\Arquivo', 'participanteId'); return $this->hasOne('App\Arquivo', 'participanteId');
} }
public function documentacaoComplementar() {
return $this->hasOne('App\DocumentacaoComplementar', 'participante_id');
}
public function desligamentos() {
return $this->hasMany('App\Desligamento', 'participante_id')->orderBy('created_at', 'DESC');
}
} }
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class SolicitacaoCertificado extends Model
{
protected $table = "solicitacoes_certificados";
protected $fillable = [
'trabalho_id'
];
public function solicitacoesParticipantes()
{
return $this->hasMany('App\SolicitacaoParticipante', 'solicitacao_certificado_id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class SolicitacaoParticipante extends Model
{
protected $table = "solicitacoes_participantes";
protected $fillable = [
'solicitacao_certificado_id', 'user_id'
];
public function solicitacaoCertificado()
{
return $this->belongsTo('App\SolicitacaoCertificado', 'solicitacao_certificado_id');
}
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
}
...@@ -110,4 +110,13 @@ class Trabalho extends Model ...@@ -110,4 +110,13 @@ class Trabalho extends Model
public function notificacoes(){ public function notificacoes(){
return $this->hasMany(Notificacao::class, 'trabalho_id', 'id'); 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');
}
} }
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCertificadosTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('solicitacoes_certificados', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('solicitacoes_certificados');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateDesligamentosTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('desligamentos', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('status');
$table->text('justificativa');
$table->unsignedBigInteger('participante_id');
$table->foreign('participante_id')->references('id')->on('participantes');
$table->unsignedBigInteger('trabalho_id');
$table->foreign('trabalho_id')->references('id')->on('trabalhos');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('desligamentos');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSolicitacaoParticipantesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('solicitacoes_participantes', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->unsignedBigInteger('solicitacao_certificado_id');
$table->foreign('solicitacao_certificado_id')->references('id')->on('solicitacoes_certificados');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('solicitacoes_participantes');
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddSolicitacaoCertificadoToNotificacaos extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('notificacaos', function (Blueprint $table) {
$table->unsignedBigInteger('solicitacao_certificado_id')->nullable();
$table->foreign('solicitacao_certificado_id')->references('id')->on('solicitacoes_certificados');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('notificacaos', function (Blueprint $table) {
$table->dropForeign(['solicitacao_certificado_id']);
$table->dropColumn('solicitacao_certificado_id');
});
}
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
@section('content') @section('content')
<div class="row justify-content-center" style="margin-top: 100px; overflow-x: hidden;overflow-y:hidden"> <div class="row justify-content-center" style="margin-top: 100px;">
<div class="col-md-11"> <div class="col-md-11">
<div class="row"> <div class="row">
<div class="col-sm-7"> <div class="col-sm-7">
...@@ -29,7 +29,35 @@ ...@@ -29,7 +29,35 @@
</h6> </h6>
</div> </div>
</div> </div>
<div class="row">
<div class="col-sm-1 mt-5">
<div class="btn-group dropup">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Filtro @isset ($column) - {{$column}} @endisset
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<a class="dropdown-item" href="{{route('admin.analisar', ['evento_id' => $evento->id])}}">
Todos
</a>
<a class="dropdown-item" href="{{route('admin.analisar', ['evento_id' => $evento->id, 'column' => 'aprovado'])}}">
Aprovados
</a>
<a class="dropdown-item" href="{{route('admin.analisar', ['evento_id' => $evento->id, 'column' => 'reprovado'])}}">
Reprovados
</a>
<a class="dropdown-item" href="{{route('admin.analisar', ['evento_id' => $evento->id, 'column' => 'submetido'])}}">
Submetidos
</a>
<a class="dropdown-item" href="{{route('admin.analisar', ['evento_id' => $evento->id, 'column' => 'avaliado'])}}">
Avaliados
</a>
<a class="dropdown-item" href="{{route('admin.analisar', ['evento_id' => $evento->id, 'column' => 'corrigido'])}}">
Corrigidos
</a>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
......
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
<a href="" data-toggle="modal" data-target="#modalVizuSubstituicao" class="button">Substituições Pendentes</a> <a href="" data-toggle="modal" data-target="#modalVizuSubstituicao" class="button">Substituições Pendentes</a>
<img class="" src="{{asset('img/icons/warning.ico')}}" style="width:15px" alt=""> <img class="" src="{{asset('img/icons/warning.ico')}}" style="width:15px" alt="">
@else @else
<a href="" data-toggle="modal" data-target="#modalVizuSubstituicao" class="button">Substituições</a> <a href="" data-toggle="modal" data-target="#modalVizuSubstituicao" class="button">Substituições/Desligamentos</a>
@endif @endif
</div> </div>
</div> </div>
...@@ -130,7 +130,7 @@ ...@@ -130,7 +130,7 @@
<div class="modal-header" style="overflow-x:auto; padding-left: 31px"> <div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5> <h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6"> <button type="button" class="close" aria-label="Close" style="padding-top: 8px; color:#1492E6" onclick="abrirHistorico({{$participante->id}}, 0)">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
...@@ -144,14 +144,14 @@ ...@@ -144,14 +144,14 @@
@foreach($substituicoesProjeto as $subs) @foreach($substituicoesProjeto as $subs)
<!-- Modal vizualizar info participante substituido --> <!-- Modal vizualizar info participante substituido -->
<div class="modal fade" id="modalVizuParticipanteSub{{$subs->participanteSubstituido()->withTrashed()->first()->id}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal fade" id="modalVizuParticipanteSubstituido{{$subs->participanteSubstituido()->withTrashed()->first()->id}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg"> <div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header" style="overflow-x:auto; padding-left: 31px"> <div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5> <h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6"> <button type="button" class="close" aria-label="Close" style="padding-top: 8px; color:#1492E6" onclick="abrirHistorico({{$subs->participanteSubstituido()->withTrashed()->first()->id}}, 1)">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
...@@ -164,14 +164,14 @@ ...@@ -164,14 +164,14 @@
</div> </div>
<!-- Modal vizualizar info participante substituto --> <!-- Modal vizualizar info participante substituto -->
<div class="modal fade" id="modalVizuParticipanteSub{{$subs->participanteSubstituto()->withTrashed()->first()->id}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal fade" id="modalVizuParticipanteSubstituto{{$subs->participanteSubstituto()->withTrashed()->first()->id}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg"> <div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header" style="overflow-x:auto; padding-left: 31px"> <div class="modal-header" style="overflow-x:auto; padding-left: 31px">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5> <h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Informações Participante</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="padding-top: 8px; color:#1492E6"> <button type="button" class="close" aria-label="Close" style="padding-top: 8px; color:#1492E6" onclick="abrirHistorico({{$subs->participanteSubstituto()->withTrashed()->first()->id}}, 2)">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
...@@ -404,10 +404,17 @@ ...@@ -404,10 +404,17 @@
<div class="modal-dialog modal-dialog-centered modal-lg" role="document"> <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
<div class="modal-content modal-submeta"> <div class="modal-content modal-submeta">
<div class="modal-header modal-header-submeta"> <div class="modal-header modal-header-submeta">
<h5 class="modal-title titulo-table" id="avaliadorModalLongTitle">Selecione o(s) avaliador(es)</h5> <div class="col-md-8">
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="color: rgb(182, 182, 182)"> <h5 class="modal-title titulo-table" id="avaliadorModalLongTitle">Selecione o(s) avaliador(es)</h5>
<span aria-hidden="true">&times;</span> </div>
</button> <div class="col-md-4" style="text-align: right">
<button type="button" id="enviarConviteButton" class="btn btn-info" data-toggle="modal" onclick="abrirModalConvite()">
Enviar Convite
</button>
<button type="button" class="close" aria-label="Close" data-dismiss="modal" style="color: rgb(182, 182, 182)">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div> </div>
<div class="modal-body"> <div class="modal-body">
@if (session('error')) @if (session('error'))
...@@ -624,6 +631,11 @@ ...@@ -624,6 +631,11 @@
<span> Histórico</span> <span> Histórico</span>
</div> </div>
</li> </li>
<li>
<div class="aba3 aba">
<span> Desligamentos</span>
</div>
</li>
</ul> </ul>
</div> </div>
<div id="content"> <div id="content">
...@@ -651,8 +663,7 @@ ...@@ -651,8 +663,7 @@
<img src="{{asset('img/icons/usuario.svg')}}" style="width:50px" alt=""> <img src="{{asset('img/icons/usuario.svg')}}" style="width:50px" alt="">
</div> </div>
<div class="col-md-4" style="padding-left: 20px;padding-right: 5px;"> <div class="col-md-4" style="padding-left: 20px;padding-right: 5px;">
<a onclick="vizuParticipante({{$subs->participanteSubstituto()->withTrashed()->first()->id}})" class="button">{{$subs->participanteSubstituto()->withTrashed()->first()->user->name}}</a> <a onclick="fecharModalSubstituto({{$subs->participanteSubstituto()->withTrashed()->first()->id}})" class="button">{{$subs->participanteSubstituto()->withTrashed()->first()->user->name}}</a>
</div> </div>
</div> </div>
</div> </div>
...@@ -680,7 +691,7 @@ ...@@ -680,7 +691,7 @@
</div> </div>
<div class="justify-content-center conteudo" id="tela2" style="margin-top: 0px;border: none;overflow-x: auto;"> <div class="justify-content-center conteudo" id="tela2" style="margin-top: 0px;border: none;overflow-x: auto;">
<div class="col-md-12" id="tela2" style="padding: 0px"> {{--<div class="col-md-12" id="tela2" style="padding: 0px">
<div class="card" id="tela2" style="border-radius: 5px"> <div class="card" id="tela2" style="border-radius: 5px">
<div class="card-body" id="tela2" style="padding-top: 0.2rem;padding-right: 0px;padding-left: 5px;padding-bottom: 5px;"> <div class="card-body" id="tela2" style="padding-top: 0.2rem;padding-right: 0px;padding-left: 5px;padding-bottom: 5px;">
<div class="" id="tela2"> <div class="" id="tela2">
...@@ -738,6 +749,127 @@ ...@@ -738,6 +749,127 @@
</div> </div>
</div> </div>
</div> </div>
</div>--}}
<div style="margin-top: 5px">
<div class="card-header">
<div class="row">
<div class="col-3">
<h6 class="card-title" style= "color:#234B8B">
Participante Substituído
</h6>
</div>
<div class="col-3">
<h6 class="card-title" style= "color:#234B8B">
Participante Substituto
</h6>
</div>
<div class="col-2">
<h6 class="card-title" style= "color:#234B8B">
Tipo
</h6>
</div>
<div class="col-2">
<h6 class="card-title" style= "color:#234B8B">
Status
</h6>
</div>
<div class="col-2">
<h6 class="card-title" style= "color:#234B8B">
Justificativa
</h6>
</div>
</div>
</div>
<div class="card-body">
@foreach($substituicoesProjeto as $subs)
<div class="row" style="margin-bottom: 20px;">
<div class="col-3">
<a href="" data-toggle="modal" class="button" onclick="fecharModalSubstituido({{$subs->participanteSubstituido()->withTrashed()->first()->id}})"><h6 style="font-size:18px; color: black" >{{$subs->participanteSubstituido()->withTrashed()->first()->user->name}}</h6></a>
<h6 style= "color:grey; font-size:medium">{{date('d-m-Y', strtotime($subs->participanteSubstituido()->withTrashed()->first()->data_entrada))}} - @if($subs->participanteSubstituido()->withTrashed()->first()->data_saida == null) Atualmente @else {{date('d-m-Y', strtotime($subs->participanteSubstituido()->withTrashed()->first()->data_saida))}} @endif</h6>
</div>
<div class="col-3">
<a href="" data-toggle="modal" class="button" onclick="fecharModalSubstituto({{$subs->participanteSubstituto()->withTrashed()->first()->id}})"><h6 style="font-size:18px; color: black">{{$subs->participanteSubstituto()->withTrashed()->first()->user->name}}</h6></a>
<h6 style= "color:grey; font-size:medium">{{date('d-m-Y', strtotime($subs->participanteSubstituto()->withTrashed()->first()->data_entrada))}} - @if($subs->participanteSubstituto()->withTrashed()->first()->data_saida == null) Atualmente @else {{date('d-m-Y', strtotime($subs->participanteSubstituto()->withTrashed()->first()->data_saida))}} @endif</h6>
</div>
<div class="col-2">
@if($subs->tipo == 'ManterPlano')
<h6>Manter Plano</h6>
@elseif($subs->tipo == 'TrocarPlano')
<h6>Alterar Plano</h6>
@elseif($subs->tipo == 'Completa')
<h6>Completa</h6>
@endif
</div>
<div class="col-2">
@if($subs->status == 'Finalizada')
<h6>Concluída</h6>
@elseif($subs->status == 'Negada')
<h6>Negada</h6>
@elseif($subs->status == 'Em Aguardo')
<h6>Pendente</h6>
@endif
</div>
<div class="col-2">
@if($subs->status == 'Em Aguardo')
<h6>Pendente</h6>
@else
<a href="" data-toggle="modal" class="button" onclick="vizuJustificativa('{{$subs->justificativa}}')"><h5 style="font-size:18px">Visualizar</h5></a>
@endif
</div>
</div>
@endforeach
</div>
</div>
</div>
<div class="justify-content-center conteudo" id="tela3" style="margin-top: 0px;border: none;overflow-x: auto;">
<div class="col-md-12" style="padding: 0px">
<div class="card" style="border-radius: 5px">
<div class="card-body" style="padding-top: 0.2rem;padding-right: 0px;padding-left: 5px;padding-bottom: 5px;">
<div class="">
<div class="justify-content-start" style="alignment: center">
@foreach($trabalho->desligamentos as $desligamento)
<div class="row justify-content-between">
<div class="col-md-9">
<h5 style="color: #234B8B; font-weight: bold" class="col-md-12">Desligamento</h5>
<div class="d-flex justify-content-between">
<div class="col-md-2">
<img src="{{asset('img/icons/usuario.svg')}}" style="width:50px" alt="" class="img-flex">
</div>
<div class="col-md-10" >
<a onclick="vizuParticipante({{$desligamento->participante()->withTrashed()->first()->id}})" class="button">{{$desligamento->participante()->withTrashed()->first()->user->name}}</a>
<br><label for="justificativa">Justificativa: </label>
{{$desligamento->justificativa}}
</div>
</div>
</div>
<div class="col-md-3">
@if($desligamento->status == \App\Desligamento::STATUS_ENUM['solicitado'])
<h5 style="color: #234B8B; font-weight: bold" class="col-md-12 text-center"> Ações</h5>
<div class="col-md-12 text-center" style="border: solid#1111; padding: 10px; ">
<form id="resposta-desligamento{{$desligamento->id}}" method="POST" action="{{route('coordenador.resposta.desligamento', ['desligamento_id' => $desligamento->id]) }}">
@csrf
<input type="hidden" id="desligamento" name="desligamento" value="{{$desligamento->id}}">
<input type="radio" id="aceitar{{$desligamento->id}}" name="opcao" value="{{\App\Desligamento::STATUS_ENUM['aceito']}}"> Aprovar
<input type="radio" id="negar{{$desligamento->id}}" name="opcao" value="{{\App\Desligamento::STATUS_ENUM['recusado']}}"> Negar
<br>
<button type="submit" class="btn btn-primary" form="resposta-desligamento{{$desligamento->id}}">Submeter</button>
</form>
</div>
@else
<h5 style="color: #234B8B; font-weight: bold" class="col-md-12 text-center"> Status</h5>
<div class="col-md-12 text-center" style="border: solid#1111; padding: 10px; ">
{{$desligamento->getStatus()}}
</div>
@endif
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
...@@ -770,6 +902,83 @@ ...@@ -770,6 +902,83 @@
</div> </div>
</div> </div>
<!-- Modal enviar convite e atribuir -->
<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" 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">
@csrf
<input type="hidden" name="evento_id" value="{{ $evento->id }}" >
<input type="hidden" 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">
<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($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="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>
<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>
<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>
<style> <style>
body{font-family:Calibri, Tahoma, Arial} body{font-family:Calibri, Tahoma, Arial}
...@@ -797,16 +1006,28 @@ ...@@ -797,16 +1006,28 @@
$(".abas li:first div").addClass("selected"); $(".abas li:first div").addClass("selected");
$(".aba2").click(function(){ $(".aba2").click(function(){
$(".aba1").removeClass("selected"); $(".aba1").removeClass("selected");
$(".aba3").removeClass("selected");
$(this).addClass("selected"); $(this).addClass("selected");
$("#tela1").hide(); $("#tela1").hide();
$("#tela3").hide();
$("#tela2").show(); $("#tela2").show();
}); });
$(".aba1").click(function(){ $(".aba1").click(function(){
$(".aba2").removeClass("selected"); $(".aba2").removeClass("selected");
$(".aba3").removeClass("selected");
$(this).addClass("selected"); $(this).addClass("selected");
$("#tela2").hide(); $("#tela2").hide();
$("#tela3").hide();
$("#tela1").show(); $("#tela1").show();
}); });
$(".aba3").click(function(){
$(".aba2").removeClass("selected");
$(".aba1").removeClass("selected");
$(this).addClass("selected");
$("#tela2").hide();
$("#tela1").hide();
$("#tela3").show();
});
let textTemp = document.getElementById("comentario").innerHTML; let textTemp = document.getElementById("comentario").innerHTML;
...@@ -834,13 +1055,13 @@ ...@@ -834,13 +1055,13 @@
} }
function vizuPartici(id){ function vizuPartici(id){
$("#modalVizuSubstituicao").modal('hide'); $("#modalVizuSubstituicao").modal('hide');
setTimeout(() => { $("#modalVizuParticipanteSub"+id).modal(); }, 500); setTimeout(() => { $("#modalVizuParticipanteSubstituto"+id).modal(); }, 500);
} }
function vizuJustificativa(texto){ function vizuJustificativa(texto){
$("#modalVizuSubstituicao").modal('hide'); $("#modalVizuSubstituicao").modal('hide');
setTimeout(() => { $("#modalVizuJustificativa").modal(); }, 500);
document.getElementById("conteudoJustificativa").innerHTML = texto; document.getElementById("conteudoJustificativa").innerHTML = texto;
setTimeout(() => { $("#modalVizuJustificativa").modal(); }, 500);
} }
function closeJustificativa(){ function closeJustificativa(){
...@@ -1017,4 +1238,84 @@ ...@@ -1017,4 +1238,84 @@
}); });
} }
</script> </script>
<script>
function fecharModalSubstituido(id){
$('#modalVizuSubstituicao').modal('toggle');
setTimeout(() => { $("#modalVizuParticipanteSubstituido"+id).modal(); }, 500);
}
function fecharModalSubstituto(id){
$('#modalVizuSubstituicao').modal('toggle');
setTimeout(() => { $("#modalVizuParticipanteSubstituto"+id).modal(); }, 500);
}
function abrirHistorico(id, modal){
if(modal == 1){
$('#modalVizuParticipanteSubstituido'+id).modal('hide');
}else if(modal == 2){
$('#modalVizuParticipanteSubstituto'+id).modal('hide');
}else if(modal == 0){
$('#modalVizuParticipante'+id).modal('hide');
}
setTimeout(() => { $("#modalVizuSubstituicao").modal(); }, 500);
}
</script>
<script>
function abrirModalConvite(){
$("#avaliadorModalCenter").modal('toggle');
setTimeout(() => { $("#exampleModalCenter").modal(); }, 500);
$('#exampleModalCenter').focus();
}
function fecharModalConvite(){
$('#exampleModalCenter').modal('toggle');
setTimeout(() => { $("#avaliadorModalCenter").modal(); }, 500);
$('#avaliadorModalCenter').focus();
}
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 @endsection
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
@if(($substituicoesProjeto->first() != null) && ($substituicoesProjeto->first()->status == 'Em Aguardo')) style="pointer-events: none; cursor: default;" @endif> @if(($substituicoesProjeto->first() != null) && ($substituicoesProjeto->first()->status == 'Em Aguardo')) style="pointer-events: none; cursor: default;" @endif>
<i class="fas fa-exchange-alt fa-2x"></i></a> <i class="fas fa-exchange-alt fa-2x"></i></a>
<a href="" data-toggle="modal" data-target="#modalVizuParticipante{{$participante->id}}" class="button"><i class="far fa-eye fa-2x"></i></a> <a href="" data-toggle="modal" data-target="#modalVizuParticipante{{$participante->id}}" class="button"><i class="far fa-eye fa-2x"></i></a>
<a href="" data-toggle="modal" data-target="#modalSolicitarDesligamentoParticipante{{$participante->id}}" class="button">Solicitar desligamento</a>
</div> </div>
</div> </div>
...@@ -167,6 +168,44 @@ ...@@ -167,6 +168,44 @@
</div> </div>
</div> </div>
</div> </div>
<!-- Modal solicitar desligamento participante -->
<div class="modal fade" id="modalSolicitarDesligamentoParticipante{{$participante->id}}" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content">
<div class="modal-header" style="overflow-x:auto;">
<h5 class="modal-title" id="exampleModalLabel" style= "color:#1492E6">Desligar Participante</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">
<form id="solicitar-desligamento{{$participante->id}}" method="POST" action="{{route('proponente.solicitar.desligamento', ['edital_id' => $projeto->evento->id, 'projeto_id' => $projeto->id, 'participante_id' => $participante->id]) }}">
@csrf
<input type="hidden" id="participante{{$participante->id}}" name="participante" value="{{$participante->id}}">
<input type="hidden" id="trabalho" name="trabalho" value="{{$projeto->id}}">
<h6>Tem certeza que deseja solicitar o desligamento do participante <span style="font-weight: bold">{{$participante->user->name}}</span>?</h6>
<div class="form-row">
<div class="col-md-12 form-group">
<label for="justificativa">{{ __('Justificativa') }}<span style="color: red; font-weight: bold;"> *</span></label>
<textarea class="form-control @error('justificativa') is-invalid @enderror" type="text" name="justificativa" id="justificativa" cols="30" rows="5" placeholder="Digite a justificativa para o desligamento do participante" required>{{old('justificativa')}}</textarea>
@error('justificativa')
<div id="validationServer03Feedback" class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
@if($participante->desligamentos->first() == null || ($participante->desligamentos->first() != null && $participante->desligamentos->first()->status != \App\Desligamento::STATUS_ENUM['solicitado']))
<button type="submit" class="btn btn-success" form="solicitar-desligamento{{$participante->id}}">Confirmar</button>
@endif
</div>
</div>
</div>
</div>
@endforeach @endforeach
</div> </div>
</div> </div>
...@@ -301,6 +340,45 @@ ...@@ -301,6 +340,45 @@
</div> </div>
</div> </div>
<h4 style="margin-top: 50px">Desligamentos</h4>
<div style="margin-top: 20px">
<div class="card-header">
<div class="row">
<div class="col-4">
<h5 class="card-title" style= "color:#1492E6">
Participante
</h5>
</div>
<div class="col-2" style="text-align: center">
<h5 class="card-title" style= "color:#1492E6">
Status
</h5>
</div>
<div class="col-6" style="text-align: center">
<h5 class="card-title" style= "color:#1492E6">
Justificativa
</h5>
</div>
</div>
</div>
<div class="card-body">
@foreach($projeto->desligamentos as $desligamento)
<div class="row"style="margin-bottom: 20px;">
<div class="col-4">
<a href="" data-toggle="modal" data-target="#modalVizuParticipante{{$desligamento->participante()->withTrashed()->first()->id}}" class="button"><h4 style="font-size:18px">{{$desligamento->participante()->withTrashed()->first()->user->name}}</h4></a>
<h5 style= "color:grey; font-size:medium">{{date('d-m-Y', strtotime($desligamento->created_at))}}</h5>
</div>
<div class="col-2" style="text-align: center">
<h5>{{$desligamento->getStatus()}}</h5>
</div>
<div class="col-6" style="text-align: center">
<h5>{{$desligamento->justificativa}}</h5>
</div>
</div>
@endforeach
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment