diff --git a/be/app/Events/SubTaskEdited.php b/be/app/Events/SubTaskEdited.php
new file mode 100644
index 0000000..cfeebb1
--- /dev/null
+++ b/be/app/Events/SubTaskEdited.php
@@ -0,0 +1,41 @@
+subtask = $subtask;
+ $this->originalSubtask = $originalSubtask;
+ }
+
+ /**
+ * 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 4167e48..74f4ef6 100644
--- a/be/app/Http/Controllers/SubTaskController.php
+++ b/be/app/Http/Controllers/SubTaskController.php
@@ -222,6 +222,7 @@ class SubTaskController extends Controller
$data['data'] = $request->all()['data'];
$data['data']['user_id'] = $request->all()['data']['employee_id'];
$data['data']['estimated_time'] = $request->all()['data']['duration'];
+ $data['data']['updated_by'] = User::getUserIdFromBearerToken($request->bearerToken());
$request->merge($data);
diff --git a/be/app/Listeners/SendEditedSubTaskNotification.php b/be/app/Listeners/SendEditedSubTaskNotification.php
new file mode 100644
index 0000000..c8f0c18
--- /dev/null
+++ b/be/app/Listeners/SendEditedSubTaskNotification.php
@@ -0,0 +1,70 @@
+subtask->updated_by == $event->subtask->user_id) {
+ return;
+ }
+
+ $difference = [];
+
+ $editedSubTaskArray = $event->subtask->toArray();
+ $originalSubTaskArray = $event->originalSubtask;
+
+ // unset key from array
+ unset($editedSubTaskArray['created_at']);
+ unset($editedSubTaskArray['updated_at']);
+ unset($editedSubTaskArray['timesheets']);
+ unset($editedSubTaskArray['timeblocks']);
+
+ unset($originalSubTaskArray['created_at']);
+ unset($originalSubTaskArray['updated_at']);
+ unset($originalSubTaskArray['timesheets']);
+ unset($originalSubTaskArray['timeblocks']);
+
+ // get the difference between $subtask and $originalSubtask
+ $modelDiff = array_diff_assoc($editedSubTaskArray, $originalSubTaskArray);
+
+ foreach ( $modelDiff as $key => $diff ) {
+ if (in_array($key, ['status', 'tracked_time'])) {
+ continue;
+ }
+
+ $difference[$key] = $diff;
+ }
+
+ if (empty($difference)) {
+ return;
+ }
+
+ // Mail::to( $subtask->user->email )->send( new \App\Mail\SubTaskEdited( $event->subtask, $difference ) );
+ Mail::to( 'feher@studiotem.com' )->send( new \App\Mail\SubTaskEdited( $event->subtask, $difference ) );
+
+ }
+}
diff --git a/be/app/Mail/SubTaskEdited.php b/be/app/Mail/SubTaskEdited.php
new file mode 100644
index 0000000..22f3de4
--- /dev/null
+++ b/be/app/Mail/SubTaskEdited.php
@@ -0,0 +1,64 @@
+subtask = $subtask;
+ $this->difference = $difference;
+ }
+
+ /**
+ * Get the message envelope.
+ *
+ * @return \Illuminate\Mail\Mailables\Envelope
+ */
+ public function envelope()
+ {
+ return new Envelope(
+ subject: 'Sub Task Edited',
+ );
+ }
+
+ /**
+ * Get the message content definition.
+ *
+ * @return \Illuminate\Mail\Mailables\Content
+ */
+ public function content()
+ {
+ return new Content(
+ view: 'emails.task.sub_task_edited',
+ );
+ }
+
+ /**
+ * 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 b16da2e..be329b3 100644
--- a/be/app/Observers/SubTaskObserver.php
+++ b/be/app/Observers/SubTaskObserver.php
@@ -4,6 +4,7 @@ namespace App\Observers;
use App\Events\SubTaskCreated;
use App\Events\SubTaskDeleted;
+use App\Events\SubTaskEdited;
use App\Models\SubTask;
class SubTaskObserver
@@ -25,6 +26,8 @@ class SubTaskObserver
$subTask->created_by = $subTask->getOriginal('created_by');
$subTask->tracked_time = $subTask->timesheets->sum('time');
+
+ SubTaskEdited::dispatch($subTask, $subTask->getOriginal());
}
/**
diff --git a/be/app/Providers/EventServiceProvider.php b/be/app/Providers/EventServiceProvider.php
index 113684f..01d400a 100644
--- a/be/app/Providers/EventServiceProvider.php
+++ b/be/app/Providers/EventServiceProvider.php
@@ -5,8 +5,10 @@ namespace App\Providers;
use App\Events\MasterTaskEdited;
use App\Events\SubTaskCreated;
use App\Events\SubTaskDeleted;
+use App\Events\SubTaskEdited;
use App\Listeners\SendDeletedSubTaskNotification;
use App\Listeners\SendEditedMasterTaskNotification;
+use App\Listeners\SendEditedSubTaskNotification;
use App\Listeners\SendNewSubTaskEmailNotification;
use App\Models\MasterTask;
use App\Models\SubTask;
@@ -35,6 +37,9 @@ class EventServiceProvider extends ServiceProvider
SubTaskDeleted::class => [
SendDeletedSubTaskNotification::class
],
+ SubTaskEdited::class => [
+ SendEditedSubTaskNotification::class
+ ],
MasterTaskEdited::class => [
SendEditedMasterTaskNotification::class
],
diff --git a/be/database/migrations/2023_04_13_085734_add_edited_by_to_subtask.php b/be/database/migrations/2023_04_13_085734_add_edited_by_to_subtask.php
new file mode 100644
index 0000000..0dfa1d2
--- /dev/null
+++ b/be/database/migrations/2023_04_13_085734_add_edited_by_to_subtask.php
@@ -0,0 +1,32 @@
+foreignIdFor( \App\Models\User::class, 'updated_by')->after('updated_at')->nullable()->default(null);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('subtask', function (Blueprint $table) {
+ //
+ });
+ }
+};
diff --git a/be/resources/views/emails/task/sub_task_edited.blade.php b/be/resources/views/emails/task/sub_task_edited.blade.php
new file mode 100644
index 0000000..f6d8f5e
--- /dev/null
+++ b/be/resources/views/emails/task/sub_task_edited.blade.php
@@ -0,0 +1,6 @@
+Sub Task edited.
+
+Edited fields:
+@foreach($difference as $key => $diff)
+ {{ $key }}: {{ $diff }}
+@endforeach