From e47d9a75e6852e8bcf30d25c534dbdb96c130c61 Mon Sep 17 00:00:00 2001 From: "nicolas.demangeat" Date: Fri, 22 Aug 2025 08:27:05 +0000 Subject: [PATCH] fix: :bug: Change relationship management for subscriptions - Close #84 --- app/Http/Controllers/Bo/TicketController.php | 9 ++++----- app/Http/Requests/Bo/CreateMessage.php | 2 ++ app/Models/Message.php | 9 ++------- resources/views/bo/pages/tickets/form-inputs.blade.php | 6 +++--- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/Bo/TicketController.php b/app/Http/Controllers/Bo/TicketController.php index d9ebe67..0cbfc0b 100644 --- a/app/Http/Controllers/Bo/TicketController.php +++ b/app/Http/Controllers/Bo/TicketController.php @@ -338,15 +338,14 @@ class TicketController extends Controller /** @var \App\Models\User */ $user = auth()->user(); - + // Subscribe to ticket. if ($request->subscribe) { - if (!$user->subscriptions()->find($ticket->id)) { - $user->subscriptions()->attach($ticket->id); - } - } elseif ($user->subscriptions()->find($ticket->id)) { + $user->subscriptions()->syncWithoutDetaching([$ticket->id]); + } else { $user->subscriptions()->detach($ticket->id); } + // Store files if any. if (isset($filesMessage) and $filesMessage) { foreach ($filesMessage as $key => $singleFile) { if ($key === 0) { diff --git a/app/Http/Requests/Bo/CreateMessage.php b/app/Http/Requests/Bo/CreateMessage.php index 3ac7392..b49a051 100644 --- a/app/Http/Requests/Bo/CreateMessage.php +++ b/app/Http/Requests/Bo/CreateMessage.php @@ -37,6 +37,8 @@ class CreateMessage extends FormRequest */ protected function prepareForValidation() { + /** @var \App\Models\User */ + $user = auth()->user(); $this->merge([ 'subscribe' => $this->subscribe ? true : false, 'type' => $this->is_private ? MessageTypeEnum::private->value : MessageTypeEnum::public->value diff --git a/app/Models/Message.php b/app/Models/Message.php index 41daedd..c12985a 100644 --- a/app/Models/Message.php +++ b/app/Models/Message.php @@ -96,14 +96,9 @@ class Message extends Model } // ? Is message author is admin ? if ($messageUser->isAdmin()) { - // Url: https://supportweb.ldc.fr/ticket/583/message/create. - // SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '583-8' for key 'PRIMARY' - // $ticket->subscriptions()->attach($messageUser); // Add subscription. - if (!$messageUser->subscriptions()->find($ticket->id)) { - $messageUser->subscriptions()->attach($ticket->id); - \session()->flash('info', trans('Vous avez été inscrit.')); - } + $messageUser->subscriptions()->syncWithoutDetaching([$ticket->id]); + \session()->flash('info', trans('Vous avez été inscrit.')); } // * Send mail to other subscribed users event(new NotifySubscriptions( diff --git a/resources/views/bo/pages/tickets/form-inputs.blade.php b/resources/views/bo/pages/tickets/form-inputs.blade.php index a1ab6be..63539ca 100644 --- a/resources/views/bo/pages/tickets/form-inputs.blade.php +++ b/resources/views/bo/pages/tickets/form-inputs.blade.php @@ -26,7 +26,7 @@ @endforeach - @can('changeStatus', App\Model\Ticket::class) + @can('changeStatus', App\Models\Ticket::class)
@endcan - @can('assignLabels', App\Model\Ticket::class) + @can('assignLabels', App\Models\Ticket::class)
@@ -127,7 +127,7 @@
@endfor -@can('changeInternalStatus', App\Model\Ticket::class) +@can('changeInternalStatus', App\Models\Ticket::class)
is_internal)) checked @endif>