<br />
<b>Warning</b>:  Undefined variable $auth in <b>/home/pevo0181/public_html/pia-soft.com/cleania/routes/index.php</b> on line <b>542</b><br />
<br />
<b>Warning</b>:  Trying to access array offset on value of type null in <b>/home/pevo0181/public_html/pia-soft.com/cleania/routes/index.php</b> on line <b>542</b><br />
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\backend\PvController;
use App\Http\Controllers\backend\AuthController;
use App\Http\Controllers\backend\CardController;
use App\Http\Controllers\backend\NoteController;
use App\Http\Controllers\backend\RoleController;
use App\Http\Controllers\backend\AdminController;
use App\Http\Controllers\ConfigurationController;
use App\Http\Controllers\backend\ProfilController;
use App\Http\Controllers\backend\ReportController;
use App\Http\Controllers\backend\MatiereController;
use App\Http\Controllers\backend\PensionController;
use App\Http\Controllers\backend\StudentController;
use App\Http\Controllers\backend\TeacherController;
use App\Http\Controllers\MaternelleSetupController;
use App\Http\Controllers\backend\PresenceController;
use App\Http\Controllers\backend\DashboardController;
use App\Http\Controllers\backend\CompetenceController;
use App\Http\Controllers\backend\ClassSchoolController;
use App\Http\Controllers\backend\SessionYearController;
use App\Http\Controllers\backend\SousMatiereController;
use App\Http\Controllers\backend\SubscriptionController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/


/** ACTIONS AUTHENTIFICATION */
Route::get('/login',                     [AuthController::class, 'getLogin'])->name('get.backend.login');
Route::post('/check/post-login',    [AuthController::class, 'postLogin'])->name('post.backend.login');


