<?php
namespace Modules\EtatStatistiques;

use Modules\EtatStatistiques\Controller\EditEtatStatTypeController;
use Modules\EtatStatistiques\Controller\EtatStatDataVisuController;
use Modules\EtatStatistiques\Controller\GestionEtatStatTypeController;
use Modules\EtatStatistiques\Controller\GestionThemeController;
use Skeleton\Router;
use Skeleton\Module;
use Skeleton\Renderer\RendererInterface;
use Psr\Container\ContainerInterface;
use Modules\EtatStatistiques\Controller\GestionStatistiquesController;
use Helpers\Parametres\Parametres;
use Modules\EtatStatistiques\Controller\AjaxListeController;
use Modules\EtatStatistiques\Controller\ExportEtatStatController;
use Modules\EtatStatistiques\Controller\ExportEtatStatTypeController;
use Modules\EtatStatistiques\Controller\GestionEtatStatGroupController;
use Modules\EtatStatistiques\Controller\GestionEtatVisiUtilController;
use Modules\EtatStatistiques\Controller\GestionFiltreUtilController;
use Modules\EtatStatistiques\Controller\ImportEtatStatController;

class EtatStatistiquesModule extends Module
{

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

    public function __construct(ContainerInterface $container)
    {
        $container->get(RendererInterface::class)->addPath('EtatStatistiques', __DIR__ . '/views');
        

        $parametres = new Parametres();
        $user_expr = $parametres->expression_user_code;
        $uni = $parametres->getUniversalCodeRegexp();

        $router = $container->get(Router::class);
        $base_url = $container->get('baseUrl') . $container->get('EtatStatistiques.prefix');
        
        $router->get($base_url. '/listeEtats', GestionStatistiquesController::class, 'EtatStatistiques.GestionStatistique.listeEtats');

        $router->get($base_url. '/chargeFichierEtat/{codEtat:[A-Za-z0-9_-]+}', GestionStatistiquesController::class, 'EtatStatistiques.GestionStatistique.chargeFichierEtat');

        $router->get($base_url. '/detailEtatWsdl/{codEtat:[A-Za-z0-9_-]+}', GestionStatistiquesController::class, 'EtatStatistiques.GestionStatistique.detailEtatWsdl');

        $router->get($base_url. '/afficherListe/{codEtat:[A-Za-z0-9_-]+}', GestionStatistiquesController::class, 'EtatStatistiques.GestionStatistique.ajaxAfficher');

        $router->get($base_url. '/detailEtat/ajax/input/{codEtat:[A-Za-z0-9_-]+}', GestionStatistiquesController::class, 'EtatStatistiques.GestionStatistique.ajaxInputDetail');
        
        $router->get($base_url. '/afficherListeWsdl/{codEtat:[A-Za-z0-9_-]+}', GestionStatistiquesController::class, 'EtatStatistiques.GestionStatistique.ajaxAfficherWsdl');

        // AJAX_____LISTE
        $router->get($base_url. '/liste/table-dw', AjaxListeController::class, 'EtatStatistique.Zoom.tableDw');
        $router->get($base_url. '/autocomp/cols-dw', AjaxListeController::class, 'EtatStatistique.Autocomp.colDwAutocomp');
        $router->get($base_url. '/autocomp/where', AjaxListeController::class, 'EtatStatistique.Autocomp.etatReqWhereAutocomplete');
        $router->get($base_url. '/utilisateurEtatStat/{userCode:'.$user_expr.'}', AjaxListeController::class, 'EtatStatistique.ajaxListe.utilisateurEtatStat');
        $router->get($base_url. '/acheteurEtatStat[/{filtre:[A-Za-z0-9_-]+}]', AjaxListeController::class, 'EtatStatistique.ajaxListe.acheteurEtatStat');
        $router->get($base_url. '/csNonCoche', AjaxListeController::class, 'EtatStatistique.ajaxListe.csNonCoche');
        $router->get($base_url. '/csCoche', AjaxListeController::class, 'EtatStatistique.ajaxListe.csCoche');

        $router->get($base_url. '/utilisateurEtatStatMulti/{userCode:'.$user_expr.'}', AjaxListeController::class, 'EtatStatistique.ajaxListe.userEtatStatMulti');
        $router->get($base_url. '/acheteurEtatStatMulti[/{filtre:[A-Za-z0-9_-]+}]', AjaxListeController::class, 'EtatStatistique.ajaxListe.acheteurEtatStatMulti');
        
        //_________________

        //_________VALIDATOR LISTE_______________

        $router->get($base_url. '/listeUtilisateurEtatStat', AjaxListeController::class, 'EtatStatistique.ajaxListe.validatorUtilisateurEtatStat');
        $router->get($base_url. '/listeAcheteurEtatStat', AjaxListeController::class, 'EtatStatistique.ajaxListe.validatorAcheteurEtatStat');
        $router->get($base_url. '/listeCsNonCoche', AjaxListeController::class, 'EtatStatistique.ajaxListe.validatorCsNonCoche');
        $router->get($base_url. '/listeCsCoche', AjaxListeController::class, 'EtatStatistique.ajaxListe.validatorCsCoche');

        //________________________
        // EtatStat

        $router->get($base_url. '/type-etatstat/gestion', GestionEtatStatTypeController::class, 'EtatStatistique.Type.index');
        
        $router->get($base_url. '/type-etatstat/form-create', EditEtatStatTypeController::class, 'EtatStatistique.Type.formCreate');
        $router->get($base_url. '/type-etatstat/create', EditEtatStatTypeController::class, 'EtatStatistique.Type.create');
        $router->get($base_url. '/type-etatstat/{id:'.$uni.'}/form-update', EditEtatStatTypeController::class, 'EtatStatistique.Type.formUpdate');
        $router->get($base_url. '/type-etatstat/{id:'.$uni.'}/update', EditEtatStatTypeController::class, 'EtatStatistique.Type.update');
        $router->get($base_url. '/type-etatstat/{id:'.$uni.'}/delete', EditEtatStatTypeController::class, 'EtatStatistique.Type.delete');
        $router->get($base_url. '/type-etatstat/preview/sql', EditEtatStatTypeController::class, 'EtatStatistique.Type.popupPreviewSql');
        $router->get($base_url. '/type-etatstat/preview', EditEtatStatTypeController::class, 'EtatStatistique.Type.popupPreview');

        $router->get($base_url. '/type-etatstat/{id:'.$uni.'}/form-theme-update', EditEtatStatTypeController::class, 'EtatStatistique.Type.formEtatThemeUpdate');
        $router->get($base_url. '/type-etatstat/{id:'.$uni.'}/theme-update', EditEtatStatTypeController::class, 'EtatStatistique.Type.themeUpdate');
        
        $router->get($base_url. '/type-etatstat/{id:'.$uni.'}/form-visi-update', EditEtatStatTypeController::class, 'EtatStatistique.Type.formVisiEtat');
        $router->get($base_url. '/type-etatstat/{id:'.$uni.'}/visi-update', EditEtatStatTypeController::class, 'EtatStatistique.Type.visiEtat');
        
        $router->get($base_url. '/etatstat/{id:'.$uni.'}/view', EtatStatDataVisuController::class, 'EtatStatistique.Visu.detail');
        $router->get($base_url. '/etatstat-tab/{id:'.$uni.'}/export', ExportEtatStatController::class, 'EtatStatistique.Tableau.export');

        //________________________
        // Theme
        
        $router->get($base_url. '/theme/gestion', GestionThemeController::class, 'EtatStatistique.Theme.index');
        $router->get($base_url. '/theme/form-create', GestionThemeController::class, 'EtatStatistique.Theme.formCreate');
        $router->get($base_url. '/theme/create', GestionThemeController::class, 'EtatStatistique.Theme.create');
        $router->get($base_url. '/theme/{id:'.$uni.'}/form-update', GestionThemeController::class, 'EtatStatistique.Theme.formUpdate');
        $router->get($base_url. '/theme/{id:'.$uni.'}/update', GestionThemeController::class, 'EtatStatistique.Theme.update');
        $router->get($base_url. '/theme/{id:'.$uni.'}/popup-duplicate', GestionThemeController::class, 'EtatStatistique.Theme.popupDuplicate');
        $router->get($base_url. '/theme/{id:'.$uni.'}/duplicate', GestionThemeController::class, 'EtatStatistique.Theme.duplicate');
        $router->get($base_url. '/theme/{id:'.$uni.'}/delete', GestionThemeController::class, 'EtatStatistique.Theme.delete');

        //________________________
        // Group
        
        $router->get($base_url. '/group/gestion', GestionEtatStatGroupController::class, 'EtatStatistique.Group.index');
        $router->get($base_url. '/group/form-create', GestionEtatStatGroupController::class, 'EtatStatistique.Group.formCreate');
        $router->get($base_url. '/group/create', GestionEtatStatGroupController::class, 'EtatStatistique.Group.create');
        $router->get($base_url. '/group/{id:'.$uni.'}/form-update', GestionEtatStatGroupController::class, 'EtatStatistique.Group.formUpdate');
        $router->get($base_url. '/group/{id:'.$uni.'}/update', GestionEtatStatGroupController::class, 'EtatStatistique.Group.update');
        $router->get($base_url. '/group/{id:'.$uni.'}/delete', GestionEtatStatGroupController::class, 'EtatStatistique.Group.delete');

        //________________________
        // Visibilité utilisateur
        
        $router->get($base_url. '/visi/gestion', GestionEtatVisiUtilController::class, 'EtatStatistique.Visi.index');
        $router->get($base_url. '/visi/{id:'.$uni.'}/form-update', GestionEtatVisiUtilController::class, 'EtatStatistique.Visi.formUpdate');
        $router->get($base_url. '/visi/{id:'.$uni.'}/update', GestionEtatVisiUtilController::class, 'EtatStatistique.Visi.update');

        //________________________
        // Filtre Util

        $router->get($base_url. '/filtre-util/gestion', GestionFiltreUtilController::class, 'EtatStatistique.FiltreUtil.index');
        $router->get($base_url. '/filtre-util/form-create', GestionFiltreUtilController::class, 'EtatStatistique.FiltreUtil.formCreate');
        $router->get($base_url. '/filtre-util/create', GestionFiltreUtilController::class, 'EtatStatistique.FiltreUtil.create');
        $router->get($base_url. '/filtre-util/{id:'.$uni.'}/form-update', GestionFiltreUtilController::class, 'EtatStatistique.FiltreUtil.formUpdate');
        $router->get($base_url. '/filtre-util/{id:'.$uni.'}/update', GestionFiltreUtilController::class, 'EtatStatistique.FiltreUtil.update');
        $router->get($base_url. '/filtre-util/{id:'.$uni.'}/delete', GestionFiltreUtilController::class, 'EtatStatistique.FiltreUtil.delete');

        //________________________
        // Type Import/export

        $router->get($base_url. '/popup-import', ImportEtatStatController::class, 'EtatStatistique.Import.popupImport');
        $router->get($base_url. '/import', ImportEtatStatController::class, 'EtatStatistique.Import.import');
        $router->get($base_url. '/popup-export', ExportEtatStatTypeController::class, 'EtatStatistique.Export.popupExport');
        $router->get($base_url. '/export[/{id:'.$uni.'}]', ExportEtatStatTypeController::class, 'EtatStatistique.Export.export');
    }
}
