<?php

namespace App\Observers;

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

class ProductVariantObserver
{
    /**
     * Handle the ProductVariant "created" event.
     */
    public function created(ProductVariant $variant): void
    {
        $producto = $variant->producto;
        
        Log::info("Variante creada para producto", [
            'variante_id' => $variant->id,
            'producto_id' => $producto->id,
            'producto_nombre' => $producto->nombre,
            'stock_producto_anterior' => $producto->stock
        ]);
        
        // Si este producto ahora tiene variantes y tenía stock directo, limpiar el stock principal
        if ($producto->stock > 0) {
            // Obtener el stock anterior para potencial transferencia
            $stockAnterior = $producto->stock;
            
            // Limpiar el stock del producto principal
            $producto->update(['stock' => 0]);
            
            Log::info("Stock del producto principal limpiado debido a creación de variantes", [
                'producto_id' => $producto->id,
                'stock_anterior' => $stockAnterior,
                'stock_nuevo' => 0
            ]);
            
            // Opcionalmente, podrías transferir el stock anterior a la nueva variante
            // o a una bodega específica, pero por ahora solo lo eliminamos
        }
    }

    /**
     * Handle the ProductVariant "deleting" event.
     */
    public function deleting(ProductVariant $variant): void
    {
        $producto = $variant->producto;
        
        // Verificar si esta es la última variante
        $variantesRestantes = $producto->variants()->where('id', '!=', $variant->id)->count();
        
        Log::info("Eliminando variante", [
            'variante_id' => $variant->id,
            'producto_id' => $producto->id,
            'variantes_restantes' => $variantesRestantes
        ]);
        
        // Si esta era la última variante, el producto vuelve a poder tener stock directo
        if ($variantesRestantes === 0) {
            Log::info("Última variante eliminada - producto puede volver a tener stock directo", [
                'producto_id' => $producto->id
            ]);
        }
    }
}