<?php

namespace App\Notifications;

use App\Models\AttendanceRegularization;
use Illuminate\Support\Str;

class AttendanceRegularizationRequested extends HrmsNotification
{
    public function __construct(
        public AttendanceRegularization $regularization
    ) {}

    public function notificationCategory(): string
    {
        return 'attendance';
    }

    public function notificationSubject(): string
    {
        $name = $this->regularization->user?->name ?? 'An employee';

        return 'Attendance regularization pending — ' . $name;
    }

    public function notificationLines(): array
    {
        $user = $this->regularization->user;

        return [
            ($user?->name ?? 'An employee') . ' submitted an attendance regularization request.',
            'Date: ' . $this->regularization->date?->format('d M Y'),
            'Reason: ' . Str::limit((string) $this->regularization->reason, 120),
        ];
    }

    public function actionUrl(): ?string
    {
        return route('attendance-regularizations.index', ['status' => 'pending']);
    }

    public function actionLabel(): string
    {
        return 'Review requests';
    }

    public function toArray(object $notifiable): array
    {
        $user = $this->regularization->user;

        return [
            'type' => 'attendance_regularization_requested',
            'message' => $user ? $user->name . ' submitted an attendance regularization request for ' . $this->regularization->date?->format('d M Y') : 'An attendance regularization request was submitted.',
            'employee_name' => $user?->name,
            'date' => $this->regularization->date?->format('Y-m-d'),
            'requested_clock_in' => $this->regularization->requested_clock_in?->format('H:i'),
            'requested_clock_out' => $this->regularization->requested_clock_out?->format('H:i'),
            'reason' => Str::limit($this->regularization->reason, 80),
            'regularization_id' => $this->regularization->id,
            'url' => route('attendance-regularizations.index', ['status' => 'pending']),
        ];
    }
}
