<?php
namespace Modules\Utilisateur;

use Modules\Utilisateur\Controller\KpiDashboardController;
use Modules\Utilisateur\Controller\ManageAvatarController;
use Modules\Utilisateur\Controller\ProfileController;
use Skeleton\Router;
use Skeleton\Module;
use Skeleton\Renderer\RendererInterface;
use Psr\Container\ContainerInterface;
use Modules\Utilisateur\Controller\MonAccueilController;
use Modules\Utilisateur\Controller\IndexController;
use Helpers\Parametres\Parametres;
use Modules\Utilisateur\Controller\MaSessionController;
use Modules\Utilisateur\Controller\MesBackupController;

class UtilisateurModule extends Module
{

    const DEFINITIONS = __DIR__ . '/config.php';

    public function __construct(ContainerInterface $container)
    {
        $container->get(RendererInterface::class)->addPath('Utilisateur', __DIR__ . '/views');
        
        $router = $container->get(Router::class);
        
        $parametres = new Parametres();
        $underscore = $parametres->expression_underscore;
        $user_regexp = $parametres->expression_user_code;
        

        $base_url = $container->get('baseUrl') . $container->get('Utilisateur.prefix');
        
        // CONTROLLER MonAccueilController
        $router->get($base_url, MonAccueilController::class, 'Utilisateur.MonAccueil.monAccueil');
        $router->get($base_url.'/TableauDeBord', MonAccueilController::class, 'Utilisateur.MonAccueil.TableauDeBord');
        $router->get($base_url.'/TableauDeBord/{codeEtat:'.$underscore.'+}/modification', MonAccueilController::class, 'Utilisateur.MonAccueil.modificationEtat');
        $router->get($base_url.'/TableauDeBord/{codeEtat:'.$underscore.'+}/supprimer', MonAccueilController::class, 'Utilisateur.MonAccueil.supprimerEtat');
        $router->get($base_url.'/TableauDeBord/Creation', MonAccueilController::class, 'Utilisateur.MonAccueil.creationEtat');
        $router->get($base_url.'/TableauDeBord/ajaxFiltreEtat', MonAccueilController::class, 'Utilisateur.MonAccueil.ajaxFiltreEtat');
        
        // CONTROLLER IndexController
        $router->get($base_url."/menu-intermediaire-suivi", IndexController::class, 'Utilisateur.Index.menuIntermediaireSuivi');
        $router->get($base_url."/menu-intermediaire-fav", IndexController::class, 'Utilisateur.Index.menuIntermediaireFav');
        $router->get($base_url."/menu-intermediaire-facLad", IndexController::class, 'Utilisateur.Index.menuIntermediaireLadFacture');
        $router->get($base_url."/menu-intermediaire-facListe", IndexController::class, 'Utilisateur.Index.menuIntermediaireListeFacture');
        $router->get($base_url."/menu-intermediaire-facEdition", IndexController::class, 'Utilisateur.Index.menuIntermediaireEditionFacture');
        $router->get($base_url."/menu-intermediaire-facexportMasse", IndexController::class, 'Utilisateur.Index.menuIntermediaireExportMasseFacture');
    
        $router->get($base_url.'/maSession/user[/{action:'.$underscore.'+}/{value:'.$underscore.'+}]', MaSessionController::class, 'Utilisateur.MaSession.maSession');
        $router->get($base_url.'/mesDroits', MaSessionController::class, 'Utilisateur.MaSession.mesDroits');
        $router->get($base_url.'/maSession/updateValue', MaSessionController::class, 'Utilisateur.MaSession.updateValue');
        $router->get($base_url.'/maSession/updateSessionPanier', MaSessionController::class, 'Utilisateur.MaSession.updateSessionPanier');
        $router->get($base_url.'/maSession/changementSociete/{codeSte:'.$underscore.'+}[/{confirm:'.$underscore.'+}]', MaSessionController::class, 'Utilisateur.MaSession.ajaxChangementSociete');
        $router->get($base_url.'/maSession/ajaxChangeCentre', MaSessionController::class, 'Utilisateur.MaSession.ajaxChangeCentre');
        
        
        // Avatar manager
        $router->get($base_url.'/avatar', ManageAvatarController::class, 'Utilisateur.ManageAvatar.index');
        $router->get($base_url.'/avatar/get/{user_code:'.$user_regexp.'}[/{format:small|medium|large}]', ManageAvatarController::class, 'Utilisateur.ManageAvatar.getAvatar');
        $router->get($base_url.'/avatar/upload_file', ManageAvatarController::class, 'Utilisateur.ManageAvatar.uploadFile');
        $router->get($base_url.'/avatar/delete', ManageAvatarController::class, 'Utilisateur.ManageAvatar.deleteFile');
        
        $router->get($base_url.'/MesBackup', MesBackupController::class, 'Utilisateur.MesBackup.mesBackup');
        $router->get($base_url.'/MesBackup/listeBackup', MesBackupController::class, 'Utilisateur.MesBackup.listeBackup');
        $router->get($base_url.'/MesBackup/add', MesBackupController::class, 'Utilisateur.MesBackup.addBackup');
        $router->get($base_url.'/MesBackup/ajaxValidBackup', MesBackupController::class, 'Utilisateur.MesBackup.ajaxValidBackup');

        $router->get($base_url.'/MesBackup/activeBackup', MesBackupController::class, 'Utilisateur.MesBackup.activeBackup');
        $router->get($base_url.'/MesBackup/desactiveBackUp', MesBackupController::class, 'Utilisateur.MesBackup.desactiveBackUp');
        
        $router->get($base_url.'/MesBackup/delete/{idBackup:'.$user_regexp.'+}', MesBackupController::class, 'Utilisateur.MesBackup.deleteBackup');

        $router->get($base_url.'/kpi-dashboard', KpiDashboardController::class, 'Utilisateur.KpiDashboard.index');
        $router->get($base_url.'/kpi-dashboard/{kpiId:'.$underscore.'+}/form', KpiDashboardController::class, 'Utilisateur.KpiDashboard.formKpi');
        $router->get($base_url.'/kpi-dashboard/{kpiId:'.$underscore.'+}/input/{uid:[0-9]+}', KpiDashboardController::class, 'Utilisateur.KpiDashboard.renderKpiInput');

        $router->get($base_url.'/kpi-all/update', KpiDashboardController::class, 'Utilisateur.KpiDashboard.updateUserListKpi');
        
        $router->get($base_url.'/profile/form-edit', ProfileController::class, 'Utilisateur.Profile.formEdit');
        $router->get($base_url.'/profile/edit', ProfileController::class, 'Utilisateur.Profile.edit');
        $router->get($base_url.'/profile/editPassword[/{type:signat}]', ProfileController::class, 'Utilisateur.Profile.editPassword');
        $router->public($base_url.'/profile/suiviCompte', ProfileController::class, 'Utilisateur.Profile.suiviCompte');
    }
}
