<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\EventController;
use App\Http\Controllers\EventImageController;
use App\Http\Controllers\PreviewController;
use App\Models\Event;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Aquí definimos todas las rutas web de la aplicación.
| Incluye: home, dashboard (admin o invitado), eventos, imágenes y preview.
|
*/

// ======================================================================
// 🌍 Página principal (pública)
// ======================================================================
Route::get('/', function () {
    $featuredEvents = Event::with('images')->latest()->take(3)->get();
    $recentEvents   = Event::with('images')->latest()->take(12)->get();
    return view('welcome', compact('featuredEvents', 'recentEvents'));
})->name('home');


// ======================================================================
// 🔐 Sección privada - requiere login
// ======================================================================
Route::middleware('auth')->group(function () {

    // DASHBOARD (diferencia admin / invitado)
    Route::get('/dashboard', [DashboardController::class, 'index'])
        ->name('dashboard');

    // CRUD de eventos (solo dueños o admin)
    Route::resource('events', EventController::class);

    // Subir imágenes (dueño o invitados con código)
    Route::post('events/{event}/images', [EventImageController::class, 'store'])
        ->name('events.images.store');

    // Eliminar imágenes (solo dueño o admin)
    Route::delete('events/{event}/images/{image}', [EventImageController::class, 'destroy'])
        ->name('events.images.destroy');

    // Reordenar imágenes (solo dueño o admin)
    Route::post('events/{event}/images/reorder', [EventImageController::class, 'reorder'])
        ->name('events.images.reorder');
});


// ======================================================================
// 🌐 Rutas públicas - vistas protegidas por código (no requieren login)
// ======================================================================

// Formulario para ingresar el código del evento
Route::get('/p/{slug}', [PreviewController::class, 'form'])
    ->name('preview.form');

// Verificación del código ingresado
Route::post('/p/{slug}', [PreviewController::class, 'verify'])
    ->name('preview.verify');

// Galería protegida (solo si el código fue validado)
Route::get('/p/{slug}/show', [PreviewController::class, 'show'])
    ->name('preview.show');


// ======================================================================
// 🚪 Rutas de autenticación (login, registro, logout)
// ======================================================================

// Si usas Laravel Breeze o Fortify:
require __DIR__.'/auth.php';

// Si no tienes Breeze y usas laravel/ui, puedes descomentar esto:
// use Illuminate\Support\Facades\Auth;
// Auth::routes();


// ======================================================================
// 🧭 Ruta /home de compatibilidad (redirige al dashboard)
// ======================================================================
Route::get('/home', function () {
    return redirect()->route('dashboard');
});
