<?php

/*
 * -------------------------------------------------------------------------
 * SISTEMA: Nouderg Technology - Adobe Presentaciones
 * ARCHIVO: web.php
 * AUTOR: Leonardo Argueta
 * FECHA: 2026-05-25
 * DESCRIPCION: Rutas del modulo Adobe Presentaciones incluyendo biblioteca.
 * -------------------------------------------------------------------------
 */

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\NouPresentacionController;
use App\Http\Controllers\NouAdminPresentacionController;
use App\Http\Controllers\NouBibliotecaController;

Route::get('/', fn() => redirect()->route('presentaciones.admin.login'));

// Accesos directos por pantalla — cada URL es exclusiva de un televisor
Route::get('/pantalla/{numero}', function (int $nou_var_numero)
{
    if ($nou_var_numero < 1 || $nou_var_numero > 6)
    {
        abort(404);
    }

    $nou_var_pantalla = \App\Models\NouPantalla::where('numero', $nou_var_numero)
        ->where('activa', true)
        ->firstOrFail();

    session([
        'nou_pantalla_id'     => $nou_var_pantalla->id_pantalla,
        'nou_pantalla_numero' => $nou_var_pantalla->numero,
    ]);

    return redirect()->route('presentaciones.editar');
})->name('pantalla.directa')->where('numero', '[1-6]');

Route::prefix('presentaciones')->name('presentaciones.')->group(function ()
{
    Route::get('/', fn() => redirect()->route('presentaciones.admin.login'))->name('seleccion');
    Route::post('/elegir',  [NouPresentacionController::class, 'Nou_fun_elegir_pantalla'])->name('elegir');

    Route::get('/editar',   [NouPresentacionController::class, 'Nou_fun_editar'])
         ->middleware('nou.pantalla:pantalla')->name('editar');

    Route::post('/presentar', [NouPresentacionController::class, 'Nou_fun_guardar_y_presentar'])
         ->name('presentar');

    // Guarda datos via AJAX sin redirect (para el flujo con fullscreen)
    Route::post('/presentar-ajax', [NouPresentacionController::class, 'Nou_fun_guardar_ajax'])
         ->name('presentar.ajax');

    Route::get('/pantalla', [NouPresentacionController::class, 'Nou_fun_pantalla'])
         ->middleware('nou.pantalla:pantalla')->name('pantalla');

    Route::post('/sesion',  [NouPresentacionController::class, 'Nou_fun_actualizar_sesion'])
         ->name('sesion.actualizar');

    Route::get('/estado/{id}', [NouPresentacionController::class, 'Nou_fun_estado_pantalla'])
         ->name('estado');

    // Busca una reserva en logistica por numero de reservacion
    Route::get('/buscar-reserva', [NouPresentacionController::class, 'Nou_fun_buscar_reserva'])
         ->name('buscar.reserva');

    Route::get('/video-aleatorio/{id}', [NouPresentacionController::class, 'Nou_fun_video_aleatorio'])
         ->name('video.aleatorio');

    // Biblioteca de videos
    Route::prefix('biblioteca')->name('biblioteca.')->middleware('nou.pantalla:admin')->group(function ()
    {
        Route::get('/',              [NouBibliotecaController::class, 'Nou_fun_index'])->name('index');
        Route::post('/buscar',       [NouBibliotecaController::class, 'Nou_fun_buscar'])->name('buscar');
        Route::post('/descargar',    [NouBibliotecaController::class, 'Nou_fun_descargar'])->name('descargar');
        Route::delete('/{id}',       [NouBibliotecaController::class, 'Nou_fun_eliminar'])->name('eliminar');
        Route::get('/lista',         [NouBibliotecaController::class, 'Nou_fun_lista'])->name('lista');
        Route::post('/subir',        [NouBibliotecaController::class, 'Nou_fun_subir_manual'])->name('subir');
    });

    // Panel admin
    Route::prefix('admin')->name('admin.')->group(function ()
    {
        Route::get('/login',  [NouAdminPresentacionController::class, 'Nou_fun_login_form'])->name('login');
        Route::post('/login', [NouAdminPresentacionController::class, 'Nou_fun_login'])->name('login.post');

        Route::middleware('nou.pantalla:admin')->group(function ()
        {
            Route::get('/',               [NouAdminPresentacionController::class, 'Nou_fun_index'])->name('index');
            Route::post('/logout',        [NouAdminPresentacionController::class, 'Nou_fun_logout'])->name('logout');
            Route::post('/prompt',        [NouAdminPresentacionController::class, 'Nou_fun_guardar_prompt'])->name('prompt.guardar');
            Route::post('/generar',       [NouAdminPresentacionController::class, 'Nou_fun_generar_videos'])->name('generar');
            Route::get('/estado/{fecha}', [NouAdminPresentacionController::class, 'Nou_fun_estado_videos'])->name('videos.estado');
            Route::post('/agente',        [NouAdminPresentacionController::class, 'Nou_fun_actualizar_agente'])->name('agente.actualizar');
        });
    });
});