user())) { return false; } if ( !$user->can('createPrivateMessage', $this->route()->ticket) && $this->is_private == MessageTypeEnum::private ) { return false; } return auth()->check() and $user->sites and ($user->isAdmin() or $user->sites->contains( $this->route()->ticket->site_id )); } /** * Prepare the data for validation. * * @return void */ protected function prepareForValidation() { $this->merge([ 'subscribe' => $this->subscribe ? true : false, 'type' => $this->is_private ? MessageTypeEnum::private->value : MessageTypeEnum::public->value ]); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { /** @var \App\Models\User */ $user = auth()->user(); return [ 'subscribe' => 'required|boolean', 'message' => 'required|min:' . ($user->isAdmin() ? '5' : '20'), 'file_messages' => 'sometimes|array', 'file_messages.*' => 'mimes:pptx,docx,xlsx,csv,txt,jpeg,jpg,png,pdf,svg|max:2048', 'type' => ['required', new Enum(MessageTypeEnum::class)] ]; } }