add functionality : edit a sent message

This commit is contained in:
Alexis Gousseau 2022-03-30 12:31:09 +02:00
parent 4b57951701
commit 386e37eefb
6 changed files with 102 additions and 9 deletions

View file

@ -8,6 +8,7 @@ use App\Events\NotifySubscriptions;
use App\Events\TicketStatusChanged;
use App\Http\Requests\ChangeTicketStatus;
use App\Http\Requests\CreateMessage;
use App\Http\Requests\UpdateMessage;
use App\Http\Requests\SortTickets;
use App\Http\Requests\StoreTicket;
use App\Http\Requests\UpdateTicket;
@ -346,6 +347,15 @@ class TicketController extends Controller
->with('success', trans('Votre message à été ajouté'));
}
public function updateMessage(UpdateMessage $request, Ticket $ticket, Message $message)
{
$message->message = $request->message;
$message->saveOrFail();
return back()
->with('success', trans('Votre message à bien été modifié'));
}
public function setToArchive(Ticket $ticket)
{
$ticket->status = TicketStatus::archived();

View file

@ -0,0 +1,35 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateMessage extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
/** @var \App\Models\User|null $user */
$user = auth()->user();
return auth()->check() && $user->isAdmin();
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
/** @var \App\Models\User */
$user = auth()->user();
return [
'message' => 'required|min:' . ($user->isAdmin() ? '5' : '20'),
];
}
}

View file

@ -47,6 +47,10 @@ class TicketPolicy extends RootPolicy
]),
'suscribeToTicket' => TicketStaticRules::make('ticketIsNotArchived', $model),
'createMessage' => TicketStaticRules::make('ticketIsNotArchived', $model),
'updateMessage' => StaticRules::or([
URR::make('userIsAdmin', $user),
TicketStaticRules::make('ticketIsNotArchived', $model),
]),
'reopen' => URR::make('userIsClient', $user)
]
];

View file

@ -327,9 +327,11 @@ a.list-group-item {
}
}
.modal,
.toast {
.btn-close {
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>");
.modal{
color: #1e2125;
& .toast {
.btn-close {
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'><path d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/></svg>");
}
}
}
}

View file

@ -124,10 +124,49 @@
@if ($message->file !== null)
<br><a @if(Utils::isImageFile($message->file))data-fslightbox="gallery" @endif href="{{ asset($message->file) }}" target="_blank">Ouvrir la pièce jointe</a><br>
@endif<br><br>
<small class="text-muted fw-bold">{!! __('Créé le :date par <b>:userName</b>', [
'date' => \Carbon\Carbon::parse($message->created_at)->format('d/m/Y à H:i'),
'userName' => $message->user ? $message->user->name : __('Utilisateur supprimé')
]) !!}</small>
<small class="text-muted fw-bold">
{!! __('Créé le :date par <b>:userName</b>', [
'date' => \Carbon\Carbon::parse($message->created_at)->format('d/m/Y à H:i'),
'userName' => $message->user ? $message->user->name : __('Utilisateur supprimé')
]) !!}
</small>
@if($message->user_id === Auth::user()->id)
@can('updateMessage', $ticket, $message)
<button type="button" class="btn btn-sm btn-primary float-end" data-bs-toggle="modal" data-bs-target="#updateMessageModal">
{{ __('Modifier le message') }}
</button>
<div class="modal fade" id="updateMessageModal" tabindex="-1" aria-labelledby="updateMessageModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form action="{{ route('ticket.message.update', ['ticket'=>$ticket, 'message'=>$message]) }}" method="POST" enctype="multipart/form-data">
@method('PUT')
@csrf
<input type="hidden" name="ticket_id" value="{{ $ticket->id }}">
<div class="modal-header">
<h5 class="modal-title" id="messageModalLabel">
{{ __('Modification du message n°:messageid', ['messageid' => $message->id]) }}
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{__('Fermer') }}"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col">
<textarea name="message" class="form-control" rows="10">{{ $message->message }}</textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="reset" class="btn btn-sm btn-danger" data-bs-dismiss="modal">{{ __('Fermer') }}</button>
<button type="submit" class="btn btn-sm btn-success">{{ __('Envoyer') }}</button>
</div>
</form>
</div>
</div>
</div>
@endcan
@endif
</div>
@endif
@endforeach

View file

@ -74,6 +74,9 @@ Route::middleware(['auth'])->group(function () {
Route::put('/{ticket}/message/create', [TicketController::class, 'createMessage'])
->middleware('can:createMessage,ticket')
->name('message.create');
Route::put('/{ticket}/message/{message}/update', [TicketController::class, 'updateMessage'])
->middleware('can:updateMessage,ticket,message')
->name('message.update');
});
Route::prefix('/schedule')->name('schedule.')->group(function () {