MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/snap.cafsinfotech.in/app/Jobs/SaveTaskEditHistory.php
<?php

namespace App\Jobs;

use App\Models\Task;
use App\Models\TaskHistory;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Carbon;

class SaveTaskEditHistory implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private Carbon $timestamp;
    private array $changes;
    private array $original;

    public function __construct(protected Task $task, protected User $author, array $changes = null, array $original = null)
    {
        $this->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;
            }

            TaskHistory::create([
                'task_id' => $this->task->id,
                'user_id' => $this->author->id,
                'field' => $key,
                'new_value' => $value,
                'old_value' => $this->original[$key],
            ])->updateQuietly(['created_at' => $this->timestamp]);
        }
    }
}