<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Asporto extends \App\Models\AbstractModels\AbstractAsporto
{
    const PREPARAZIONE = 'preparazione';
    const CHIAMATA = 'chiamata';
    const RITIRO = 'ritiro';
    const CONSEGNATO = 'consegnato';

    //stati dell'asporto
    public static function statiAsporto(){
        return collect([
            'preparazione' => [
                'label' => 'Preparazione',
                'descrizione' => 'Asporto in preparazione',
                'colore' => 'primary',
                'value' => self::PREPARAZIONE,
            ],
            'chiamata' => [
                'label' => 'Chiamata',
                'descrizione' => 'Asporto in chiamata',
                'colore' => 'warning',
                'value' => self::CHIAMATA,
            ],
            'ritiro' => [
                'label' => 'Ritiro',
                'descrizione' => 'Asporto in ritiro',
                'colore' => 'success',
                'value' => self::RITIRO,
            ],
            'consegnato' => [
                'label' => 'Consegnato',
                'descrizione' => 'Asporto consegnato al cliente',
                'colore' => 'secondary',
                'value' => self::CONSEGNATO,
            ],
        ]);
    }

    public static function standard(){
        return collect([
            [
                'label' => 'Ora inizio servizio asporto',
                'descrizione' => 'Ora inizio servizio asporto',
                'chiave' => 'ora_inizio_asporto',
                'valore' => '19:00',
                'tipo' => 'time',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Ora fine servizio asporto',
                'descrizione' => 'Ora fine servizio asporto',
                'chiave' => 'ora_fine_asporto',
                'valore' => '23:00',
                'tipo' => 'time',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Ora inizio prenotazione asporto',
                'descrizione' => 'Ora inizio prenotazione asporto',
                'chiave' => 'ora_inizio_prenotazione_asporto',
                'valore' => '18:00',
                'tipo' => 'time',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Ora fine prenotazione asporto',
                'descrizione' => 'Ora fine prenotazione asporto',
                'chiave' => 'ora_fine_prenotazione_asporto',
                'valore' => '19:00',
                'tipo' => 'time',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Giorni in cui è disponibile il servizio asporto',
                'descrizione' => 'Giorni in cui è disponibile il servizio asporto',
                'chiave' => 'giorni_disponibilita_asporto',
                'valore' => '1,2,3,4,5,6,7',
                'tipo' => 'array',
                'opzioni' => [1,2,3,4,5,6,7],
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Durata della slot oraria consegna asporto',   
                'descrizione' => 'Durata della slot oraria consegna asporto',
                'chiave' => 'durata_slot_oraria_consegna_asporto',
                'valore' => '15',
                'tipo' => 'integer',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Q.tà massima di ordini per slot oraria',
                'descrizione' => 'Q.tà massima di ordini per slot oraria',
                'chiave' => 'qta_massima_ordini_per_slot_oraria',
                'valore' => '10',
                'tipo' => 'integer',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Q.tà massima piatti per slot oraria',
                'descrizione' => 'Q.tà massima piatti per slot oraria',
                'chiave' => 'qta_massima_piatti_per_slot_oraria',
                'valore' => '20',
                'tipo' => 'integer',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Tolleranza nella q.tà di piatti per slot oraria',
                'descrizione' => 'Se osono disponibili ordini e piatti per il slot orario, questo è il numero di piatti in più che può essere consegnato per l\'ultimo ordine della slot aggiunto.',
                'chiave' => 'tolleranza_qta_piatti_per_slot_oraria',
                'valore' => '5',
                'tipo' => 'integer',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ],
            [
                'label' => 'Costo fisso per ogni ordine',
                'descrizione' => 'Costo fisso per ogni ordine',
                'chiave' => 'costo_fisso_per_ordine',
                'valore' => '10',
                'tipo' => 'float',
                'opzioni' => null,
                'gruppo' => 'asporto',
            ]
        ]);
    }

    public static function getGiorniDisponibilitaAsporto()
    {
        return  collect([
            1 => 'Lunedi',
            2 => 'Martedi',
            3 => 'Mercoledi',
            4 => 'Giovedi',
            5 => 'Venerdi',
            6 => 'Sabato',
            7 => 'Domenica',
        ]);
    }
}