Route::middleware(["auth"])->group(function() {

    Route::get('/logout',       [AuthController::class, 'logout'])->name('get.backend.logout');
    Route::get('/dashboard',    [DashboardController::class, 'getDashboard'])->name('get.backend.dashboard');


    /**ACTIONS ADMIN */
    Route::get('/admin/list',                       [AdminController::class, 'getListUser'])->name('get.backend.list.users');
    Route::get('/admin/add',                        [AdminController::class, 'getAddUser'])->name('get.backend.add.users');
    Route::get('/admin/{id}/edit',                  [AdminController::class, 'getEditUser'])->name('get.backend.edit.users');
    Route::post('/add-info/admin',                  [AdminController::class, 'postAddUser'])->name('post.backend.add.users');
    Route::post('/edit-info/admin/{id}',            [AdminController::class, 'postEditUser'])->name('post.backend.edit.users');
    Route::post('/admin/{id}/change-status',        [AdminController::class, 'changeStatus'])->name('post.backend.change.status.users');


    /**PROFIL ADMIN */
    Route::get('/profile',                       [ProfilController::class, 'getProfil'])->name('get.backend.profil.users');
    Route::post('profile/edit-profile/{id}',         [ProfilController::class, 'postEditProfil'])->name('post.backend.edit.profile');
    Route::post('/edit-password/{id}',              [ProfilController::class, 'postEditPassword'])->name('post.backend.edit.password');
    Route::get('/edit/urban',                   [ProfilController::class, 'getEditUrban'])->name('get.backend.edit.urban.me');
    Route::post('/edit-post/urban',             [ProfilController::class, 'postEditUrban'])->name('get.backend.post.urban.me');
    
    /** ACTIONS ROLE */
    Route::get('/list/role',            [RoleController::class, 'getListRole'])->name('get.backend.list.role');
    Route::post('/add/role',            [RoleController::class, 'postAddRole'])->name('post.backend.add.role');
    Route::post('/edit/role/{id}',      [RoleController::class, 'postEditRole'])->name('post.backend.edit.role');


    /** ACTIONS SESSION */
    Route::get('/session-year/list',          [SessionYearController::class, 'getList'])->name('get.backend.list.session.year');
    Route::post('/session-year/add',          [SessionYearController::class, 'postAdd'])->name('post.backend.add.session.year');
    Route::post('/session-year/{id}/edit',    [SessionYearController::class, 'postEdit'])->name('post.backend.edit.session.year');

    /** ACTIONS CLASS SCHOOL */
    Route::get('/class-school/list',                [ClassSchoolController::class, 'getList'])->name('get.backend.list.class.school');
    Route::post('/class-school/add',                [ClassSchoolController::class, 'postAdd'])->name('post.backend.add.class.school');
    Route::post('/class-school/{id}/edit',          [ClassSchoolController::class, 'postEdit'])->name('post.backend.edit.class.school');
    Route::get('/class-school/{class}/students',    [ClassSchoolController::class, 'getStudentByClass'])->name('get.backend.list.student.school');


    /*** ACTIONS STUDENTS */
    Route::get('/students/list/{status?}',                         [StudentController::class, 'getList'])->name('get.backend.list.student');
    Route::get('/students/add',                                    [StudentController::class, 'getAdd'])->name('get.backend.add.student');
    Route::post('/students/add',                                   [StudentController::class, 'postAdd'])->name('post.backend.add.student');
    Route::get('/students-folder/list/{status?}',                  [StudentController::class, 'getListFolder'])->name('get.backend.list.student.folder');
    Route::get('/students/{id}/details',                           [StudentController::class, 'getDetails'])->name('get.backend.details.student');
    Route::post('/customers/{id}/edit',                            [StudentController::class, 'postEdit'])->name('post.backend.edit.student');
    Route::get('/get/all/students',                                [StudentController::class, 'getAllUsager'])->name('get.backend.all.student');
    Route::get('/students/search',                                 [StudentController::class, 'search'])->name('get.backend.search.student');
    Route::post('/students-all/active',                            [StudentController::class, 'activeAllStudent'])->name('post.backend.active.all.student');
    Route::post('/students/{code}/change-status',                  [StudentController::class, 'changeStatus'])->name('post.backend.change.status');
    Route::get('/students/export-excel/{status?}',                 [StudentController::class, 'exportAllExcel'])->name('get.backend.export.all.excel.student');
    Route::get('/students-all/api',                                [StudentController::class, 'getApiAllStudent'])->name('get.backend.api.all.customers');
    Route::post('/students/send-message-global',                                [StudentController::class, 'postSendMessageGlobal'])->name('post.backend.send.message.global.student');

    

    /*** ACTIONS TEACHERS */
    Route::get('/teachers/list/{status?}',                          [TeacherController::class, 'getList'])->name('get.backend.list.teacher');
    Route::get('/teachers/{id}/edit',                               [TeacherController::class, 'getEditTeacher'])->name('get.backend.edit.teacher');
    Route::post('/edit-info/{id}/teachers',                         [TeacherController::class, 'postEditTeacher'])->name('post.backend.edit.teacher');

    /*** ACTIONS INSCRIPTIONS */
    Route::get('/subscriptions/list',                                      [SubscriptionController::class, 'getList'])->name('get.backend.list.subscription');
    Route::get('/subscriptions/add',                                       [SubscriptionController::class, 'getAdd'])->name('get.backend.add.subscription');
    Route::post('/subscriptions/add',                                      [SubscriptionController::class, 'postAdd'])->name('post.backend.add.subscription');
    Route::get('/subscriptions/search',                                    [SubscriptionController::class, 'search'])->name('get.backend.search.subscription');
    Route::get('/subscriptions/all-api',                                   [SubscriptionController::class, 'getApiAllSubscriptions'])->name('get.backend.api.all.subscription');
    Route::post('/subscriptions/{id}/delete',                   [SubscriptionController::class, 'deleteSubscription'])->name('get.backend.delete.subscription');
    Route::post('/subscription/add-mass',                   [SubscriptionController::class, 'postAddMass'])->name('post.backend.add.mass.subscription');

    /**** GESTION DES CARDS USAGERS*/
    Route::get('/card/list',                                            [CardController::class, 'getList'])->name('get.backend.list.card');
    Route::get('/card/search',                                          [CardController::class, 'search'])->name('get.backend.search.card');
    Route::post('/generate-cards',      [CardController::class, 'postGenerateCards'])->name('post.backend.generate.cards');

    /***ACTIONS CAISSE  */
    Route::get('/pensions/list',                                                [PensionController::class, 'getList'])->name('get.backend.list.pension');
    Route::get('/pensions/add',                                                 [PensionController::class, 'getAdd'])->name('get.backend.add.pension');
    Route::post('/pensions/add',                                                [PensionController::class, 'postAdd'])->name('post.backend.add.pension');
    Route::get('/pensions/search',                                              [PensionController::class, 'search'])->name('get.backend.search.pension');
    Route::post('/pensions/{id}/delete',                                              [PensionController::class, 'deletePension'])->name('get.backend.delete.pension');
    Route::get('/pensions/check',                                               [PensionController::class, 'checkPension'])->name('get.backend.check.pension');
    Route::get('/pensions-students/export-pdf/{status?}}',                       [PensionController::class, 'exportPensionStudent'])->name('get.backend.export.pension.student.pdf');
    Route::get('/pensions/all-api',                                             [PensionController::class, 'getAllPensions'])->name('get.backend.api.all.pension');
    Route::post('/pensions/send-message',                                        [PensionController::class, 'postSendMessagePension'])->name('post.backend.send.message.pension');
    Route::get('/pensions/check-all',                                               [PensionController::class, 'checkPensionToAll'])->name('get.backend.check.all.pension');

    /***ACTIONS PRESENCES  */
    Route::get('/students/presence-list',                                                   [PresenceController::class, 'getListStudent'])->name('get.backend.list.presence.student');
    Route::get('/teachers/presence-list',                                                   [PresenceController::class, 'getListTeacher'])->name('get.backend.list.presence.teacher');
    Route::get('/students/presence-search',                                                 [PresenceController::class, 'getSearchStudent'])->name('get.backend.search.presence.student');
    Route::get('/teachers/presence-search',                                                 [PresenceController::class, 'getSearchTeacher'])->name('get.backend.search.presence.teacher');

    /****NOTES */
    Route::get('/notes/list',                                                   [NoteController::class, 'getListNote'])->name('get.backend.list.note');
    Route::get('/notes/add',                                                   [NoteController::class, 'getAddNote'])->name('get.backend.add.note');
    Route::post('/notes/add',                                                   [NoteController::class, 'postAddNote'])->name('post.backend.add.note_v2');
    Route::get('/notes/{id}delete', [NoteController::class, 'deleteNote'])->name('get.backend.delete.note');

    /****PV */
    Route::get('/pv/add',                                                   [PvController::class, 'getAddPv'])->name('get.backend.add.pv');
    Route::post('/pv/add',                                                   [PvController::class, 'postAddPv'])->name('post.backend.add.pv');
    Route::post('/save-notes', [PvController::class, 'saveNotes'])->name('save.backend.notes');
    Route::get('/generate-pv-pdf', [PvController::class, 'generatePVPDF'])->name('generate.pv.pdf');

    Route::prefix('save')->group(function () {
        Route::get('/setup-competences', [MaternelleSetupController::class, 'setupBilingueCompetences']);
        Route::get('/check-setup/{classId}', [MaternelleSetupController::class, 'checkClassSetup']);
    });

    // Competences
    Route::get('/competences/list', [CompetenceController::class, 'getListCompetence'])->name('get.backend.list.competence');
    Route::post('/competences/add', [CompetenceController::class, 'postAddCompetence'])->name('post.backend.add.competence');
    Route::post('/competences/edit/{id}', [CompetenceController::class, 'postEditCompetence'])->name('post.backend.edit.competence');
    Route::get('/competences/delete/{id}', [CompetenceController::class, 'DeleteCompetence'])->name('get.backend.delete.competence');
    Route::get('/competences/by-class', [CompetenceController::class, 'getCompetencesByClass'])->name('get.backend.competences.by.class');
    
    // Matieres
    Route::get('/matieres/list', [MatiereController::class, 'getListMatiere'])->name('get.backend.list.matiere');
    Route::post('/matieres/add', [MatiereController::class, 'postAddMatiere'])->name('post.backend.add.matiere');
    Route::post('/matieres/edit/{id}', [MatiereController::class, 'postEditMatiere'])->name('post.backend.edit.matiere');
    Route::get('/matieres/delete/{id}', [MatiereController::class, 'DeleteMatiere'])->name('get.backend.delete.matiere');
    Route::get('/matieres/by-class', [MatiereController::class, 'getMatieresByClass'])->name('get.backend.matieres.by.class');

    // Sous-matieres
    Route::get('/sous-matieres/list', [SousMatiereController::class, 'getListSousMatiere'])->name('get.backend.list.sous_matiere');
    Route::post('/sous-matieres/add', [SousMatiereController::class, 'postAddSousMatiere'])->name('post.backend.add.sous_matiere');
    Route::post('/sous-matieres/edit/{id}', [SousMatiereController::class, 'postEditSousMatiere'])->name('post.backend.edit.sous_matiere');
    Route::get('/sous-matieres/delete/{id}', [SousMatiereController::class, 'DeleteSousMatiere'])->name('get.backend.delete.sous_matiere');

    Route::middleware('check.config')->group(function() {
        // Configuration routes
        Route::get('/configuration', [ConfigurationController::class, 'index'])->name('get.backend.configuration.index');
        Route::get('/configurations', [ConfigurationController::class, 'list'])->name('get.backend.configuration.list'); // Pour la liste
        Route::post('/configuration/store', [ConfigurationController::class, 'store'])->name('post.backend.configuration.store');
        Route::get('/configuration/{id}', [ConfigurationController::class, 'show'])->name('get.backend.configuration.show');
        Route::delete('/configuration/{id}', [ConfigurationController::class, 'destroy'])->name('delete.backend.configuration.destroy');
    });

    // Routes API pour le tableau de bord (accessibles depuis l'interface admin)
    Route::prefix('api')->group(function () {
        Route::get('/subscriptions/monthly', [DashboardController::class, 'getMonthlySubscriptions'])
            ->name('api.subscriptions.monthly');
        
        Route::get('/finances/stats', [DashboardController::class, 'getFinanceStats'])
            ->name('api.finances.stats');
        
        Route::get('/students/stats', [DashboardController::class, 'getStudentStats'])
            ->name('api.students.stats');
        
        Route::get('/classes/distribution', [DashboardController::class, 'getClassDistribution'])
            ->name('api.classes.distribution');
        
        Route::get('/evolution/stats', [DashboardController::class, 'getEvolutionStats'])
            ->name('api.evolution.stats');
        
        Route::get('/dashboard/stats', [DashboardController::class, 'getDashboardStats'])
            ->name('api.dashboard.stats');
    });
});


