<?php

declare(strict_types=1);

namespace App\Administration\Domain\Exception;

use DomainException;

use function sprintf;

final class FichierImportInvalideException extends DomainException
{
    public static function fichierIllisible(string $path): self
    {
        return new self(sprintf(
            'Le fichier "%s" ne peut pas être lu.',
            $path,
        ));
    }

    public static function fichierVide(): self
    {
        return new self('Le fichier est vide ou ne contient aucune donnée.');
    }

    public static function formatInvalide(string $path, string $reason): self
    {
        return new self(sprintf(
            'Le fichier "%s" a un format invalide : %s',
            $path,
            $reason,
        ));
    }

    public static function fichierTropGros(int $sizeBytes, int $maxBytes): self
    {
        return new self(sprintf(
            'Le fichier fait %d Mo mais la limite est de %d Mo.',
            (int) ($sizeBytes / 1024 / 1024),
            (int) ($maxBytes / 1024 / 1024),
        ));
    }
}
