From 28a0bac09546427d99ca00cce7ed7f534103d724 Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Tue, 23 May 2023 15:58:48 +0200 Subject: [PATCH] timeblock finished email notification --- be/app/Events/TimeBlockFinished.php | 39 ++++++++++++ .../SendFinishedTimeBlockNotification.php | 35 +++++++++++ be/app/Mail/TimeBlockFinished.php | 62 +++++++++++++++++++ be/app/Observers/TimeBlockObserver.php | 17 +++++ be/app/Providers/EventServiceProvider.php | 8 +++ .../emails/task/time_block_finished.blade.php | 1 + 6 files changed, 162 insertions(+) create mode 100644 be/app/Events/TimeBlockFinished.php create mode 100644 be/app/Listeners/SendFinishedTimeBlockNotification.php create mode 100644 be/app/Mail/TimeBlockFinished.php create mode 100644 be/app/Observers/TimeBlockObserver.php create mode 100644 be/resources/views/emails/task/time_block_finished.blade.php diff --git a/be/app/Events/TimeBlockFinished.php b/be/app/Events/TimeBlockFinished.php new file mode 100644 index 0000000..59e9523 --- /dev/null +++ b/be/app/Events/TimeBlockFinished.php @@ -0,0 +1,39 @@ +timeblock = $timeblock; + } + + /** + * 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/SendFinishedTimeBlockNotification.php b/be/app/Listeners/SendFinishedTimeBlockNotification.php new file mode 100644 index 0000000..f4f3c9b --- /dev/null +++ b/be/app/Listeners/SendFinishedTimeBlockNotification.php @@ -0,0 +1,35 @@ +timeblock->subtask->created_by)->email; + + Mail::to( $receiver )->send( new \App\Mail\TimeBlockFinished( $event->timeblock->subtask ) ); + } +} diff --git a/be/app/Mail/TimeBlockFinished.php b/be/app/Mail/TimeBlockFinished.php new file mode 100644 index 0000000..7aff3b0 --- /dev/null +++ b/be/app/Mail/TimeBlockFinished.php @@ -0,0 +1,62 @@ +subtask = $subtask; + } + + /** + * Get the message envelope. + * + * @return \Illuminate\Mail\Mailables\Envelope + */ + public function envelope() + { + return new Envelope( + subject: 'Time block for subtask was finished' + ); + } + + /** + * Get the message content definition. + * + * @return \Illuminate\Mail\Mailables\Content + */ + public function content() + { + return new Content( + view: 'emails.task.time_block_finished' + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments() + { + return []; + } +} diff --git a/be/app/Observers/TimeBlockObserver.php b/be/app/Observers/TimeBlockObserver.php new file mode 100644 index 0000000..05332b1 --- /dev/null +++ b/be/app/Observers/TimeBlockObserver.php @@ -0,0 +1,17 @@ +getOriginal('is_finished') == 0 && $timeblock->is_finished == 1) { + TimeBlockFinished::dispatch($timeblock); + } + } +} diff --git a/be/app/Providers/EventServiceProvider.php b/be/app/Providers/EventServiceProvider.php index 01d400a..527e7fe 100644 --- a/be/app/Providers/EventServiceProvider.php +++ b/be/app/Providers/EventServiceProvider.php @@ -6,14 +6,18 @@ use App\Events\MasterTaskEdited; use App\Events\SubTaskCreated; use App\Events\SubTaskDeleted; use App\Events\SubTaskEdited; +use App\Events\TimeBlockFinished; use App\Listeners\SendDeletedSubTaskNotification; use App\Listeners\SendEditedMasterTaskNotification; use App\Listeners\SendEditedSubTaskNotification; +use App\Listeners\SendFinishedTimeBlockNotification; use App\Listeners\SendNewSubTaskEmailNotification; use App\Models\MasterTask; use App\Models\SubTask; +use App\Models\Timeblock; use App\Observers\MasterTaskObserver; use App\Observers\SubTaskObserver; +use App\Observers\TimeBlockObserver; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; @@ -43,6 +47,9 @@ class EventServiceProvider extends ServiceProvider MasterTaskEdited::class => [ SendEditedMasterTaskNotification::class ], + TimeBlockFinished::class => [ + SendFinishedTimeBlockNotification::class + ], ]; /** @@ -54,6 +61,7 @@ class EventServiceProvider extends ServiceProvider { MasterTask::observe( MasterTaskObserver::class); SubTask::observe( SubTaskObserver::class); + Timeblock::observe( TimeBlockObserver::class); } /** diff --git a/be/resources/views/emails/task/time_block_finished.blade.php b/be/resources/views/emails/task/time_block_finished.blade.php new file mode 100644 index 0000000..f4790c0 --- /dev/null +++ b/be/resources/views/emails/task/time_block_finished.blade.php @@ -0,0 +1 @@ +Timeblock for Sub Task {{$subtask->mastertask->title}} was finished.