/** 404 PAGE ERROR  */
Route::fallback(function () {
    return view('errors.404');
});

/*********
 * ################
 * FRONTEND ROUTES
 * ###############
 */
Route::get('/', function() {
    return redirect()->route('get.backend.login');
});


Route::get('/students/send-message',                                        [StudentController::class, 'getSendMessage'])->name('get.backend.send.message.student');
Route::post('/students/send-message/{class?}',                               [StudentController::class, 'postSendMessage'])->name('post.backend.send.message.student');

Route::get('/student/{id}/card/{auth?}',                                [CardController::class, 'getCard'])->name('get.backend.card.student');
Route::get('/teacher/{id}/card/{auth?}',                                [CardController::class, 'getCardTeacher'])->name('get.backend.card.teacher');
Route::get('/student/{code}/info',                                      [StudentController::class, 'getInfoStudent'])->name('get.backend.info.student');
Route::get('/student/pensions-pdf',                   [StudentController::class, 'getPensionsReceiptPdf'])->name('get.backend.pensions.pdf.student');
Route::get('/teacher/{code}/info',                                      [StudentController::class, 'getInfoTeacher'])->name('get.backend.info.teacher');


Route::get('/payment/pdf',                                      [SubscriptionController::class, 'getPdf'])->name('get.backend.pdf.payment');
Route::get('/students/export-pdf/{status?}',                   [StudentController::class, 'exportAllPdf'])->name('get.backend.export.all.pdf.student');
Route::get('/students/export-pdf-teacher/{status?}',                   [StudentController::class, 'exportAllPdfForTeacher'])->name('get.backend.export.all.pdf.teacher.student');
Route::get('/card/generate/{auth?}',                                          [CardController::class, 'generate'])->name('get.backend.generate.card');
Route::get('/report/pdf',                                      [ReportController::class, 'getReportPdf'])->name('get.backend.generate.report');
Route::get('/report-term/pdf',                                      [ReportController::class, 'getReportTermPdf'])->name('get.backend.generate.report.term');
Route::get('