From 933e935583ecd99655c3f3d43ddea27e4593061b Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 7 Mar 2021 21:17:13 +0800 Subject: [PATCH] Add task creation activity log --- app/Entities/Projects/Task.php | 9 +++++++++ app/Events/Tasks/Created.php | 15 +++++++++++++++ app/Listeners/Tasks/LogTaskCreationActivity.php | 25 +++++++++++++++++++++++++ app/Providers/EventServiceProvider.php | 3 +++ tests/Unit/Models/ActivityTest.php | 19 +++++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 app/Events/Tasks/Created.php create mode 100644 app/Listeners/Tasks/LogTaskCreationActivity.php diff --git a/app/Entities/Projects/Task.php b/app/Entities/Projects/Task.php index cb5e78a..fde2605 100755 --- a/app/Entities/Projects/Task.php +++ b/app/Entities/Projects/Task.php @@ -6,6 +6,15 @@ use Illuminate\Database\Eloquent\Model; class Task extends Model { + /** + * The event map for the model. + * + * @var array + */ + protected $dispatchesEvents = [ + 'created' => 'App\Events\Tasks\Created', + ]; + protected $guarded = ['id', 'created_at', 'updated_at']; protected $touches = ['job']; diff --git a/app/Events/Tasks/Created.php b/app/Events/Tasks/Created.php new file mode 100644 index 0000000..fa0ef0c --- /dev/null +++ b/app/Events/Tasks/Created.php @@ -0,0 +1,15 @@ +task = $task; + } +} diff --git a/app/Listeners/Tasks/LogTaskCreationActivity.php b/app/Listeners/Tasks/LogTaskCreationActivity.php new file mode 100644 index 0000000..4c1523d --- /dev/null +++ b/app/Listeners/Tasks/LogTaskCreationActivity.php @@ -0,0 +1,25 @@ +task; + + $activityEntry = [ + 'type' => 'task_created', + 'parent_id' => null, + 'user_id' => auth()->id(), + 'object_id' => $task->id, + 'object_type' => 'tasks', + 'data' => null, + ]; + + Activity::create($activityEntry); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index f5bab95..66fd7e8 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -28,6 +28,9 @@ class EventServiceProvider extends ServiceProvider 'App\Events\Jobs\Deleted' => [ 'App\Listeners\Projects\LogProjectJobDeletionActivity', ], + 'App\Events\Tasks\Created' => [ + 'App\Listeners\Tasks\LogTaskCreationActivity', + ], ]; /** diff --git a/tests/Unit/Models/ActivityTest.php b/tests/Unit/Models/ActivityTest.php index 1bd2b25..7977fb1 100644 --- a/tests/Unit/Models/ActivityTest.php +++ b/tests/Unit/Models/ActivityTest.php @@ -4,6 +4,7 @@ namespace Tests\Unit\Models; use App\Entities\Projects\Job; use App\Entities\Projects\Project; +use App\Entities\Projects\Task; use Illuminate\Foundation\Testing\RefreshDatabase; use Tests\TestCase; @@ -115,4 +116,22 @@ class ActivityTest extends TestCase ]), ]); } + + /** @test */ + public function it_records_task_creation_activities() + { + $admin = $this->adminUserSigningIn(); + $project = factory(Project::class)->create(); + $job = factory(Job::class)->create(['project_id' => $project->id]); + $task = factory(Task::class)->create(['job_id' => $job->id]); + + $this->seeInDatabase('user_activities', [ + 'type' => 'task_created', + 'parent_id' => null, + 'user_id' => $admin->id, + 'object_id' => $task->id, + 'object_type' => 'tasks', + 'data' => null, + ]); + } }