From ba5a6a2bd84c6de78b0d6b3f1e441b61432945e9 Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Wed, 12 Apr 2023 08:49:44 +0200 Subject: [PATCH 1/4] added team name into search results --- be/routes/api.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/be/routes/api.php b/be/routes/api.php index 8d6006a..c9144e8 100644 --- a/be/routes/api.php +++ b/be/routes/api.php @@ -110,11 +110,10 @@ Route::middleware(['auth:sanctum', 'abilities:full-access'])->group(function () $projectIDs = Project::where('name', 'like', '%' . $search . '%')->orWhere('code', 'like', '%' . $search . '%')->get()->pluck('id'); $userIDs = User::where('firstname', 'like', '%' . $search . '%')->orWhere('lastname', 'like', '%' . $search . '%')->get()->pluck('id'); - - + $teams = Team::whereHas('users', function($q) use($userIDs) { $q->whereIn('user_id', $userIDs); - })->get(); + })->orWhere('name', 'like', '%' . $search . '%' )->get(); $mastertasks = MasterTask::with('subtasks')->where('title', 'like', '%' . $search . '%')->orWhereIn('project_id', $projectIDs)->orWhereIn('team_id', $teams->pluck('id'))->get(); From 38eab4f9b7894480853d2ed787a6c375d8bec078 Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Wed, 12 Apr 2023 08:50:18 +0200 Subject: [PATCH 2/4] master task edited email notification --- be/app/Events/MasterTaskEdited.php | 42 +++++++++++ .../SendEditedMasterTaskNotification.php | 69 +++++++++++++++++++ be/app/Mail/MasterTaskEdited.php | 64 +++++++++++++++++ be/app/Observers/MasterTaskObserver.php | 4 ++ be/app/Providers/EventServiceProvider.php | 5 ++ .../emails/task/master_task_edited.blade.php | 6 ++ 6 files changed, 190 insertions(+) create mode 100644 be/app/Events/MasterTaskEdited.php create mode 100644 be/app/Listeners/SendEditedMasterTaskNotification.php create mode 100644 be/app/Mail/MasterTaskEdited.php create mode 100644 be/resources/views/emails/task/master_task_edited.blade.php diff --git a/be/app/Events/MasterTaskEdited.php b/be/app/Events/MasterTaskEdited.php new file mode 100644 index 0000000..7f8b1a6 --- /dev/null +++ b/be/app/Events/MasterTaskEdited.php @@ -0,0 +1,42 @@ +mastertask = $mastertask; + $this->originalMastertask = $originalMastertask; + } + + + /** + * 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/SendEditedMasterTaskNotification.php b/be/app/Listeners/SendEditedMasterTaskNotification.php new file mode 100644 index 0000000..ef66494 --- /dev/null +++ b/be/app/Listeners/SendEditedMasterTaskNotification.php @@ -0,0 +1,69 @@ +mastertask->toArray(), $event->originalMastertask); + + foreach ( $modelDiff as $key => $diff ) { + if (in_array($key, ['created_at', 'updated_at', 'status'])) { + continue; + } + + // znovuotvorenie tasku + 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 ) ); + } + } + + // ukoncenie master tasku - neposielame notifikaciu + if ($key == 'is_finished' && $diff == 1) { + return; + } + + $difference[$key] = $diff; + } + + if (empty($difference)) { + return; + } + + // send notification to all users + 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 ) ); + } + + + + } +} diff --git a/be/app/Mail/MasterTaskEdited.php b/be/app/Mail/MasterTaskEdited.php new file mode 100644 index 0000000..5e2dece --- /dev/null +++ b/be/app/Mail/MasterTaskEdited.php @@ -0,0 +1,64 @@ +mastertask = $mastertask; + $this->difference = $difference; + } + + /** + * Get the message envelope. + * + * @return \Illuminate\Mail\Mailables\Envelope + */ + public function envelope() + { + return new Envelope( + subject: 'Master Task Edited', + ); + } + + /** + * Get the message content definition. + * + * @return \Illuminate\Mail\Mailables\Content + */ + public function content() + { + return new Content( + view: 'emails.task.master_task_edited', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments() + { + return []; + } +} diff --git a/be/app/Observers/MasterTaskObserver.php b/be/app/Observers/MasterTaskObserver.php index ccb1dec..28bd7a5 100644 --- a/be/app/Observers/MasterTaskObserver.php +++ b/be/app/Observers/MasterTaskObserver.php @@ -2,6 +2,7 @@ namespace App\Observers; +use App\Events\MasterTaskEdited; use App\Models\MasterTask; class MasterTaskObserver @@ -15,5 +16,8 @@ class MasterTaskObserver { // to prevent updating created_by field. this field cannot be updated once created. $mastertask->created_by = $mastertask->getOriginal('created_by'); + + MasterTaskEdited::dispatch($mastertask, $mastertask->getOriginal()); + } } diff --git a/be/app/Providers/EventServiceProvider.php b/be/app/Providers/EventServiceProvider.php index 3168eb8..8ab9100 100644 --- a/be/app/Providers/EventServiceProvider.php +++ b/be/app/Providers/EventServiceProvider.php @@ -2,7 +2,9 @@ namespace App\Providers; +use App\Events\MasterTaskEdited; use App\Events\SubTaskCreated; +use App\Listeners\SendEditedMasterTaskNotification; use App\Listeners\SendNewTaskEmailNotification; use App\Models\MasterTask; use App\Models\SubTask; @@ -28,6 +30,9 @@ class EventServiceProvider extends ServiceProvider SendNewTaskEmailNotification::class, //LogEvent::class, ], + MasterTaskEdited::class => [ + SendEditedMasterTaskNotification::class + ], ]; /** diff --git a/be/resources/views/emails/task/master_task_edited.blade.php b/be/resources/views/emails/task/master_task_edited.blade.php new file mode 100644 index 0000000..de1f886 --- /dev/null +++ b/be/resources/views/emails/task/master_task_edited.blade.php @@ -0,0 +1,6 @@ +Master Task edited.

+ +Edited fields:

+@foreach($difference as $key => $diff) + {{ $key }}: {{ $diff }}
+@endforeach From 985c953fe0c8beec2c00c6e85b7187cb709e0e86 Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Wed, 12 Apr 2023 09:06:05 +0200 Subject: [PATCH 3/4] no message --- be/app/Http/Controllers/SubTaskController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/be/app/Http/Controllers/SubTaskController.php b/be/app/Http/Controllers/SubTaskController.php index db981e5..4167e48 100644 --- a/be/app/Http/Controllers/SubTaskController.php +++ b/be/app/Http/Controllers/SubTaskController.php @@ -55,7 +55,7 @@ class SubTaskController extends Controller $subtasks = SubTask::whereHas('mastertask', function ($query) use ($parameters) { $query->where('team_id', $parameters['team_id']); })->whereHas('timeblocks', function ($query) use ($parameters) { - $query->where('start', '>=', $parameters['start']); + $query->where('start', '>', $parameters['start']); $query->where('end', '<=', $parameters['end']); })->get(); @@ -65,7 +65,7 @@ class SubTaskController extends Controller } else if (isset($parameters['user_id'])) { $subtasks = SubTask::where('user_id', $parameters['user_id'])->whereHas('timeblocks', function ($query) use ($parameters) { - $query->where('start', '>=', $parameters['start']); + $query->where('start', '>', $parameters['start']); $query->where('end', '<=', $parameters['end']); })->get(); From f0e6a98dd7377d03f6f8a20cfc924c58b2ddd18f Mon Sep 17 00:00:00 2001 From: Michal Feher Date: Wed, 12 Apr 2023 09:18:42 +0200 Subject: [PATCH 4/4] no message --- be/app/Http/Controllers/SubTaskController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/be/app/Http/Controllers/SubTaskController.php b/be/app/Http/Controllers/SubTaskController.php index 4167e48..db981e5 100644 --- a/be/app/Http/Controllers/SubTaskController.php +++ b/be/app/Http/Controllers/SubTaskController.php @@ -55,7 +55,7 @@ class SubTaskController extends Controller $subtasks = SubTask::whereHas('mastertask', function ($query) use ($parameters) { $query->where('team_id', $parameters['team_id']); })->whereHas('timeblocks', function ($query) use ($parameters) { - $query->where('start', '>', $parameters['start']); + $query->where('start', '>=', $parameters['start']); $query->where('end', '<=', $parameters['end']); })->get(); @@ -65,7 +65,7 @@ class SubTaskController extends Controller } else if (isset($parameters['user_id'])) { $subtasks = SubTask::where('user_id', $parameters['user_id'])->whereHas('timeblocks', function ($query) use ($parameters) { - $query->where('start', '>', $parameters['start']); + $query->where('start', '>=', $parameters['start']); $query->where('end', '<=', $parameters['end']); })->get();