<?php
namespace App\Notifications\Client;

use App\Models\Besoin;
use App\Enums\StatutBesoin;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;

class StatutBesoinChangeNotification extends Notification
{
    use Queueable;

    public function __construct(
        public Besoin $besoin,
        public StatutBesoin $ancienStatut,
        public StatutBesoin $nouveauStatut
    ) {}

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

    public function toMail($notifiable): MailMessage
    {
        $message = match($this->nouveauStatut) {
            StatutBesoin::EN_ETUDE => 'Notre équipe étudie actuellement votre demande.',
            StatutBesoin::PROPOSITION_FAITE => 'Une proposition a été faite pour votre demande. Notre équipe va vous contacter.',
            StatutBesoin::CONTRAT_SIGNE => 'Le contrat a été signé. La mission va bientôt débuter.',
            StatutBesoin::MISSION_EN_COURS => 'La mission est en cours.',
            StatutBesoin::TERMINEE => 'La mission est terminée.',
            StatutBesoin::ANNULEE => 'Votre demande a été annulée.',
            default => 'Le statut de votre demande a été mis à jour.',
        };

        return (new MailMessage)
            ->subject("[PRODOM] Mise à jour de votre demande #{$this->besoin->reference}")
            ->greeting('Bonjour ' . $notifiable->name)
            ->line('Le statut de votre demande a été mis à jour.')
            ->line('Référence : ' . $this->besoin->reference)
            ->line('Ancien statut : ' . $this->ancienStatut->label())
            ->line('Nouveau statut : ' . $this->nouveauStatut->label())
            ->line($message)
            ->salutation('L\'équipe PRODOM');
    }
}
