<?php

namespace App\Enums;

enum PreProcessErrorCode: string
{
    case FILE_NOT_FOUND = 'FILE_NOT_FOUND';
    case FILE_CORRUPTED = 'FILE_CORRUPTED';
    case FILE_TOO_LARGE = 'FILE_TOO_LARGE';
    case FILE_EMPTY = 'FILE_EMPTY';
    case INVALID_EXTENSION = 'INVALID_EXTENSION';
    case NO_WORKSHEET = 'NO_WORKSHEET';
    case COLUMN_COUNT_MISMATCH = 'COLUMN_COUNT_MISMATCH';
    case COLUMN_MISSING = 'COLUMN_MISSING';
    case COLUMN_EXTRA = 'COLUMN_EXTRA';
    case HEADER_MISMATCH = 'HEADER_MISMATCH';
    case NO_DATA_ROWS = 'NO_DATA_ROWS';

    public function label(): string
    {
        return match ($this) {
            self::FILE_NOT_FOUND => 'A fájl nem található a szerveren.',
            self::FILE_CORRUPTED => 'A fájl sérült vagy nem nyitható meg.',
            self::FILE_TOO_LARGE => 'A fájl mérete meghaladja a megengedett határt.',
            self::FILE_EMPTY => 'A fájl üres.',
            self::INVALID_EXTENSION => 'A fájl kiterjesztése nem megfelelő.',
            self::NO_WORKSHEET => 'Az Excel fájl nem tartalmaz munkalapot.',
            self::COLUMN_COUNT_MISMATCH => 'Az oszlopok száma nem egyezik az elvárt struktúrával.',
            self::COLUMN_MISSING => 'Hiányzó oszlop(ok) az elvárt struktúrából.',
            self::COLUMN_EXTRA => 'Többlet oszlop(ok) az elvárt struktúrához képest.',
            self::HEADER_MISMATCH => 'Egy vagy több oszlopfejléc nem egyezik az elvárttal.',
            self::NO_DATA_ROWS => 'A fájl nem tartalmaz feldolgozható adatsort.',
        };
    }

    public function severity(): string
    {
        return match ($this) {
            self::FILE_NOT_FOUND,
            self::FILE_CORRUPTED,
            self::FILE_EMPTY,
            self::INVALID_EXTENSION,
            self::NO_WORKSHEET,
            self::COLUMN_COUNT_MISMATCH,
            self::HEADER_MISMATCH,
            self::NO_DATA_ROWS => 'blocker',

            self::COLUMN_MISSING => 'error',
            self::COLUMN_EXTRA,
            self::FILE_TOO_LARGE => 'warning',
        };
    }
}
