<?php

use App\Http\Controllers\VentaController;
use Illuminate\Support\Facades\Route;
use Picqer\Barcode\BarcodeGeneratorPNG;
use App\Models\Producto;
use App\Models\ProductVariant;
use App\Models\Setting;


Route::get('/', function () {
    return redirect('/admin');
});

Route::get('/imprimir-barcode', function (Illuminate\Http\Request $request) {
    $barcode = $request->query('barcode');

    // Validar que el código tenga 13 dígitos
    if (strlen($barcode) !== 13) {
        abort(400, 'El código de barras debe tener exactamente 13 dígitos.');
    }


    // Buscar el nombre del producto por código de barras directamente en `productos`
    $nombreProducto = Producto::where('codigo_barras', $barcode)->value('nombre');

    if (empty($nombreProducto)) {
        // Si no se encontró en productos, buscar en ProductVariant y acceder al producto relacionado
        $variant = ProductVariant::where('barcode', $barcode)->with(['producto', 'color', 'size'])->first();
        
        if ($variant && $variant->producto) {
            $nombreProducto = $variant->producto->nombre;
        }
    
        $color = ($variant && $variant->color && $variant->color->name !== 'N/A') ? $variant->color->name : null;
        $size  = ($variant && $variant->size && $variant->size->name !== 'N/A') ? $variant->size->name : null;
    
        // Concatenar solo si color y size no son nulos
        $nombreProducto = $nombreProducto
            . ($color ? ' ' . $color : '')
            . ($size  ? ' ' . $size : '');
    }
    
    $logo = Setting::first()->logo;

//    dd($logo);

    // Generar el código de barras en formato PNG
    $generator = new BarcodeGeneratorPNG();
    $barcodeImage = base64_encode($generator->getBarcode($barcode, $generator::TYPE_EAN_13));

    return view('imprimir_barcode', compact('barcode', 'barcodeImage','nombreProducto','logo'));
})->name('imprimir.barcode');



Route::get('/imprimir-recibo/{venta}', [VentaController::class, 'imprimirRecibo'])->name('imprimir-recibo');

Route::middleware(['auth'])->group(function () {
    Route::post('/filament/traslados/{traslado}/mark-received', [\App\Http\Controllers\Filament\TrasladoPrendaController::class, 'markReceived'])->name('filament.traslados.mark-received');

// Routes for Kanban actions
Route::post('/filament/ordenes/{orden}/change-state', [\App\Http\Controllers\Filament\OrdenProduccionController::class, 'changeState']);
Route::post('/filament/ordenes/{orden}/advance', [\App\Http\Controllers\Filament\OrdenProduccionController::class, 'advance']);
});
