<?php

namespace App\Observers;

use App\Models\Dispositivo;
use App\Models\Endpoint;

class DispositivoObserver
{
    /**
     * Handle the Dispositivo "created" event.
     */
    public function created(Dispositivo $dispositivo): void
    {
        //
    }

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

    /**
     * Handle the Dispositivo "deleted" event.
     */
    public function deleted(Dispositivo $dispositivo): void
    {
        if ($dispositivo->tipo !== Dispositivo::STAMPANTE || empty($dispositivo->endpoint_id)) {
            return;
        }
    
        $endpoint = Endpoint::find($dispositivo->endpoint_id);
        if (! $endpoint) {
            return;
        }
    
        $info = is_array($endpoint->info) ? $endpoint->info : [];
        $stampanti = isset($info['stampanti']) && is_array($info['stampanti']) ? $info['stampanti'] : [];
    
        // Rimuove la stampante cancellata e reindicizza l'array
        $info['stampanti'] = array_values(array_diff($stampanti, [$dispositivo->id]));
    
        $endpoint->info = $info;
        $endpoint->save();
    }

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

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