From fada6d80e1acc776be159b785d85fc65a6a6077a Mon Sep 17 00:00:00 2001 From: "noah.lancien" Date: Thu, 6 Apr 2023 10:20:30 +0000 Subject: [PATCH 01/14] Created MessageType Enum --- app/Enums/MessageType.php | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 app/Enums/MessageType.php diff --git a/app/Enums/MessageType.php b/app/Enums/MessageType.php new file mode 100644 index 0000000..a18274b --- /dev/null +++ b/app/Enums/MessageType.php @@ -0,0 +1,38 @@ + 1, + 'public' => 2 + ]; + } + + /** + * Enum labels + * + * @return array + */ + protected static function labels(): array + { + return [ + 'private' => trans('Privé'), + 'public' => trans('Public'), + ]; + } +} From 0be5816bf799fdd3896d5d7e451a599694dde167 Mon Sep 17 00:00:00 2001 From: "noah.lancien" Date: Thu, 6 Apr 2023 12:53:13 +0000 Subject: [PATCH 02/14] Added cast to message model for type enum --- app/Models/Message.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/Models/Message.php b/app/Models/Message.php index be98669..6755a42 100644 --- a/app/Models/Message.php +++ b/app/Models/Message.php @@ -2,14 +2,17 @@ namespace App\Models; +use App\Enums\MessageType; use App\Events\NotifySubscriptions; use App\Events\NotifyTicketCreator; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Kwaadpepper\Enum\Traits\CastsEnums; class Message extends Model { use HasFactory; + use CastsEnums; /** * The attributes that are mass assignable. @@ -17,7 +20,17 @@ class Message extends Model * @var array */ protected $fillable = [ - 'message' + 'message', + 'type' + ]; + + /** + * The attributes that should be cast to Enums. + * + * @var array + */ + protected $enumCasts = [ + 'type' => MessageType::class ]; /** From 5fa24d69c8a1f74fe000f2158d68c6b06d2857af Mon Sep 17 00:00:00 2001 From: "noah.lancien" Date: Thu, 6 Apr 2023 13:24:40 +0000 Subject: [PATCH 03/14] Added new policy to create private message --- app/Policies/TicketPolicy.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Policies/TicketPolicy.php b/app/Policies/TicketPolicy.php index b31d2db..68c6e69 100644 --- a/app/Policies/TicketPolicy.php +++ b/app/Policies/TicketPolicy.php @@ -46,6 +46,10 @@ class TicketPolicy extends RootPolicy ]), 'suscribeToTicket' => TicketStaticRules::make('ticketIsNotArchived', $model), 'createMessage' => TicketStaticRules::make('ticketIsNotArchived', $model), + 'createPrivateMessage' => StaticRules::or([ + URR::make('userIsAdmin', $user), + TicketStaticRules::make('ticketIsNotArchived', $model), + ]), 'updateMessage' => StaticRules::or([ URR::make('userIsAdmin', $user), TicketStaticRules::make('ticketIsNotArchived', $model), From 1aab65596426e7722179214b7ea0d70b2ac635ff Mon Sep 17 00:00:00 2001 From: "noah.lancien" Date: Thu, 6 Apr 2023 13:25:37 +0000 Subject: [PATCH 04/14] Added migration to create 'type' column for messages --- .../2023_04_06_122125_add_message_type.php | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 database/migrations/2023_04_06_122125_add_message_type.php diff --git a/database/migrations/2023_04_06_122125_add_message_type.php b/database/migrations/2023_04_06_122125_add_message_type.php new file mode 100644 index 0000000..dd9bd38 --- /dev/null +++ b/database/migrations/2023_04_06_122125_add_message_type.php @@ -0,0 +1,35 @@ +integer('type') + ->nullable() + ->comment('Message Type defined by an enum.') + ->after('message'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('messages', function (Blueprint $table) { + $table->dropColumn('type'); + }); + } +} From a631506cf1a4390d44d2eda176ca0b5b028b3836 Mon Sep 17 00:00:00 2001 From: "noah.lancien" Date: Thu, 6 Apr 2023 13:26:20 +0000 Subject: [PATCH 05/14] Changed blade and request to create private or public messages --- app/Http/Requests/CreateMessage.php | 11 +++++++++-- config/app.php | 1 + resources/views/ticket/show.blade.php | 15 +++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/Http/Requests/CreateMessage.php b/app/Http/Requests/CreateMessage.php index ad93dfb..99c198f 100644 --- a/app/Http/Requests/CreateMessage.php +++ b/app/Http/Requests/CreateMessage.php @@ -2,7 +2,9 @@ namespace App\Http\Requests; +use App\Enums\MessageType; use Illuminate\Foundation\Http\FormRequest; +use Kwaadpepper\Enum\Rules\EnumIsValidRule; class CreateMessage extends FormRequest { @@ -33,7 +35,8 @@ class CreateMessage extends FormRequest protected function prepareForValidation() { $this->merge([ - 'subscribe' => $this->subscribe ? true : false + 'subscribe' => $this->subscribe ? true : false, + 'type' => $this->type == MessageType::private() ? MessageType::private()->value : MessageType::public()->value ]); } @@ -49,7 +52,11 @@ class CreateMessage extends FormRequest return [ 'subscribe' => 'required|boolean', 'message' => 'required|min:' . ($user->isAdmin() ? '5' : '20'), - 'file_message' => 'sometimes|mimes:jpeg,jpg,png,pdf|max:2048' + 'file_message' => 'sometimes|mimes:jpeg,jpg,png,pdf|max:2048', + 'type' => [ + 'required', + new EnumIsValidRule(MessageType::class) + ] ]; } } diff --git a/config/app.php b/config/app.php index b2c68ba..72f41ed 100644 --- a/config/app.php +++ b/config/app.php @@ -245,6 +245,7 @@ return [ 'TableRow' => App\Enums\Planning\TableRow::class, 'ActivityEnum' => App\Enums\MacroSchedule\Activity::class, 'ProjectStatus' => App\Enums\ProjectStatus::class, + 'MessageTypeEnum' => App\Enums\MessageType::class, ], ]; diff --git a/resources/views/ticket/show.blade.php b/resources/views/ticket/show.blade.php index aec2ebd..56eef21 100644 --- a/resources/views/ticket/show.blade.php +++ b/resources/views/ticket/show.blade.php @@ -126,6 +126,16 @@ + @if(Auth::check() and !Auth::user()->role->equals(Role::client())) +
+
+
+ + +
+
+
+ @endif @else + @if ( + $message->type->equals(MessageTypeEnum::public()) || + ($message->type->equals(MessageTypeEnum::private()) && !Auth::user()->role->equals(Role::client())) + )
{!! ToolboxHelper::plainToHtml($message->message) !!} @if ($message->file !== null) @@ -194,6 +208,7 @@ @endcan @endif
+ @endif @endif @endforeach From fb570b166b1f8e9d0ae971710d8d69400d2d6d1e Mon Sep 17 00:00:00 2001 From: "noah.lancien" Date: Thu, 6 Apr 2023 13:34:41 +0000 Subject: [PATCH 06/14] Added style and icon for private messages --- resources/views/ticket/show.blade.php | 89 ++++++++++++++------------- 1 file changed, 46 insertions(+), 43 deletions(-) diff --git a/resources/views/ticket/show.blade.php b/resources/views/ticket/show.blade.php index 56eef21..833c3bf 100644 --- a/resources/views/ticket/show.blade.php +++ b/resources/views/ticket/show.blade.php @@ -161,53 +161,56 @@ $message->type->equals(MessageTypeEnum::public()) || ($message->type->equals(MessageTypeEnum::private()) && !Auth::user()->role->equals(Role::client())) ) -
- {!! ToolboxHelper::plainToHtml($message->message) !!} - @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é') - ]) !!} - - @if($message->user_id === Auth::user()->id) - @can('updateMessage', $ticket, $message) - -