<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\RolePermissionController;
use App\Http\Controllers\UsersController; 
use App\Http\Controllers\FormController;
use App\Http\Controllers\DashboardController;
use App\Http\Middleware\PermissionIdMiddleware;

use App\Http\Controllers\SummaryController;

use App\Http\Controllers\FallbackController;

Route::fallback([FallbackController::class, 'index']);
Route::get('/test-mail', function () {
    try {
        \Mail::raw('Test OK', function ($message) {
            $message->to('ton.email@exemple.com')->subject('TEST SMTP');
        });
        return response('Mail envoyé !', 200);
    } catch (\Throwable $e) {
        return response()->json([
            'message' => $e->getMessage(),
            'class' => get_class($e),
            'trace' => collect(explode("\n", $e->getTraceAsString()))->slice(0,8)->values(),
        ], 500);
    }
});


// Cheffes
Route::get('/sommaires/cheffes/export', [SummaryController::class,'exportCheffes'])->name('sommaires.cheffes.export')->middleware('auth');
Route::get('/sommaires/cheffes/{id}/export', [SummaryController::class,'exportCheffeSingle'])->name('sommaires.cheffes.export.single')->middleware('auth');

// Bureaux
Route::get('/bureauxcommissaires/export', [SummaryController::class,'exportBureaux'])->name('bureauxcommissaires.export')->middleware('auth');
Route::get('/bureauxcommissaires/{id}/export', [SummaryController::class,'exportBureauSingle'])->name('bureauxcommissaires.export.single')->middleware('auth');

// Commissaires
Route::get('/commissaires/export', [SummaryController::class,'exportCommissaires'])->name('commissaires.export')->middleware('auth');
Route::get('/commissaires/{id}/export', [SummaryController::class,'exportCommissaireSingle'])->name('commissaires.export.single')->middleware('auth');

// Equipes
Route::get('/equipes/export', [SummaryController::class,'exportEquipes'])->name('equipes.export')->middleware('auth');
Route::get('/equipes/{id}/export', [SummaryController::class,'exportEquipeSingle'])->name('equipes.export.single')->middleware('auth');

Route::get('/sommaires/cheffes/json', [SummaryController::class, 'cheffesJson'])
    ->name('cheffes.json')
    ->middleware('auth'); 
    
Route::get('/summary/cheffes', [SummaryController::class, 'cheffesJson'])
    ->name('summary.cheffes');

Route::get('/debug-middlewares', function() {
    return app(\App\Http\Kernel::class)->getRouteMiddleware();
});

Route::get('/summary/commissaires', [SummaryController::class, 'commissairesJson'])
    ->name('summary.commissaires');
Route::get('/summary/bureaux_commissaires', [SummaryController::class, 'bureauxcommissairesJson'])
    ->name('summary.bureaux_commissaires');
Route::get('/summary/equipes', [SummaryController::class, 'equipesJson'])
    ->name('summary.equipes');
Route::get('/', function(){ return redirect()->route('profiles.index'); });




// Management UI
Route::get('/sommaires/cheffes', [SummaryController::class, 'cheffesIndex'])
    ->name('sommaires.cheffes.index')
    ->middleware('auth');

// API (AJAX) endpoints for CRUD
Route::post('/sommaires/cheffes', [SummaryController::class, 'cheffesStore'])
    ->name('sommaires.cheffes.store')
    ->middleware('auth');

Route::get('/sommaires/cheffes/{id}', [SummaryController::class, 'cheffesShow'])
    ->name('sommaires.cheffes.show')
    ->middleware('auth');

Route::put('/sommaires/cheffes/{id}', [SummaryController::class, 'cheffesUpdate'])
    ->name('sommaires.cheffes.update')
    ->middleware('auth');

Route::delete('/sommaires/destroy/{id}', [SummaryController::class, 'cheffesDestroy'])
    ->name('sommaires.cheffes.destroy')
    ->middleware('auth');


    Route::get('/commissaires', [SummaryController::class, 'commissairesIndex'])->name('sommaires.commissaires.index');
    Route::get('/commissaires/json', [SummaryController::class, 'commissairesJson'])->name('commissaires.json');

    Route::post('/commissaires', [SummaryController::class, 'commissairesStore'])->name('commissaires.store');
    Route::get('/commissaires/{id}', [SummaryController::class, 'commissairesShow'])->name('commissaires.show');
    Route::put('/commissaires/{id}', [SummaryController::class, 'commissairesUpdate'])->name('commissaires.update');
    Route::delete('/commissaires/{id}', [SummaryController::class, 'commissairesDestroy'])->name('commissaires.destroy');



