<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Log::info("Configurando bodega por defecto en detalles de compra existentes...");
        
        // Buscar o crear la bodega Principal
        $bodegaPrincipal = DB::table('bodegas')
            ->where('nombre', 'Principal')
            ->first();
            
        if (!$bodegaPrincipal) {
            $bodegaPrincipalId = DB::table('bodegas')->insertGetId([
                'nombre' => 'Principal',
                'created_at' => now(),
                'updated_at' => now(),
            ]);
            Log::info("Bodega Principal creada con ID: {$bodegaPrincipalId}");
        } else {
            $bodegaPrincipalId = $bodegaPrincipal->id;
            Log::info("Bodega Principal encontrada con ID: {$bodegaPrincipalId}");
        }
        
        // Actualizar detalles de compra sin bodega asignada
        $detallesSinBodega = DB::table('detalle_compras')
            ->whereNull('bodega_id')
            ->update(['bodega_id' => $bodegaPrincipalId]);
            
        Log::info("Actualizados {$detallesSinBodega} detalles de compra con bodega Principal");
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        // Opcional: remover las asignaciones de bodega
        DB::table('detalle_compras')
            ->where('bodega_id', function ($query) {
                $query->select('id')
                      ->from('bodegas')
                      ->where('nombre', 'Principal');
            })
            ->update(['bodega_id' => null]);
            
        Log::info("Eliminadas asignaciones de bodega Principal en detalles de compra");
    }
};
