<?php

namespace App\Console\Commands;

use App\Models\Task;
use App\Notifications\TaskReminderNotification;
use Illuminate\Console\Command;

class SendTaskReminders extends Command
{
    protected $signature = 'tasks:send-reminders';
    protected $description = 'ارسال یادآوری برای تسک‌های امروز و عقب‌افتاده به مسئولان';

    public function handle(): int
    {
        // تسک‌های باز که سررسیدشان رسیده یا گذشته و در ۱۲ ساعت اخیر یادآوری نشده‌اند
        $tasks = Task::query()
            ->open()
            ->whereNotNull('due_date')
            ->whereDate('due_date', '<=', today())
            ->where(function ($q) {
                $q->whereNull('last_notified_at')
                    ->orWhere('last_notified_at', '<', now()->subHours(12));
            })
            ->with('assignees')
            ->get();

        $count = 0;
        foreach ($tasks as $task) {
            foreach ($task->assignees as $user) {
                $user->notify(new TaskReminderNotification($task));
                $count++;
            }
            $task->forceFill(['last_notified_at' => now()])->saveQuietly();
        }

        $this->info("تعداد {$count} یادآوری ارسال شد.");

        return self::SUCCESS;
    }
}
