<?php

declare(strict_types=1);

namespace App\Services;

final class DeadlineEnforcementService
{
    public function nextActions(array $report): array
    {
        $deadline = isset($report['deadline_at']) ? strtotime((string) $report['deadline_at']) : null;
        $now = time();

        if (!$deadline) {
            return [
                'status' => 'missing_deadline',
                'actions' => ['Добавете краен срок според вида на производството.'],
            ];
        }

        $daysLeft = (int) ceil(($deadline - $now) / 86400);

        if ($daysLeft > 5) {
            return [
                'status' => 'waiting',
                'days_left' => $daysLeft,
                'actions' => ['Следете входящия номер и пазете доказателството за доставка.'],
            ];
        }

        if ($daysLeft >= 0) {
            return [
                'status' => 'reminder_due',
                'days_left' => $daysLeft,
                'actions' => [
                    'Изпратете учтиво напомняне към институцията.',
                    'Подгответе жалба при липса на отговор след крайния срок.',
                ],
            ];
        }

        return [
            'status' => 'overdue',
            'days_late' => abs($daysLeft),
            'actions' => [
                'Генерирайте жалба за просрочен или липсващ отговор.',
                'Приложете доказателството за доставка и входящия номер.',
                'При ЗДОИ подгответе жалба срещу мълчалив отказ.',
            ],
        ];
    }
}