Route::get('/bureauxcommissaires', [SummaryController::class, 'bureauxIndex'])
    ->name('bureauxcommissaires.index')
    ->middleware('auth');

Route::get('/bureauxcommissaires/json', [SummaryController::class, 'bureauxcommissairesJson'])
    ->name('bureauxcommissaires.json')
    ->middleware('auth');

Route::post('/bureauxcommissaires', [SummaryController::class, 'bureauxStore'])
    ->name('bureauxcommissaires.store')
    ->middleware('auth');

Route::get('/bureauxcommissaires/{id}', [SummaryController::class, 'bureauxShow'])
    ->name('bureauxcommissaires.show')
    ->middleware('auth');

Route::put('/bureauxcommissaires/{id}', [SummaryController::class, 'bureauxUpdate'])
    ->name('bureauxcommissaires.update')
    ->middleware('auth');

Route::delete('/bureauxcommissaires/{id}', [SummaryController::class, 'bureauxDestroy'])
    ->name('bureauxcommissaires.destroy')
    ->middleware('auth');




    Route::get('/equipes', [SummaryController::class, 'equipesIndex'])
    ->name('equipes.index')->middleware('auth');

Route::get('/equipes/json', [SummaryController::class, 'equipesJson'])
    ->name('equipes.json')->middleware('auth');

Route::get('/structures/json', [SummaryController::class, 'structuresJson'])
    ->name('structures.json')->middleware('auth');

Route::post('/equipes', [SummaryController::class, 'equipesStore'])
    ->name('equipes.store')->middleware('auth');

Route::get('/equipes/{id}', [SummaryController::class, 'equipesShow'])
    ->name('equipes.show')->middleware('auth');

Route::put('/equipes/{id}', [SummaryController::class, 'equipesUpdate'])
    ->name('equipes.update')->middleware('auth');

Route::delete('/equipes/{id}', [SummaryController::class, 'equipesDestroy'])
    ->name('equipes.destroy')->middleware('auth');

// Auth routes
Route::get('login', [AuthController::class,'showLogin'])->name('login');
Route::post('login', [AuthController::class,'login'])->name('login.post');
Route::post('logout', [AuthController::class,'logout'])->name('logout');
Route::post('permissions', [RolePermissionController::class, 'storePermission'])->name('permissions.store')->middleware(PermissionIdMiddleware::class . ':8');


// login for superadmin
// Admin-specific login (super admin)
Route::get('admin/login', [AuthController::class, 'showAdminLogin'])->name('admin.login');
Route::post('admin/login', [AuthController::class, 'loginAdmin'])->name('admin.login.post');

// Show "forgot password" form
Route::get('/forgot-password', [AuthController::class, 'showForgot'])
    ->name('password.request');
Route::get('/admin-forgot-password', [AuthController::class, 'showAdminForgot'])
    ->name('admin.password.request');
// Handle sending the reset link
Route::post('/forgot-password', [AuthController::class, 'sendResetLink'])
    ->name('password.email'); 
Route::get('roles/export', [RolePermissionController::class, 'export'])
     ->name('roles.export')
     ->middleware(PermissionIdMiddleware::class . ':8');

// Roles management routes
Route::get('roles', [RolePermissionController::class, 'index'])->name('roles.index')->middleware(PermissionIdMiddleware::class . ':8');
Route::post('roles', [RolePermissionController::class, 'store'])->name('roles.store')->middleware(PermissionIdMiddleware::class . ':8');
Route::get('roles/{role}', [RolePermissionController::class, 'show'])->name('show')->middleware(PermissionIdMiddleware::class . ':8');
   // routes/web.php
Route::put('roles/{role}', [RolePermissionController::class, 'update'])->name('roles.update')->middleware(PermissionIdMiddleware::class . ':8');
Route::delete('roles/{role}', [RolePermissionController::class, 'destroy'])->name('roles.destroy')->middleware(PermissionIdMiddleware::class . ':8');

