Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion app/Http/Controllers/ReservaController.php
Original file line number Diff line number Diff line change
Expand Up @@ -368,9 +368,12 @@ public function destroy(Request $request, Reserva $reserva)
$parent_id = $reserva->parent_id;
$purge = !is_null($request->input('purge'));

$justificativa = $request->input('justificativa_recusa');

$reserva->removerTarefa_AprovacaoAutomatica();

if(config('salas.emailConfigurado')) Mail::queue(new DeleteReservaMail($reserva, $purge));
if(config('salas.emailConfigurado'))
Mail::queue(new DeleteReservaMail($reserva, $purge, $justificativa));

if($purge){
Reserva::where('parent_id', $reserva->parent_id)->delete();
Expand Down
1 change: 1 addition & 0 deletions app/Http/Controllers/SalaController.php
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ public function update(SalaRequest $request, Sala $sala)
'periodo_letivo_id' => $validated['periodo_letivo'],
'aprovacao' => $validated['aprovacao'],
'prazo_aprovacao' => $validated['prazo_aprovacao'],
'exige_justificativa_recusa' => $validated['exige_justificativa_recusa'],
]
);

Expand Down
1 change: 1 addition & 0 deletions app/Http/Requests/SalaRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public function rules()
'instrucoes_reserva' => 'nullable',
'aceite_reserva' => 'nullable',
'prazo_aprovacao' => 'nullable|integer',
'exige_justificativa_recusa' => 'required|integer',
];
}

Expand Down
9 changes: 6 additions & 3 deletions app/Mail/DeleteReservaMail.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,21 @@

