diff --git a/app/Http/Controllers/TicketController.php b/app/Http/Controllers/TicketController.php index 3523dc5..f53363e 100644 --- a/app/Http/Controllers/TicketController.php +++ b/app/Http/Controllers/TicketController.php @@ -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(); diff --git a/app/Http/Requests/UpdateMessage.php b/app/Http/Requests/UpdateMessage.php new file mode 100644 index 0000000..0cc1450 --- /dev/null +++ b/app/Http/Requests/UpdateMessage.php @@ -0,0 +1,35 @@ +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'), + ]; + } +} diff --git a/app/Policies/TicketPolicy.php b/app/Policies/TicketPolicy.php index 4da1e6e..8396cf1 100644 --- a/app/Policies/TicketPolicy.php +++ b/app/Policies/TicketPolicy.php @@ -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) ] ]; diff --git a/resources/sass/_bootswatch.scss b/resources/sass/_bootswatch.scss index cc80c56..2c223fb 100644 --- a/resources/sass/_bootswatch.scss +++ b/resources/sass/_bootswatch.scss @@ -327,9 +327,11 @@ a.list-group-item { } } -.modal, -.toast { - .btn-close { - background-image: url("data:image/svg+xml,"); +.modal{ + color: #1e2125; + & .toast { + .btn-close { + background-image: url("data:image/svg+xml,"); + } } -} +} \ No newline at end of file diff --git a/resources/views/ticket/show.blade.php b/resources/views/ticket/show.blade.php index 37a4675..86a9cd8 100644 --- a/resources/views/ticket/show.blade.php +++ b/resources/views/ticket/show.blade.php @@ -124,10 +124,49 @@ @if ($message->file !== null)
file))data-fslightbox="gallery" @endif href="{{ asset($message->file) }}" target="_blank">Ouvrir la pièce jointe
@endif

- {!! __('Créé le :date par :userName', [ - 'date' => \Carbon\Carbon::parse($message->created_at)->format('d/m/Y à H:i'), - 'userName' => $message->user ? $message->user->name : __('Utilisateur supprimé') - ]) !!} + + {!! __('Créé le :date par :userName', [ + 'date' => \Carbon\Carbon::parse($message->created_at)->format('d/m/Y à H:i'), + 'userName' => $message->user ? $message->user->name : __('Utilisateur supprimé') + ]) !!} + + @if($message->user_id === Auth::user()->id) + + @can('updateMessage', $ticket, $message) + + + @endcan + + @endif @endif @endforeach diff --git a/routes/web.php b/routes/web.php index dbb1dff..c6f2841 100644 --- a/routes/web.php +++ b/routes/web.php @@ -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 () {