// routes/web.php
Route::post('permissions', [RolePermissionController::class, 'storePermission'])->name('permissions.store')->middleware(PermissionIdMiddleware::class . ':8');
Route::delete('permissions/{permission}', [RolePermissionController::class, 'destroyPermission'])->name('permissions.destroy')->middleware(PermissionIdMiddleware::class . ':8');

 // users (CRUD)
Route::get('Users', [UsersController::class, 'index'])->name('users.index')->middleware(PermissionIdMiddleware::class . ':9');
Route::get('Users/create', [UsersController::class, 'create'])->name('users.create')->middleware(PermissionIdMiddleware::class . ':9');
Route::post('Users', [UsersController::class, 'store'])->name('users.store')->middleware(PermissionIdMiddleware::class . ':9');
Route::delete('users/{profile}', [UsersController::class, 'destroy'])->name('users.destroy')->middleware(PermissionIdMiddleware::class . ':9');
Route::get('Users/{profile}/edit', [UsersController::class, 'edit'])->name('users.edit')->middleware(PermissionIdMiddleware::class . ':9');
Route::put('Users/{profile}', [UsersController::class, 'update'])->name('users.update')->middleware(PermissionIdMiddleware::class . ':9');
Route::get('Users/export', [UsersController::class, 'export'])
     ->name('users.export')
     ->middleware(PermissionIdMiddleware::class . ':9');

Route::get('/reset-password/{token}', [AuthController::class, 'create'])
    ->name('password.reset');
Route::post('/reset-password', [AuthController::class, 'store'])
    ->name('password.update');

Route::get('profiles/{profile}', [ProfileController::class, 'show'])->name('profiles.show');
Route::get('profiles/{profile}/edit', [ProfileController::class, 'edit'])->name('profiles.edit');
Route::put('profiles/{profile}', [ProfileController::class, 'update'])->name('profiles.update');

Route::get('form/export', [FormController::class, 'exportSignalements'])
    ->name('form.export');
Route::get('signalement/{id}/export', [FormController::class, 'exportSingle'])->name('signalement.export.single');
Route::get('signalement/export', [FormController::class, 'exportFiltered'])->name('signalement.export.filtered');

Route::get('Add', [FormController::class, 'add'])->name('form.add')->middleware(PermissionIdMiddleware::class . ':4');
Route::get('delegations/by-gouver/{gouver_id}', [FormController::class, 'delegationsByGouver'])
     ->name('delegations.byGouver');
// Route::get('signalements/create', [SignalementController::class, 'create'])->name('signalement.create');
Route::post('signalements', [FormController::class, 'store'])->name('signalement.store')->middleware(PermissionIdMiddleware::class . ':1');
// routes/web.php
Route::get('signalements/{signalement}/edit', [FormController::class, 'edit'])->name('signalement.edit')->middleware(PermissionIdMiddleware::class . ':1');
Route::put('signalements/{signalement}', [FormController::class, 'update'])->name('signalement.update')->middleware(PermissionIdMiddleware::class . ':3');;
Route::get('list', [FormController::class, 'index'])->name('form.index')->middleware(PermissionIdMiddleware::class . ':5');
Route::get('/form/filter', [FormController::class, 'index'])->name('form.filter'); // same controller method handles AJAX
// route pour délégations (déjà tu as delegationsByGouver)
Route::get('/delegations-by-gouver/{gouver_id}', [FormController::class, 'delegationsByGouver'])->name('delegations.by.gouver');
Route::get('signalements/{signalement}/show', [FormController::class, 'show'])->name('signalement.show')->middleware(PermissionIdMiddleware::class . ':4');
Route::delete('signalement/{id}', [FormController::class, 'destroy'])->name('signalement.destroy')->middleware(PermissionIdMiddleware::class . ':2');
Route::get('brouillons', [FormController::class, 'brouillon'])->name('form.brouillon')->middleware(PermissionIdMiddleware::class . ':6');

Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard.index')->middleware(PermissionIdMiddleware::class . ':10');;
Route::get('/dashboard/data', [DashboardController::class, 'data'])->name('dashboard.data');
Route::get('/', [AuthController::class,'showLogin'])->name('login');
// Route::get('/welcome', function () {
//     return view('welcome');
// })->name('welcome');

Route::get('/admin', fn()=> view('admin'))
     ->middleware('role:admin');

Route::get('/post/edit', fn()=> 'edit')
     ->middleware('permission:edit articles');

Route::fallback([FallbackController::class, 'index']);