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
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();