<?php

namespace App\Observers;

use App\Models\DetalleCompra;
use Illuminate\Support\Facades\Log;

class DetalleCompraObserver
{
    /**
     * Handle the DetalleCompra "saving" event.
     */
    public function saving(DetalleCompra $detalle): void
    {
        // Guardar snapshot del producto si existe y no hay snapshot previo
        if ($detalle->producto && empty($detalle->producto_nombre_snapshot)) {
            $detalle->producto_nombre_snapshot = $detalle->producto->nombre;
            
            Log::info("Snapshot de producto guardado", [
                'detalle_id' => $detalle->id,
                'producto_id' => $detalle->producto_id,
                'producto_nombre' => $detalle->producto_nombre_snapshot
            ]);
        }
        
        // Guardar snapshot de variante si existe y no hay snapshot previo
        if ($detalle->variante && empty($detalle->variante_info_snapshot)) {
            // Validación defensiva para evitar error "name" on null
            $colorName = $detalle->variante->color ? $detalle->variante->color->name : 'Sin color';
            $sizeName = $detalle->variante->size ? $detalle->variante->size->name : 'Sin talla';
            
            $detalle->variante_info_snapshot = $colorName . ' / ' . $sizeName;
            
            Log::info("Snapshot de variante guardado", [
                'detalle_id' => $detalle->id,
                'variante_id' => $detalle->variante_id,
                'variante_info' => $detalle->variante_info_snapshot
            ]);
        }
    }
}