<?php

namespace App\Notifications;

use App\Models\Interview;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;

class InterviewStatusChangedNotification extends Notification
{
    use Queueable;

    public function __construct(
        public Interview $interview,
        public string $oldStatus,
        public string $newStatus
    ) {}

    public function via(object $notifiable): array
    {
        return ['mail'];
    }

    public function toMail(object $notifiable): MailMessage
    {
        $title       = $this->interview->title;
        $applicant   = $this->interview->application->full_name ?? 'Başvuran';
        $scheduledAt = $this->interview->scheduled_at->format('d.m.Y H:i');

        return match ($this->newStatus) {
            'completed' => (new MailMessage)
                ->subject('Görüşmeniz Tamamlandı — ' . $title)
                ->greeting('Merhaba ' . $applicant . ',')
                ->line('"' . $title . '" başlıklı görüşmeniz tamamlandı.')
                ->line('Değerlendirme sürecimiz devam etmektedir. En kısa sürede sizinle iletişime geçeceğiz.')
                ->line('Katılımınız için teşekkür ederiz.'),

            'cancelled' => (new MailMessage)
                ->subject('Görüşme İptal Edildi — ' . $title)
                ->greeting('Merhaba ' . $applicant . ',')
                ->line('"' . $title . '" başlıklı görüşmeniz maalesef iptal edilmiştir.')
                ->line('Daha fazla bilgi için bizimle iletişime geçebilirsiniz.')
                ->line('Anlayışınız için teşekkür ederiz.'),

            'rescheduled' => (new MailMessage)
                ->subject('Görüşme Yeniden Planlandı — ' . $title)
                ->greeting('Merhaba ' . $applicant . ',')
                ->line('"' . $title . '" başlıklı görüşmeniz yeniden planlanmıştır.')
                ->line('Yeni tarih ve saat: **' . $scheduledAt . '**')
                ->line('Herhangi bir sorunuz olursa bizimle iletişime geçebilirsiniz.'),

            'scheduled' => (new MailMessage)
                ->subject('Görüşme Planlandı — ' . $title)
                ->greeting('Merhaba ' . $applicant . ',')
                ->line('"' . $title . '" başlıklı görüşmeniz planlanmıştır.')
                ->line('Tarih ve saat: **' . $scheduledAt . '**')
                ->line('Görüşmede görüşmek üzere!'),

            default => (new MailMessage)
                ->subject('Görüşme Durumu Güncellendi — ' . $title)
                ->greeting('Merhaba ' . $applicant . ',')
                ->line('"' . $title . '" başlıklı görüşmenizin durumu güncellenmiştir.')
                ->line('Herhangi bir sorunuz olursa bizimle iletişime geçebilirsiniz.'),
        };
    }
}