<?php

declare(strict_types=1);

namespace App\Domain\Shared\Domain\Exception;

class FileProcessingException extends \RuntimeException
{
    public static function invalidFormat(string $fileName, array $allowedFormats): self
    {
        return new self(
            sprintf(
                'Le fichier "%s" doit être au format %s.',
                $fileName,
                implode(' ou ', $allowedFormats)
            )
        );
    }

    public static function uploadFailed(string $fileName, string $reason): self
    {
        return new self(
            sprintf('Une erreur est survenue lors de l\'upload du fichier "%s" : %s', $fileName, $reason)
        );
    }

    public static function fileNotFound(string $filePath): self
    {
        return new self(sprintf('Le fichier "%s" n\'a pas été trouvé.', $filePath));
    }

    public static function metadataExtractionFailed(string $fileName, string $reason): self
    {
        return new self(
            sprintf('Impossible d\'extraire les métadonnées du fichier "%s" : %s', $fileName, $reason)
        );
    }
}
