<?php
namespace Modules\Administration;

use Modules\Administration\Controller\ExportUtilisateurController;
use Modules\Administration\Controller\GestionDroitUtilisateurController;
use Modules\Administration\Controller\GestionUtilisateurController;
use Skeleton\Router;
use Skeleton\Module;
use Psr\Container\ContainerInterface;
use Skeleton\Renderer\RendererInterface;
use Modules\Administration\Controller\GestionUtilisateurOxalinkController;
use Helpers\Parametres\Parametres;

class AdministrationModule extends Module
{

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

    public function __construct(ContainerInterface $container)
    {
        $container->get(RendererInterface::class)->addPath('Administration', __DIR__ . '/views');
        
        /** @var Router */
        $router = $container->get(Router::class);
        /** Parametrage **/
        $parametres = new Parametres();
        $global     = $parametres->expression_point_tiret_underscore;
        $base_url = $container->get('baseUrl') . $container->get('Administration.prefix');
        $idGrp = '[A-Za-z0-9%._ -+]';
        
        /** Gestion user oxalink **/
        $router->get($base_url.'/oxaLink/gestionUtilisateur', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.index');
        $router->get($base_url.'/oxaLink/ajaxDetailuser/{idUser:'.$global.'+}', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.ajaxDetailuser');
        $router->get($base_url.'/oxaLink/ajaxRelanceUser/{idUser:'.$global.'+}', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.ajaxRelanceUser');
        $router->get($base_url.'/oxaLink/modification/{idUser:'.$global.'+}', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.modificationUser');
        $router->get($base_url.'/oxaLink/suppresion/{idUser:'.$global.'+}', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.ajaxSuppresionUser');
        $router->get($base_url.'/oxaLink/debloquer/{idUser:'.$global.'+}', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.ajaxDebloquerUser');
        $router->get($base_url.'/oxaLink/popup/ModifPassword/{idUser:'.$global.'+}', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.popupModifPassword');
        $router->get($base_url.'/oxaLink/popup/ModifAllPasswords', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.popupModifAllPasswords');
        $router->get($base_url.'/oxaLink/popup/Debloquer/{idUser:'.$global.'+}', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.popupDebloquerUser');
        $router->get($base_url.'/oxaLink/ajax/valider/{idUser:'.$global.'+}', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.ajaxValiderUser');
        $router->get($base_url.'/oxaLink/export[/{type:'.$global.'+}[/{idUser:'.$global.'+}]]', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.export');
        $router->get($base_url.'/oxaLink/suivi[/{idUser:'.$global.'+}]', GestionUtilisateurOxalinkController::class, 'Administration.GestionUtilisateur.suivi');
        

        /* Gestion utilisateur */
        $router->get($base_url.'/list-user', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.listCollab');
        $router->get($base_url.'/pending-creation', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.listPendingCreation');
        $router->get($base_url.'/pending-update', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.listPendingModif');
        $router->get($base_url.'/user-blocked', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.listUserBlocked');
        
        $router->get($base_url.'/list-user/export', ExportUtilisateurController::class, 'Administration.ExportUtilisateur.export');
        


        //$router->get($base_url.'/user/{userId:'.$global.'+}', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.detail');
        $router->get($base_url.'/user/{userId:'.$global.'+}/form-edit', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.formEditUser');
        $router->get($base_url.'/user/{userId:'.$global.'+}/edit', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.editUser');
        $router->get($base_url.'/user/{userId:'.$global.'+}/img-signat', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.userImgSignat');
        $router->get($base_url.'/user/{userId:'.$global.'+}/unblock', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.unblock', ['POST']);

        $router->get($base_url.'/dem/{demId:'.$global.'+}/form-approve', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.formApprobDem');
        $router->get($base_url.'/dem/{demId:'.$global.'+}/approve', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.approveDem');
        $router->get($base_url.'/dem/{demId:'.$global.'+}/reject', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.refusDem');
        
        $router->get($base_url.'/testSMTP', GestionUtilisateurController::class, 'Administration.GestionUtilisateur.testeSMTP');

        $router->get($base_url.'/droit/listeUtilisateur', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.listeUser');
        $router->get($base_url.'/droit/listeDroit', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.listeDroit');

        
        $router->get($base_url.'/droit/createGrpDroit', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.createGrpDroit');
        $router->get($base_url.'/droit/validateGrpDroit', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.validateGrpDroit');

        $router->get($base_url.'/droit/popupGrpDroit/{idGrp:'.$idGrp.'+}', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.popupGrpDroit');
        $router->get($base_url.'/droit/validatePopupGrpDroit/{idGrp:'.$idGrp.'+}', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.validatePopupGrpDroit');
        
        $router->get($base_url.'/droit/userInGrpDroit/{idGrp:'.$idGrp.'+}', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.userInGrpDroit');
        $router->get($base_url.'/droit/updateUserInGrpDroit/{idGrp:'.$idGrp.'+}', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.updateUserInGrpDroit');
        
        

        $router->get($base_url.'/droit/popupDroitUser/{mode:'.$global.'+}/{idUser:'.$global.'+}', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.popupDroitUser');
        $router->get($base_url.'/droit/validateDroitUser/{mode:'.$global.'+}/{idUser:'.$global.'+}', GestionDroitUtilisateurController::class, 'Administration.GestionDroitUtilisateur.validateDroitUser');
    }
}
