<?php
declare(strict_types=1);
namespace App\Services;

use App\Models\EnrollmentRequest;

final class EnrollmentConfirmationService
{
    public static function send(array $data,int $userId): string
    {
        $email=trim((string)($data['email']??''));
        if($email===''||!filter_var($email,FILTER_VALIDATE_EMAIL))return 'Aucun courriel envoyé : adresse absente ou invalide.';
        $days=['lundi'=>'lundi','mardi'=>'mardi','mercredi'=>'mercredi','jeudi'=>'jeudi','vendredi'=>'vendredi','samedi'=>'samedi','dimanche'=>'dimanche'];
        $day=$days[strtolower((string)$data['jour_semaine'])]??(string)$data['jour_semaine'];
        $start=$data['date_debut']?date('d/m/Y',strtotime((string)$data['date_debut'])):'à confirmer';
        $subject='Confirmation de votre inscription — '.$data['atelier_libelle'];
        $body="Bonjour,\n\nL'inscription de ".$data['membre_nom']." à l'atelier « ".$data['atelier_libelle']." » est confirmée.\n\nCréneau : ".ucfirst($day)." de ".substr((string)$data['heure_debut'],0,5)." à ".substr((string)$data['heure_fin'],0,5)."\nDate de début : ".$start."\n\nCarrefour des Arts";
        $headers="Content-Type: text/plain; charset=UTF-8\r\n";
        $ok=false;$error=null;
        try{$ok=@mail($email,$subject,$body,$headers);if(!$ok)$error='Le serveur de messagerie a refusé l’envoi.';}catch(\Throwable $e){$error=$e->getMessage();}
        try{EnrollmentRequest::logMail((int)$data['request_id'],$email,$ok?'envoye':'echec',$error,$userId);}catch(\Throwable $ignored){}
        return $ok?'Courriel de confirmation envoyé.':'Inscription conservée ; échec du courriel journalisé.';
    }
}
