<?php

declare(strict_types=1);

namespace App\Administration\Domain\Exception;

use App\Administration\Domain\Model\User\StatutCompte;
use App\Administration\Domain\Model\User\UserId;
use DomainException;

use function sprintf;

final class CompteNonActivableException extends DomainException
{
    public static function carStatutIncompatible(UserId $userId, StatutCompte $statut): self
    {
        return new self(match ($statut) {
            StatutCompte::ACTIF => 'Ce compte est déjà actif.',
            StatutCompte::SUSPENDU => 'Ce compte est suspendu. Veuillez contacter votre établissement.',
            StatutCompte::ARCHIVE => 'Ce compte est archivé. Veuillez contacter votre établissement.',
            default => sprintf('Ce compte ne peut pas être activé (statut : %s).', $statut->value),
        });
    }

    public static function carConsentementManquant(UserId $userId): self
    {
        return new self('Ce compte ne peut pas être activé : consentement parental manquant.');
    }
}
