<?php

namespace App\Observers;

use App\Models\Attivita;
use App\Models\Categoriacontabile;
use App\Models\Impostazioni;
use App\Models\Saltacoda;
use App\Models\Asporto;

class AttivitaObserver
{
    /**
     * Handle the Attivita "created" event.
     */
    public function created(Attivita $attivita): void
    {
        //Aggiungi infomazioni standard per l'attività
        $attivita->info = json_encode([
            'città' => '',
            'indirizzo' => '',
            'cap' => '',
            'provincia' => '',
            'paese' => '',
            'telefono' => '',
            'email' => '',
            'sito_web' => '',
            'note' => '',
        ]);

        //crea saltacoda
        Saltacoda::create([
            'is_attivo' => false,
            'max_ordini' => 0,
            'attivita_id' => $attivita->id,
            'istruzioni' => Saltacoda::defaultIstruzioni(),
        ]);

        //crea punto vendita cassa 0
        \App\Models\Dispositivo::create([
            'nome' => 'Cassa 0',
            'url_stampante' => '',
            'ubicazione' => 'Il tuo primo punto vendita',
            'tipo' => \App\Models\Dispositivo::CASSA,
            'is_attivo' => true,
            'attivita_id' => $attivita->id,
        ]);
        // crea le categorie contabili standard
        Categoriacontabile::standard()->each(function($categoria) use ($attivita){
            $attivita->categorie_contabili()->create([
                'nome' => $categoria['nome'],
                'descrizione' => $categoria['descrizione'],
                'colore' => $categoria['colore'],
                'is_attiva' => true,
                'attivita_id' => $attivita->id,
            ]);
        });
        // crea le impostazioni standard
        Impostazioni::standard()->each(function($impostazione) use ($attivita){
            $attivita->impostazioni()->create($impostazione);
        });
        //crea le impostazioni asporto standard
        Asporto::standard()->each(function($asporto) use ($attivita){
            $attivita->impostazioni()->create($asporto);
        });
    }

    /**
     * Handle the Attivita "updated" event.
     */
    public function updated(Attivita $attivita): void
    {
        //
    }

    /**
     * Handle the Attivita "deleted" event.
     */
    public function deleted(Attivita $attivita): void
    {
        //
    }

    /**
     * Handle the Attivita "restored" event.
     */
    public function restored(Attivita $attivita): void
    {
        //
    }

    /**
     * Handle the Attivita "force deleted" event.
     */
    public function forceDeleted(Attivita $attivita): void
    {
        //
    }
}
