<?php

namespace App\Models;

class PrintJob extends \App\Models\AbstractModels\AbstractPrintJob
{
    /** Stati del ciclo di vita (colonna `stato`). */
    public const STATO_IN_ATTESA = 'in_attesa';

    public const STATO_IN_CODA = 'in_coda';

    public const STATO_PRESO = 'preso';

    public const STATO_COMPLETATO = 'completato';

    public const STATO_FALLITO = 'fallito';

    public const STATO_ANNULLATO = 'annullato';

    /** Tipi di stampa (colonna `tipo`, univoco con `ordine_id`). */
    public const TIPO_SCONTRINO = 'scontrino';

    public const TIPO_DUPLICATO_SCONTRINO = 'duplicato_scontrino';

    /** Comanda unica aggregata (una riga job per ordine). */
    public const TIPO_COMANDA_CUCINA = 'comanda_cucina';

    public const TIPO_PRECONTO = 'preconto';

    /**
     * Tipo per comande per cucina distinte (idempotenza: include id cucina).
     */
    public static function tipoComandaCucina(int $cucinaId): string
    {
        return 'comanda_cucina_'.$cucinaId;
    }

    public static function getStatoLabel($stato)
    {
        return match($stato) {
            self::STATO_IN_ATTESA => 'In attesa',
            self::STATO_IN_CODA => 'In coda',
            self::STATO_PRESO => 'Preso',
            self::STATO_COMPLETATO => 'Completato',
        };
    }

    public static function getTipoLabel($tipo)
    {
        if(str_starts_with($tipo, self::TIPO_COMANDA_CUCINA.'_')){
            return 'Comanda cucina';//self::TIPO_COMANDA_CUCINA;
        }else{
            return match($tipo) {
                self::TIPO_SCONTRINO => 'Scontrino',
                self::TIPO_DUPLICATO_SCONTRINO => 'Duplicato scontrino',
                self::TIPO_COMANDA_CUCINA => 'Comanda cucina',
                self::TIPO_PRECONTO => 'Preconto',
            };
        }
    }

    public function endpoint()
    {
        return $this->dispositivo()->endpoint();
    }
}
