From 8a774dd4fa6eb1e156363e190795c7ed1b7d5b1d Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Wed, 12 Apr 2023 18:00:53 +0200 Subject: [PATCH] email notifications --- be/app/Events/SubTaskDeleted.php | 39 ++++++++++++ .../SendDeletedSubTaskNotification.php | 35 +++++++++++ .../SendEditedMasterTaskNotification.php | 22 +++++-- .../SendNewSubTaskEmailNotification.php | 35 +++++++++++ be/app/Mail/MasterTaskReopened.php | 62 +++++++++++++++++++ be/app/Mail/NewTask.php | 2 +- be/app/Mail/SubTaskDeleted.php | 62 +++++++++++++++++++ be/app/Observers/SubTaskObserver.php | 3 +- be/app/Providers/EventServiceProvider.php | 9 ++- .../task/master_task_reopened.blade.php | 1 + .../emails/task/sub_task_created.blade.php | 1 + .../emails/task/sub_task_deleted.blade.php | 1 + 12 files changed, 263 insertions(+), 9 deletions(-) create mode 100644 be/app/Events/SubTaskDeleted.php create mode 100644 be/app/Listeners/SendDeletedSubTaskNotification.php create mode 100644 be/app/Listeners/SendNewSubTaskEmailNotification.php create mode 100644 be/app/Mail/MasterTaskReopened.php create mode 100644 be/app/Mail/SubTaskDeleted.php create mode 100644 be/resources/views/emails/task/master_task_reopened.blade.php create mode 100644 be/resources/views/emails/task/sub_task_created.blade.php create mode 100644 be/resources/views/emails/task/sub_task_deleted.blade.php diff --git a/be/app/Events/SubTaskDeleted.php b/be/app/Events/SubTaskDeleted.php new file mode 100644 index 0000000..7b749c9 --- /dev/null +++ b/be/app/Events/SubTaskDeleted.php @@ -0,0 +1,39 @@ +subtask = $subtask; + } + + /** + * Get the channels the event should broadcast on. + * + * @return \Illuminate\Broadcasting\Channel|array + */ + public function broadcastOn() + { + return new PrivateChannel('channel-name'); + } +} diff --git a/be/app/Listeners/SendDeletedSubTaskNotification.php b/be/app/Listeners/SendDeletedSubTaskNotification.php new file mode 100644 index 0000000..129d87b --- /dev/null +++ b/be/app/Listeners/SendDeletedSubTaskNotification.php @@ -0,0 +1,35 @@ +subtask->user->email; + $receiversArray[] = \App\Models\User::find($event->subtask->created_by)->email; + + Mail::to( $receiversArray )->send( new \App\Mail\SubTaskDeleted( $event->subtask ) ); + } +} diff --git a/be/app/Listeners/SendEditedMasterTaskNotification.php b/be/app/Listeners/SendEditedMasterTaskNotification.php index ef66494..a33b846 100644 --- a/be/app/Listeners/SendEditedMasterTaskNotification.php +++ b/be/app/Listeners/SendEditedMasterTaskNotification.php @@ -4,10 +4,9 @@ namespace App\Listeners; use App\Events\MasterTaskEdited; use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Queue\InteractsWithQueue; use Illuminate\Support\Facades\Mail; -class SendEditedMasterTaskNotification +class SendEditedMasterTaskNotification implements ShouldQueue { /** * Create the event listener. @@ -29,11 +28,22 @@ class SendEditedMasterTaskNotification { $difference = []; + $editedMasterTaskArray = $event->mastertask->toArray(); + $originalMasterTaskArray = $event->originalMastertask; + + // unset key from array + unset($editedMasterTaskArray['created_at']); + unset($editedMasterTaskArray['updated_at']); + unset($editedMasterTaskArray['subtasks']); + + unset($originalMasterTaskArray['created_at']); + unset($originalMasterTaskArray['updated_at']); + // get the difference between $mastertask and $originalMastertask - $modelDiff = array_diff($event->mastertask->toArray(), $event->originalMastertask); + $modelDiff = array_diff_assoc($editedMasterTaskArray, $originalMasterTaskArray); foreach ( $modelDiff as $key => $diff ) { - if (in_array($key, ['created_at', 'updated_at', 'status'])) { + if (in_array($key, ['status'])) { continue; } @@ -41,7 +51,9 @@ class SendEditedMasterTaskNotification if ($key == 'is_finished' && $diff == 0) { foreach ( $event->mastertask->subtasks as $subtask ) { // Mail::to( $subtask->user->email )->send( new \App\Mail\MasterTaskEdited( $event->mastertask, $difference ) ); - Mail::to( 'feher@studiotem.com' )->send( new \App\Mail\MasterTaskEdited( $event->mastertask, $difference ) ); + Mail::to( 'feher@studiotem.com' )->send( new \App\Mail\MasterTaskReopened( $event->mastertask ) ); + + return; } } diff --git a/be/app/Listeners/SendNewSubTaskEmailNotification.php b/be/app/Listeners/SendNewSubTaskEmailNotification.php new file mode 100644 index 0000000..31524ab --- /dev/null +++ b/be/app/Listeners/SendNewSubTaskEmailNotification.php @@ -0,0 +1,35 @@ +subtask->user->email )->send( new NewTask( $event->subtask ) ); + Mail::to( 'feher@studiotem.com' )->send( new NewTask( $event->subtask ) ); + } +} diff --git a/be/app/Mail/MasterTaskReopened.php b/be/app/Mail/MasterTaskReopened.php new file mode 100644 index 0000000..0efe114 --- /dev/null +++ b/be/app/Mail/MasterTaskReopened.php @@ -0,0 +1,62 @@ +mastertask = $mastertask; + } + + /** + * Get the message envelope. + * + * @return \Illuminate\Mail\Mailables\Envelope + */ + public function envelope() + { + return new Envelope( + subject: 'Master Task ' . $this->mastertask->title . ' was reopened', + ); + } + + /** + * Get the message content definition. + * + * @return \Illuminate\Mail\Mailables\Content + */ + public function content() + { + return new Content( + view: 'emails.task.master_task_reopened', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments() + { + return []; + } +} diff --git a/be/app/Mail/NewTask.php b/be/app/Mail/NewTask.php index 0bf04a0..c4c412c 100644 --- a/be/app/Mail/NewTask.php +++ b/be/app/Mail/NewTask.php @@ -46,7 +46,7 @@ class NewTask extends Mailable public function content() { return new Content( - view: 'emails.task.new_task_created', + view: 'emails.task.sub_task_created', ); } diff --git a/be/app/Mail/SubTaskDeleted.php b/be/app/Mail/SubTaskDeleted.php new file mode 100644 index 0000000..46487f4 --- /dev/null +++ b/be/app/Mail/SubTaskDeleted.php @@ -0,0 +1,62 @@ +subtask = $subtask; + } + + /** + * Get the message envelope. + * + * @return \Illuminate\Mail\Mailables\Envelope + */ + public function envelope() + { + return new Envelope( + subject: 'Sub Task ' . $this->subtask->mastertask->title . ' was deleted', + ); + } + + /** + * Get the message content definition. + * + * @return \Illuminate\Mail\Mailables\Content + */ + public function content() + { + return new Content( + view: 'emails.task.sub_task_deleted', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments() + { + return []; + } +} diff --git a/be/app/Observers/SubTaskObserver.php b/be/app/Observers/SubTaskObserver.php index 9c84ff0..b16da2e 100644 --- a/be/app/Observers/SubTaskObserver.php +++ b/be/app/Observers/SubTaskObserver.php @@ -3,6 +3,7 @@ namespace App\Observers; use App\Events\SubTaskCreated; +use App\Events\SubTaskDeleted; use App\Models\SubTask; class SubTaskObserver @@ -46,7 +47,7 @@ class SubTaskObserver */ public function deleted(SubTask $subTask) { - // + SubTaskDeleted::dispatch($subTask); } /** diff --git a/be/app/Providers/EventServiceProvider.php b/be/app/Providers/EventServiceProvider.php index 8ab9100..113684f 100644 --- a/be/app/Providers/EventServiceProvider.php +++ b/be/app/Providers/EventServiceProvider.php @@ -4,8 +4,10 @@ namespace App\Providers; use App\Events\MasterTaskEdited; use App\Events\SubTaskCreated; +use App\Events\SubTaskDeleted; +use App\Listeners\SendDeletedSubTaskNotification; use App\Listeners\SendEditedMasterTaskNotification; -use App\Listeners\SendNewTaskEmailNotification; +use App\Listeners\SendNewSubTaskEmailNotification; use App\Models\MasterTask; use App\Models\SubTask; use App\Observers\MasterTaskObserver; @@ -27,9 +29,12 @@ class EventServiceProvider extends ServiceProvider SendEmailVerificationNotification::class, ], SubTaskCreated::class => [ - SendNewTaskEmailNotification::class, + SendNewSubTaskEmailNotification::class, //LogEvent::class, ], + SubTaskDeleted::class => [ + SendDeletedSubTaskNotification::class + ], MasterTaskEdited::class => [ SendEditedMasterTaskNotification::class ], diff --git a/be/resources/views/emails/task/master_task_reopened.blade.php b/be/resources/views/emails/task/master_task_reopened.blade.php new file mode 100644 index 0000000..27c794c --- /dev/null +++ b/be/resources/views/emails/task/master_task_reopened.blade.php @@ -0,0 +1 @@ +Master Task {{$mastertask->title}} was reopened.

diff --git a/be/resources/views/emails/task/sub_task_created.blade.php b/be/resources/views/emails/task/sub_task_created.blade.php new file mode 100644 index 0000000..dd2f5c3 --- /dev/null +++ b/be/resources/views/emails/task/sub_task_created.blade.php @@ -0,0 +1 @@ +New task created: {{ $subtask->mastertask->title }} diff --git a/be/resources/views/emails/task/sub_task_deleted.blade.php b/be/resources/views/emails/task/sub_task_deleted.blade.php new file mode 100644 index 0000000..d2bd471 --- /dev/null +++ b/be/resources/views/emails/task/sub_task_deleted.blade.php @@ -0,0 +1 @@ +Sub Task {{$subtask->mastertask->title}} was deleted.