class DeleteReservaMail extends Mailable
{
use Queueable, SerializesModels;
use Queueable; // SerializesModels provocava erro de reserva já deletada e tendo acessá-la
private $reserva;
private $purge;
private $justificativa;

/**
* Create a new message instance.
*
* @return void
*/
public function __construct(Reserva $reserva, bool $purge = false)
public function __construct(Reserva $reserva, bool $purge = false, string $justificativa = null)
{
$this->reserva = $reserva;
$this->purge = $purge;
$this->justificativa = $justificativa;
}

/**
Expand All @@ -40,7 +42,8 @@ public function build()
->to($user->email)
->with([
'reserva' => $this->reserva,
'purge' => $this->purge
'purge' => $this->purge,
'justificativa' => $this->justificativa
]);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddExigeJustificativaRecusaColumnToRestricoesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('restricoes', function (Blueprint $table) {
$table->boolean('exige_justificativa_recusa')->default(false);
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('restricoes', function (Blueprint $table) {
$table->dropColumn('exige_justificativa_recusa');
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddJustificativaRecusaColumnToReservasTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('reservas', function (Blueprint $table) {
$table->text('justificativa_recusa')->nullable()->after('status');
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('reservas', function (Blueprint $table) {
$table->dropColumn('justificativa_recusa');
});
}
}
10 changes: 9 additions & 1 deletion resources/views/emails/delete_reserva.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@
<p><b>Data:</b> {{$reserva->data}} </p>
@endif

@if (!empty($justificativa))
<br>
<div style="border: 1px solid #ccc; padding: 10px; background-color: #f9f9f9;">
<strong>Motivo da Recusa:</strong><br>
{{ $justificativa }}
</div>
@endif

<br>

<p>Mensagem automática do sistema de reserva de salas: {{route('home')}}</p>
<p>Mensagem automática do sistema de reserva de salas: {{route('home')}}</p>
47 changes: 38 additions & 9 deletions resources/views/reserva/partials/fields.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

@if ($reserva->status == 'pendente')
<div style="background-color: {{config('salas.cores.pendente')}}" class="p-2 mb-2 rounded">
Pendente
Pendente
</div>
@endif

Expand Down Expand Up @@ -121,10 +121,10 @@
@if($reserva->irmaos())
<div class="card-body">
<b>Recorrências:</b>
@php
@php
$reservas_array = $reserva->irmaos()->toArray();
@endphp

@foreach($reservas_array as $key => $reservaIterator)
<a href="/reservas/{{ $reservaIterator['id'] }}">{{ $reservaIterator['data'] }}</a>@if( $key !== count($reservas_array) -1 ),@endif
@endforeach
Expand All @@ -138,13 +138,42 @@

@if ($reserva->status == 'pendente')
@can('responsavel', $reserva->sala)
<form action="{{route('reservas.destroy', $reserva)}}" method="POST" id="form-reserva-recusar" onsubmit="return confirm('Recusar reserva?')">
@csrf
@method('DELETE')
</form>
@if ($reserva->sala->restricao->exige_justificativa_recusa)
<div class="modal fade" id="rejectModal_{{$reserva->id}}" tabindex="-1" role="dialog" aria-labelledby="rejectModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form action="{{route('reservas.destroy', $reserva)}}" method="POST">
@csrf
@method('DELETE')
<div class="modal-header">
<h5 class="modal-title" id="rejectModalLabel">Recusar Reserva</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>Tem certeza que deseja recusar esta reserva?</p>
<div class="form-group">
<label for="justificativa_recusa"><b>Justificativa:</b></label>
<textarea name="justificativa_recusa" class="form-control" rows="3" required></textarea>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-danger">Confirmar Recusa</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
</div>
</form>
</div>
</div>
</div>
@else
<form action="{{route('reservas.destroy', $reserva)}}" method="POST" id="form-reserva-recusar" onsubmit="return confirm('Recusar reserva?')">
@csrf
@method('DELETE')
</form>
@endif

<div class="mt-4">
<a class="btn btn-success" href="{{route('reservas.aprovar', $reserva)}}"><i class="fa fa-check"></i> Aprovar</a>
<button class="btn btn-danger" form="form-reserva-recusar"><i class="fa fa-ban"></i> Recusar</button>
<button class="btn btn-danger" @if($reserva->sala->restricao->exige_justificativa_recusa) type="button" data-toggle="modal" data-target="#rejectModal_{{$reserva->id}}" @else form="form-reserva-recusar" @endif><i class="fa fa-ban"></i> Recusar</button>
</div>
@endcan
@endif
@endif
18 changes: 16 additions & 2 deletions resources/views/sala/partials/form.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,17 @@
<label for="aprovacao-nao">Não</label>
</div>
</div>
<div id="exige_justificativa_recusa_sim_nao" class="col-sm form-group">
<b>Exigir justificativa no ato da recusa?</b>
<div class="form-check">
<input name="exige_justificativa_recusa" type="radio" class="form-check-input radio-exige-justificativa-recusa" id="exige-justificativa-recusa-sim" value="1" {{ ((float) ($sala->restricao->exige_justificativa_recusa ?? 0) > 0) ? 'checked' : '' }}>
<label for="exige-justificativa-recusa-sim">Sim</label>
</div>
<div class="form-check">
<input name="exige_justificativa_recusa" type="radio" class="form-check-input radio-exige-justificativa-recusa" id="exige-justificativa-recusa-nao" value="0" {{ ((float) ($sala->restricao->exige_justificativa_recusa ?? 0) == 0) ? 'checked' : '' }}>
<label for="exige-justificativa-recusa-nao">Não</label>
</div>
</div>
<div id="prazo_aprovacao_sim_nao" class="col-sm form-group">
<b>Aprovar automaticamente após certo prazo sem aprovação nem rejeição?</b>
<div class="form-check">
Expand Down Expand Up @@ -276,9 +287,12 @@
});

function aprovacaoChanged() {
if ($("#aprovacao-sim").is(":checked"))
if ($("#aprovacao-sim").is(":checked")) {
$('#exige_justificativa_recusa_sim_nao').show();
$('#prazo_aprovacao_sim_nao').show();
else {
} else {
$('#exige_justificativa_recusa_sim_nao').hide();
$("#exige-justificativa-recusa-nao").prop("checked", true);
$('#prazo_aprovacao_sim_nao').hide();
$("#aprovacao-prazo-nao").prop("checked", true);
}
Expand Down