<?php
namespace App\Services;

use App\Models\Candidat;
use App\Models\User;
use App\Models\Besoin;
use App\Enums\StatutCandidat;
use App\Notifications\Candidat\DossierSoumisNotification;
use App\Notifications\Candidat\StatutCandidatChangeNotification;
use App\Notifications\Candidat\DocumentValideNotification;
use App\Notifications\Candidat\DocumentRejeteNotification;
use App\Notifications\Client\BesoinReçuNotification;

class NotificationService
{
    /**
     * Envoie la notification de confirmation après soumission du dossier
     */
    public function notifierDossierSoumis(Candidat $candidat): void
    {
        $candidat->user->notify(new DossierSoumisNotification($candidat));
    }

    /**
     * Notifie le candidat quand son statut change
     */
    public function notifierChangementStatutCandidat(
        Candidat $candidat,
        StatutCandidat $ancienStatut,
        StatutCandidat $nouveauStatut
    ): void {
        $candidat->user->notify(new StatutCandidatChangeNotification($candidat, $ancienStatut, $nouveauStatut));
    }

    /**
     * Notifie le candidat quand un document est validé
     */
    public function notifierDocumentValide(Candidat $candidat, \App\Models\PieceJointe $piece): void
    {
        $candidat->user->notify(new DocumentValideNotification($candidat, $piece));
    }

    /**
     * Notifie le candidat quand un document est rejeté
     */
    public function notifierDocumentRejete(Candidat $candidat, \App\Models\PieceJointe $piece, string $raison): void
    {
        $candidat->user->notify(new DocumentRejeteNotification($candidat, $piece, $raison));
    }

    /**
     * Notifie le client quand son besoin est reçu
     */
    public function notifierBesoinRecu(User $user, Besoin $besoin): void
    {
        $user->notify(new BesoinReçuNotification($besoin));
    }
}
