From 88ec3bc34cbd0eda70d05ccf1441e7a3bfc35ed4 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sat, 6 Mar 2021 22:08:44 +0800 Subject: [PATCH] Add job deletion activity log --- app/Entities/Projects/Job.php | 1 + app/Events/Jobs/Deleted.php | 15 +++++++++++ .../Projects/LogProjectJobDeletionActivity.php | 30 ++++++++++++++++++++++ app/Providers/EventServiceProvider.php | 3 +++ tests/Unit/Models/ActivityTest.php | 22 ++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 app/Events/Jobs/Deleted.php create mode 100644 app/Listeners/Projects/LogProjectJobDeletionActivity.php diff --git a/app/Entities/Projects/Job.php b/app/Entities/Projects/Job.php index 3b3a491..e658f17 100755 --- a/app/Entities/Projects/Job.php +++ b/app/Entities/Projects/Job.php @@ -24,6 +24,7 @@ class Job extends Model protected $dispatchesEvents = [ 'created' => 'App\Events\Jobs\Created', 'updated' => 'App\Events\Jobs\Updated', + 'deleted' => 'App\Events\Jobs\Deleted', ]; /** diff --git a/app/Events/Jobs/Deleted.php b/app/Events/Jobs/Deleted.php new file mode 100644 index 0000000..b438550 --- /dev/null +++ b/app/Events/Jobs/Deleted.php @@ -0,0 +1,15 @@ +job = $job; + } +} diff --git a/app/Listeners/Projects/LogProjectJobDeletionActivity.php b/app/Listeners/Projects/LogProjectJobDeletionActivity.php new file mode 100644 index 0000000..8d5a0a3 --- /dev/null +++ b/app/Listeners/Projects/LogProjectJobDeletionActivity.php @@ -0,0 +1,30 @@ +job; + $projectId = $job->project_id; + + $activityEntry = [ + 'type' => 'job_deleted', + 'parent_id' => null, + 'user_id' => auth()->id(), + 'object_id' => $projectId, + 'object_type' => 'projects', + 'data' => json_encode([ + 'name' => $job->name, + 'description' => $job->description, + 'price' => $job->price, + ]), + ]; + + Activity::create($activityEntry); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 8bd3a50..f5bab95 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -25,6 +25,9 @@ class EventServiceProvider extends ServiceProvider 'App\Events\Jobs\Updated' => [ 'App\Listeners\Jobs\LogJobUpdateActivity', ], + 'App\Events\Jobs\Deleted' => [ + 'App\Listeners\Projects\LogProjectJobDeletionActivity', + ], ]; /** diff --git a/tests/Unit/Models/ActivityTest.php b/tests/Unit/Models/ActivityTest.php index a13a33b..1bd2b25 100644 --- a/tests/Unit/Models/ActivityTest.php +++ b/tests/Unit/Models/ActivityTest.php @@ -93,4 +93,26 @@ class ActivityTest extends TestCase ]), ]); } + + /** @test */ + public function it_records_job_deletion_activities() + { + $admin = $this->adminUserSigningIn(); + $project = factory(Project::class)->create(); + $job = factory(Job::class)->create(['project_id' => $project->id]); + $job->delete(); + + $this->seeInDatabase('user_activities', [ + 'type' => 'job_deleted', + 'parent_id' => null, + 'user_id' => $admin->id, + 'object_id' => $project->id, + 'object_type' => 'projects', + 'data' => json_encode([ + 'name' => $job->name, + 'description' => $job->description, + 'price' => $job->price, + ]), + ]); + } }