timestamp = now(); $this->changes = $changes ?: $task->getChanges(); $this->original = $original ?: $task->getOriginal(); } public function handle(): void { foreach ($this->changes as $key => $value) { if (in_array($key, ['relative_position', 'created_at', 'updated_at', 'deleted_at'])) { continue; } $new_value = $value; $old_value = $this->original[$key]; // because we need to save a string, not id if ($key === 'project_phase_id') { $new_value = $this->task->phase?->name; $old_value = $this->original['_old_phase_name']; } $activity = TaskHistory::create([ 'task_id' => $this->task->id, 'user_id' => $this->author->id, 'field' => $key, 'new_value' => $new_value, 'old_value' => $old_value, ]); $activity->updateQuietly(['created_at' => $this->timestamp]); // broadcast activity RegisterModulesEvents::broadcastEvent('tasks_activities', 'create', $activity->load('user')); } } }