<?php
namespace Modules\Parametrage;

use Modules\Parametrage\Controller\ParametrageAPIController;
use Modules\Parametrage\Controller\ParametrageMobiliteController;
use Modules\Parametrage\Rules\ParametrageAPI;
use Skeleton\Router;
use Skeleton\Module;
use Psr\Container\ContainerInterface;
use Skeleton\Renderer\RendererInterface;
use Helpers\Parametres\Parametres;
use Modules\Parametrage\Controller\ParametrageOxalinkController;
use Modules\Parametrage\Controller\ParametragePageOxalinkController;
use Modules\Parametrage\Controller\ParametrageFrsOxalinkController;
use Modules\Parametrage\Controller\ParametrageAccesOxalinkController;
use Modules\Parametrage\Controller\ParametrageFlexiController;
use Modules\Parametrage\Controller\ParametrageFournisseurController;
use Modules\Parametrage\Controller\ParametrageIndexController;
use Modules\Parametrage\Controller\ParametrageLADController;
use Modules\Parametrage\Controller\ParametrageLADFournImportController;
use Modules\Parametrage\Controller\ParametrageOxaprocController;
use Modules\Parametrage\Controller\ParametrageFactureController;

class ParametrageModule extends Module
{

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

    public function __construct(ContainerInterface $container)
    {
        $container->get(RendererInterface::class)->addPath('Parametrage', __DIR__ . '/views');
        
        $router = $container->get(Router::class);
        
        $parametres = new Parametres();
        $pageOxalink = $global = $parametres->expression_global;
        $langue     = $parametres->codeLangue;
        $bool = '[0-1]';

        $base_url = $container->get('baseUrl') . $container->get('Parametrage.prefix');

        /** Parametrage **/
        
        $router->get($base_url.'', ParametrageIndexController::class, 'Parametrage.Parametrage.index');
        
        $router->get($base_url.'/oxaLink', ParametrageOxalinkController::class, 'Parametrage.ParametrageOxalink.index');
        $router->get($base_url.'/oxaLink/paramMail', ParametrageOxalinkController::class, 'Parametrage.ParametrageOxalink.paramMail');

        $router->get($base_url.'/oxaLink/demandeReferencement', ParametrageFrsOxalinkController::class, 'Parametrage.ParametrageOxalink.fournisseur');
        $router->get($base_url.'/oxaLink/rules', ParametrageFrsOxalinkController::class, 'Parametrage.ParametrageOxalink.rules');


        $router->get($base_url.'/oxaLink/page', ParametragePageOxalinkController::class, 'Parametrage.ParametrageOxalink.page');
        $router->get($base_url.'/oxaLink/page/detail/{page:'.$pageOxalink.'+}', ParametragePageOxalinkController::class, 'Parametrage.ParametrageOxalink.ajaxDetailPage');
        $router->get($base_url.'/oxaLink/page/nouveau[/{page:'.$pageOxalink.'+}/{codeLng:'.$langue.'+}]', ParametragePageOxalinkController::class, 'Parametrage.ParametrageOxalink.ajouterPage');
        $router->get($base_url.'/oxaLink/page/modification/{page:'.$pageOxalink.'+}[/{codeLng:'.$langue.'+}]', ParametragePageOxalinkController::class, 'Parametrage.ParametrageOxalink.modificationPage');
        $router->get($base_url.'/oxaLink/page/suppresion/{page:'.$pageOxalink.'+}[/{codeLng:'.$langue.'+}]', ParametragePageOxalinkController::class, 'Parametrage.ParametrageOxalink.suppresionPage');
    
        $router->get($base_url.'/oxaLink/cgu/modification[/{codeLng:'.$langue.'+}]', ParametragePageOxalinkController::class, 'Parametrage.ParametrageOxalink.modificationCGU');
        $router->get($base_url.'/oxaLink/cgu/download[/{codeLng:'.$langue.'+}]', ParametragePageOxalinkController::class, 'Parametrage.ParametrageOxalink.downloadCGU');
        $router->get($base_url.'/oxaLink/cgu/detail', ParametragePageOxalinkController::class, 'Parametrage.ParametrageOxalink.ajaxDetailCGU');
        
        $router->get($base_url.'/oxaLink/acces', ParametrageAccesOxalinkController::class, 'Parametrage.ParametrageAcces.acces');

        //parametrageMoblit
        $router->get($base_url.'/mobilite/QrCode', ParametrageMobiliteController::class, 'Parametrage.ParametrageMobilite.QrCode');
        $router->get($base_url.'/mobilite/ajax/SendMail', ParametrageMobiliteController::class, 'Parametrage.ParametrageMobilite.ajaxSendMail');
        // Parametrage LAD
        $router->get($base_url . '/parametrage/LAD', ParametrageLADController::class, 'Parametrage.ParametrageLAD.LAD');
        $router->get($base_url . '/parametrage/LAD/Fournisseur[/del/{delCodeFournisseur:'.$global.'+}]', ParametrageLADController::class, 'Parametrage.ParametrageLAD.fournisseur');
        $router->get($base_url . '/parametrage/LAD/creation/Fournisseur[/{type:'.$global.'+}/{codeFournisseur : '.$global.'+}]', ParametrageLADController::class, 'Parametrage.ParametrageLAD.creationParamLADfournisseur');
        $router->get($base_url . '/parametrage/LAD/Fournisseur/export', ParametrageLADController::class, 'Parametrage.ParametrageLAD.exportFournisseurArticle');
        
        // flexi signature
        $router->get($base_url . '/parametrage/FLEXI/signature', ParametrageFlexiController::class, 'Parametrage.ParametrageFlexi.signature');
        $router->get($base_url . '/parametrage/FLEXI/validateSignature', ParametrageFlexiController::class, 'Parametrage.ParametrageFlexi.validateSignature');
        // Paramétrage LAD - IMPORT FOURNISSEUR ARTICLE
        $router->get($base_url . '/parametrage/LAD/import', ParametrageLADFournImportController::class, 'Parametrage.ParametrageLADFournImport.import');
        $router->get($base_url . '/parametrage/LAD/ajax/import', ParametrageLADFournImportController::class, 'Parametrage.ParametrageLADFournImport.ajaxImport');
        $router->get($base_url . '/parametrage/LAD/ajax/recapAnomalie', ParametrageLADFournImportController::class, 'Parametrage.ParametrageLADFournImport.recapAnomalie');

        // Parametrage Fournisseur
        $router->get($base_url . '/fournisseur/rules', ParametrageFournisseurController::class, 'Parametrage.ParametrageFournisseur.rules');
   
        // Parametrage OXA.PROC
        $router->get($base_url . '/oxaproc/fonctionnel', ParametrageOxaprocController::class, 'Parametrage.ParametrageOxaproc.fonctionnel');
        $router->get($base_url . '/oxaproc/visual', ParametrageOxaprocController::class, 'Parametrage.ParametrageOxaproc.visual');
        $router->get($base_url . '/oxaproc/ajax/validator/File', ParametrageOxaprocController::class, 'Parametrage.ParametrageOxaproc.ajaxValidatorFile');
        
        
        // Parametrage facture
        $router->get($base_url . '/facture', ParametrageFactureController::class, 'Parametrage.ParametrageFacture.facture');
        $router->get($base_url . '/facture/ajax/update', ParametrageFactureController::class, 'Parametrage.ParametrageFacture.factureUpdate');

        // Parametrage API
        $router->get($base_url.'/api/settings/connect[/{reset:'.$global.'+}]', ParametrageAPIController::class, 'Parametrage.ParametrageAPI.index');

        $router->get(
            $base_url.'/mail',
            ParametrageOxalinkController::class,
            'Parametrage.ParametrageOxalink.notifierDestinataire'
        );

        $router->get(
            $base_url.'/mail/ajaxDelete/{type:'.$global.'+}',
            ParametrageOxalinkController::class,
            'Parametrage.ParametrageOxalink.ajaxDeleteParamDestinataire'
        );
    }
}
