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
return view('administrador.projetos')->with(['trabalhos' => $trabalhos, 'evento' => $evento]);
}
public function analisar(Request $request){
$evento = Evento::where('id', $request->evento_id)->first();
$trabalhosSubmetidos = $evento->trabalhos->where('status', 'submetido');
$trabalhosAvaliados = $evento->trabalhos->Where('status', 'avaliado');
$trabalhosAprovados = $evento->trabalhos->Where('status', 'aprovado');
$trabalhosReprovados = $evento->trabalhos->Where('status', 'reprovado');
$trabalhosCorrigidos = $evento->trabalhos->Where('status', 'corrigido');
$trabalhos = $this->paginate($trabalhosSubmetidos);
$trabalhos = $this->paginate($trabalhosSubmetidos
->merge($trabalhosAvaliados)->merge($trabalhosAprovados)
->merge($trabalhosReprovados)->merge($trabalhosCorrigidos)->sortBy('titulo'))
->withPath('/usuarios/analisarProjetos?evento_id='.$evento->id);
$evento = Evento::find($request->evento_id);
$status = ['submetido', 'avaliado', 'aprovado', 'reprovado', 'corrigido'];
$withPath = '/usuarios/analisarProjetos?evento_id='.$evento->id;
if($request->column != null ) {
$status = [$request->column];
$withPath = '/usuarios/analisarProjetos/'.$request->column.'?evento_id='.$evento->id;
}
$trabalhos = Trabalho::where('evento_id', $evento->id)
->whereIn('status', $status)
->orderBy('titulo')
->paginate(5)
->withPath($withPath);
$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]);
return view('administrador.analisar')->with(['trabalhos' => $trabalhos, 'evento' => $evento, 'funcaoParticipantes' => $funcaoParticipantes, 'column' => $request->column]);
}
// Utilizado para paginação de Collection
......@@ -110,13 +109,15 @@ class AdministradorController extends Controller
$avalProjeto = Avaliador::whereNotIn('id', $avalSelecionadosId)->get();
$trabalho->aval = $avalProjeto;
$grandeAreas = GrandeArea::orderBy('nome')->get();
return view('administrador.analisarProposta')->with(
[ 'trabalho' => $trabalho,
'funcaoParticipantes' => $funcaoParticipantes,
'evento' => $evento,
'substituicoesPendentes' => $substituicoesPendentes,
'substituicoesProjeto' => $substituicoesProjeto,]);
'substituicoesProjeto' => $substituicoesProjeto,
'grandeAreas' => $grandeAreas,]);
}
public function showProjetos(Request $request){
......@@ -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){
$evento = Evento::where('id', $request->evento_id)->first();
$avaliador = Avaliador::where('id', $request->avaliador_id)->first();
......
......@@ -2,13 +2,18 @@
namespace App\Http\Controllers;
use Auth;
use Illuminate\Http\Request;
use App\Evento;
use App\CoordenadorComissao;
use App\Avaliador;
use App\Desligamento;
use App\Mail\SolicitacaoDesligamento;
use App\Notificacao;
use App\Proponente;
use App\Participante;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
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 @@
namespace App\Http\Controllers;
use App\Certificado;
use App\Notificacao;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
......@@ -125,6 +126,13 @@ class NotificacaoController extends Controller
} else {
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 @@
namespace App\Http\Controllers;
use App\Desligamento;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
......@@ -10,7 +11,12 @@ use App\User;
use App\Trabalho;
use App\Proponente;
use App\Evento;
use App\Mail\SolicitacaoDesligamento;
use App\Mail\SolicitacaoSubstituicao;
use App\Notificacao;
use App\Participante;
use Carbon\Carbon;
use Illuminate\Support\Facades\Mail;
class ProponenteController extends Controller
{
......@@ -111,4 +117,35 @@ class ProponenteController extends Controller
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;
use PDF;
use App;
use App\Administrador;
use Auth;
use App\Area;
use App\User;
......@@ -23,6 +24,7 @@ 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;
......@@ -41,8 +43,12 @@ 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;
......@@ -447,6 +453,42 @@ class TrabalhoController extends Controller
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)
{
......
<?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
* @var array
*/
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(){
......@@ -26,4 +26,9 @@ class Notificacao extends Model
public function trabalho(){
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
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
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');
}
}
<?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 @@
@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="row">
<div class="col-sm-7">
......@@ -29,7 +29,35 @@
</h6>
</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>
......
......@@ -42,6 +42,7 @@
@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>
<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>
......@@ -167,6 +168,44 @@
</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
</div>
</div>
......@@ -301,6 +340,45 @@
</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>
......
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