<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Ordine extends \App\Models\AbstractModels\AbstractOrdine
{
    // Tipi di ordine
    const LOCALE = 'locale';
    const ASPORTO = 'asporto';
    const DELIVERY = 'delivery';

    // Stato dell'ordine
    const CARRELLO = 'carrello';
    const IN_ATTESA_PAGAMENTO = 'in_attesa_pagamento';
    const PAGATO = 'pagato';
    const IN_PREPARAZIONE = 'in_preparazione';
    const PRONTO = 'pronto';
    const IN_CONSEGNA = 'in_consegna';
    const CHIAMATA = 'chiamata';
    const CONSEGNATO = 'consegnato';
    const ANNULATO = 'annulato';
    const CANCELLATO = 'cancellato';
    const CHECKOUT = 'checkout';


    const TIPI = [
        self::LOCALE => [
            'label' => 'Locale',
            'icon' => 'bx bx-home',
            'value' => self::LOCALE,
            'descrizione' => 'Ordine in sede',
        ],
        self::ASPORTO => [
            'label' => 'Asporto',
            'icon' => 'bx bx-walk',
            'value' => self::ASPORTO,
            'descrizione' => 'Ordine da asporto',
        ],
        self::DELIVERY => [
            'label' => 'Delivery',
            'icon' => 'bx bx-walk',
            'value' => self::DELIVERY,
            'descrizione' => 'Ordine da consegnare',
        ],
    ];

    // Stato ordine
    const STATI = [
        self::CARRELLO => [
            'label' => 'Carrello',
            'value' => self::CARRELLO,
            'descrizione' => 'Ordine in carrello',
            'icon' => 'bx bx-cart',
        ],
        self::IN_ATTESA_PAGAMENTO => [
            'label' => 'In attesa pagamento',
            'value' => self::IN_ATTESA_PAGAMENTO,
            'descrizione' => 'Ordine in attesa pagamento',
            'icon' => 'bx bx-time-five',
        ],
        self::PAGATO => [
            'label' => 'Pagato',
            'value' => self::PAGATO,
            'descrizione' => 'Ordine pagato',
            'icon' => 'bx bx-check-circle',
        ],
        self::IN_PREPARAZIONE => [
            'label' => 'In preparazione',
            'value' => self::IN_PREPARAZIONE,
            'descrizione' => 'Ordine in preparazione',
            'icon' => 'bx bx-dish',
        ],
        self::PRONTO => [
            'label' => 'Pronto',
            'value' => self::PRONTO,
            'descrizione' => 'Ordine pronto',
            'icon' => 'bx bx-check-circle',
        ],
        self::IN_CONSEGNA => [
            'label' => 'In consegna',
            'value' => self::IN_CONSEGNA,
            'descrizione' => 'Ordine in consegna',
            'icon' => 'bx bx-package',
        ],
        self::CHIAMATA => [
            'label' => 'Chiamata',
            'value' => self::CHIAMATA,
            'descrizione' => 'Ordine chiamato',
            'icon' => 'bx bx-bell',
        ],
        self::CONSEGNATO => [
            'label' => 'Consegnato',
            'value' => self::CONSEGNATO,
            'descrizione' => 'Ordine consegnato',
            'icon' => 'bx bx-check-circle',
        ],
        self::ANNULATO => [
            'label' => 'Annulato',
            'value' => self::ANNULATO,
            'descrizione' => 'Ordine annullato',
            'icon' => 'bx bx-x-circle',
        ],
        self::CANCELLATO => [
            'label' => 'Cancellato',
            'value' => self::CANCELLATO,
            'descrizione' => 'Ordine cancellato',
            'icon' => 'bx bx-x-circle',
        ],
        self::CHECKOUT => [
            'label' => 'Checkout',
            'value' => self::CHECKOUT,
            'descrizione' => 'Ordine in checkout',
            'icon' => 'bx bx-cart',
        ],
    ];

    public static function getStati(){
        return collect(self::STATI);
    }
    public static function getTipi(){
        return collect(self::TIPI);
    }

    public function cucine(){
        return $this->righe_ordine
            ->pluck('piatto.cucina_id')
            ->filter()
            ->unique()
            ->values();
    }
}
