diff --git a/app/Http/Controllers/TicketController.php b/app/Http/Controllers/TicketController.php index 80f6f97..278482e 100644 --- a/app/Http/Controllers/TicketController.php +++ b/app/Http/Controllers/TicketController.php @@ -187,7 +187,16 @@ class TicketController extends Controller $message = new Message($request->validated()); $message->user()->associate(auth()->user()); $message->ticket()->associate($ticket); - $message->save(); + $message->saveOrFail(); + + /** @var \App\Models\User */ + $user = auth()->user(); + + if ($request->subscribe) { + $user->subscriptions()->attach($ticket->id); + } else { + $user->subscriptions()->detach($ticket->id); + } if ($request->file_message) { $projectSlug = Str::slug($ticket->project->name); diff --git a/app/Http/Requests/CreateMessage.php b/app/Http/Requests/CreateMessage.php index 3e7e58e..8372c88 100644 --- a/app/Http/Requests/CreateMessage.php +++ b/app/Http/Requests/CreateMessage.php @@ -6,6 +6,20 @@ use Illuminate\Foundation\Http\FormRequest; class CreateMessage extends FormRequest { + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + $this->merge([ + 'subscribe' => $this->subscribe ? true : false + ]); + return auth()->check() and (auth()->user()->role === 1 or + $this->ticket->project->id === auth()->user()->project_id); + } + /** * Get the validation rules that apply to the request. * @@ -14,6 +28,7 @@ class CreateMessage extends FormRequest public function rules() { return [ + 'subscribe' => 'required|boolean', 'message' => 'required|min:' . (auth()->user()->role == 1 ? '5' : '20'), 'file_message' => 'sometimes|mimes:jpeg,jpg,png,pdf|max:2048' ]; diff --git a/resources/views/ticket/show.blade.php b/resources/views/ticket/show.blade.php index 18e7aaa..534746c 100644 --- a/resources/views/ticket/show.blade.php +++ b/resources/views/ticket/show.blade.php @@ -63,8 +63,25 @@