From d825605a99ab8e69d31ca242ed2cd1ba98605166 Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Thu, 30 Mar 2023 09:35:26 +0200 Subject: [PATCH] email notifications --- be/app/Events/SubTaskCreated.php | 39 ++++++++++++ be/app/Http/Controllers/SubTaskController.php | 1 + .../SendNewTaskEmailNotification.php | 34 ++++++++++ be/app/Mail/NewTask.php | 62 +++++++++++++++++++ be/app/Observers/SubTaskObserver.php | 3 +- be/app/Providers/EventServiceProvider.php | 6 ++ .../2023_03_29_111816_create_jobs_table.php | 36 +++++++++++ .../emails/task/new_task_created.blade.php | 1 + 8 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 be/app/Events/SubTaskCreated.php create mode 100644 be/app/Listeners/SendNewTaskEmailNotification.php create mode 100644 be/app/Mail/NewTask.php create mode 100644 be/database/migrations/2023_03_29_111816_create_jobs_table.php create mode 100644 be/resources/views/emails/task/new_task_created.blade.php diff --git a/be/app/Events/SubTaskCreated.php b/be/app/Events/SubTaskCreated.php new file mode 100644 index 0000000..e5a1996 --- /dev/null +++ b/be/app/Events/SubTaskCreated.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/Http/Controllers/SubTaskController.php b/be/app/Http/Controllers/SubTaskController.php index db3286c..db981e5 100644 --- a/be/app/Http/Controllers/SubTaskController.php +++ b/be/app/Http/Controllers/SubTaskController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Events\SubTaskCreated; use App\Http\Resources\BlockerResource; use App\Http\Resources\SubTaskResource; use App\Models\Attachment; diff --git a/be/app/Listeners/SendNewTaskEmailNotification.php b/be/app/Listeners/SendNewTaskEmailNotification.php new file mode 100644 index 0000000..858d983 --- /dev/null +++ b/be/app/Listeners/SendNewTaskEmailNotification.php @@ -0,0 +1,34 @@ +subtask->user->email )->send( new NewTask( $event->subtask ) ); + } +} diff --git a/be/app/Mail/NewTask.php b/be/app/Mail/NewTask.php new file mode 100644 index 0000000..0bf04a0 --- /dev/null +++ b/be/app/Mail/NewTask.php @@ -0,0 +1,62 @@ +subtask = $subtask; + } + + /** + * Get the message envelope. + * + * @return \Illuminate\Mail\Mailables\Envelope + */ + public function envelope() + { + return new Envelope( + subject: 'New Task', + ); + } + + /** + * Get the message content definition. + * + * @return \Illuminate\Mail\Mailables\Content + */ + public function content() + { + return new Content( + view: 'emails.task.new_task_created', + ); + } + + /** + * 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 777158f..9c84ff0 100644 --- a/be/app/Observers/SubTaskObserver.php +++ b/be/app/Observers/SubTaskObserver.php @@ -2,6 +2,7 @@ namespace App\Observers; +use App\Events\SubTaskCreated; use App\Models\SubTask; class SubTaskObserver @@ -14,7 +15,7 @@ class SubTaskObserver */ public function created(SubTask $subTask) { - // + SubTaskCreated::dispatch($subTask); } public function updating(SubTask $subTask) diff --git a/be/app/Providers/EventServiceProvider.php b/be/app/Providers/EventServiceProvider.php index 20240b3..3168eb8 100644 --- a/be/app/Providers/EventServiceProvider.php +++ b/be/app/Providers/EventServiceProvider.php @@ -2,6 +2,8 @@ namespace App\Providers; +use App\Events\SubTaskCreated; +use App\Listeners\SendNewTaskEmailNotification; use App\Models\MasterTask; use App\Models\SubTask; use App\Observers\MasterTaskObserver; @@ -22,6 +24,10 @@ class EventServiceProvider extends ServiceProvider Registered::class => [ SendEmailVerificationNotification::class, ], + SubTaskCreated::class => [ + SendNewTaskEmailNotification::class, + //LogEvent::class, + ], ]; /** diff --git a/be/database/migrations/2023_03_29_111816_create_jobs_table.php b/be/database/migrations/2023_03_29_111816_create_jobs_table.php new file mode 100644 index 0000000..a786a89 --- /dev/null +++ b/be/database/migrations/2023_03_29_111816_create_jobs_table.php @@ -0,0 +1,36 @@ +bigIncrements('id'); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('jobs'); + } +}; diff --git a/be/resources/views/emails/task/new_task_created.blade.php b/be/resources/views/emails/task/new_task_created.blade.php new file mode 100644 index 0000000..dd2f5c3 --- /dev/null +++ b/be/resources/views/emails/task/new_task_created.blade.php @@ -0,0 +1 @@ +New task created: {{ $subtask->mastertask->title }}