<?php
namespace Modules\ProjetAchat;

use Modules\ProjetAchat\Controller\CategorieController;
use Modules\ProjetAchat\Controller\CompanyController;
use Modules\ProjetAchat\Controller\DonneeController;
use Modules\ProjetAchat\Controller\ElementsConcernedController;
use Modules\ProjetAchat\Controller\HierarchyController;
use Modules\ProjetAchat\Controller\ProjetAchatEventController;
use Modules\ProjetAchat\Controller\TaskController;
use Skeleton\Router;
use Skeleton\Module;
use Skeleton\Renderer\RendererInterface;
use Psr\Container\ContainerInterface;
use Helpers\Parametres\Parametres;
use Modules\ProjetAchat\Controller\ActeurController;
use Modules\ProjetAchat\Controller\TableOperationController;
use Modules\ProjetAchat\Controller\CreationTableOperationController;
use Modules\ProjetAchat\Controller\GestionProjetAchatController;
use Modules\ProjetAchat\Controller\BibliothequeDonneeController;
use Modules\ProjetAchat\Controller\ChampsController;
use Modules\ProjetAchat\Controller\ModeleProjetController;
use Modules\ProjetAchat\Controller\GestionModeleController;
use Modules\ProjetAchat\Controller\ImportLibraryController;
use Modules\ProjetAchat\Controller\ActionController;
use Modules\ProjetAchat\Controller\ActionDataController;
use Modules\ProjetAchat\Controller\ActionActorController;
use Modules\ProjetAchat\Controller\PlanningController;
use Modules\ProjetAchat\Controller\ActionExecuteController;
use Modules\ProjetAchat\Controller\DoublonsController;
use Modules\ProjetAchat\Controller\IndicateurProjetAchatController;

class ProjetAchatModule extends Module
{
    
    const DEFINITIONS = __DIR__ . '/config.php';
    
    public function __construct(ContainerInterface $container)
    {
        $container->get(RendererInterface::class)->addPath('projetAchat', __DIR__ . '/views');
        $container->get(RendererInterface::class)->addPath('referentiel', __DIR__ . '/views/referentiel');
        $container->get(RendererInterface::class)->addPath('tableOperation', __DIR__ . '/views/referentiel/tableOperation');
        $container->get(RendererInterface::class)->addPath('categorie', __DIR__ . '/views/categorie');
        $container->get(RendererInterface::class)->addPath('donnee', __DIR__ . '/views/donnee');
        $container->get(RendererInterface::class)->addPath('task', __DIR__ . '/views/task');
        $container->get(RendererInterface::class)->addPath('company', __DIR__ . '/views/company');
        
        $router = $container->get(Router::class);
        
        $parametres     = new Parametres();
        $idProjetAchat  = $parametres->expression_decimal;
        $user           = $parametres->expression_point_tiret_underscore;
        $alpha_min      = $parametres->expression_alpha_min;
        $decimal        = $parametres->expression_decimal;
        $idCategorie    = $parametres->expression_decimal;
        $idDonnee       = $parametres->expression_decimal;
        $typeObjet      = $parametres->expression_alpha;
        $idObjet        = $parametres->expression_decimal;
        $idChamp        = $parametres->expression_decimal;
        $idAction       = $parametres->expression_global;
        
        $codeSoc        = $parametres->expression_global;
        $idProjet       = $parametres->expression_global;
        $idOperation    = $parametres->expression_point_tiret_underscore;
        $idElement      = $parametres->expression_point_tiret_underscore_espace;
        $typeElement    = $parametres->expression_point_tiret_underscore;

        $basePath = $container->get('baseUrl') . $container->get('ProjetAchat.prefix');
        
        $router->get($basePath, GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.index');
        $router->get($basePath. '/tableauDeBord', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.tableauBord');
        $router->get($basePath. '/tableauDeBord/mesActions', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.mesActions');
        $router->get($basePath. '/detail/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.ajaxDetail');
        $router->get($basePath. '/planning/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.ajaxPlanning');
        $router->get($basePath. '/popup/transmettre/{idProjetAchat:'.$idProjetAchat.'+}[/{typeObjet:'.$typeObjet.'+}]', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.popupTransfere');
        $router->get($basePath. '/ajax/transmettre/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.ajaxTransmettre');
        $router->get($basePath. '/ajax/valider/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.devalider');
        $router->get($basePath. '/ajax/devalider/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.validate');
        $router->get($basePath. '/ajax/confirmationValidate/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.confirmationValidate');
        $router->get($basePath. '/ajax/cloture/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.cloture');
        $router->get($basePath. '/ajax/confirmationCloture/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.confirmationCloture');
        $router->get($basePath. '/listeModeleImport/{idProjetAchat:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.listeModeleImport');
        $router->get($basePath. '/modeleImport/{idProjetAchat:'.$idProjetAchat.'+}/{idModele:'.$idProjetAchat.'+}', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.modeleImport');

        // Evenement
        $router->get($basePath. '/event', ProjetAchatEventController::class, 'ProjetAchat.Event.suiviAll');
        $router->get($basePath. '/{id:'.$idProjetAchat.'+}/event', ProjetAchatEventController::class, 'ProjetAchat.Event.suivi');
        $router->get($basePath. '/event/export', ProjetAchatEventController::class, 'ProjetAchat.Event.export');
        

        $router->get($basePath. '/popup/export', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.popupExport');
        $router->get($basePath. '/ajax/popup', GestionProjetAchatController::class, 'ProjetAchat.GestionProjetAchat.export');
        // Modele
        //$router->get($basePath. '/modeles', GestionModeleController::class, 'ProjetAchat.GestionModele.index');
        $router->get($basePath. '/modeles/favoris[/{idProjet:'.$idProjet.'+}]', GestionModeleController::class, 'ProjetAchat.GestionModele.favori');
        $router->get($basePath. '/gestion-modeles', GestionModeleController::class, 'ProjetAchat.GestionModele.index');
        
        // modele - projet achat
        $router->get($basePath. '/modeleProjet/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}', ModeleProjetController::class, 'ProjetAchat.ModeleProjet.details');
        $router->get($basePath. '/modeleProjet/{type:'.$typeObjet.'+}/create/{idProjet:'.$idProjet.'+}[/{typeSource:'.$typeObjet.'+}]', ModeleProjetController::class, 'ProjetAchat.ModeleProjet.createEdit');
        $router->get($basePath. '/modeleProjet/{type:'.$typeObjet.'+}/validate/{idProjet:'.$idProjet.'+}[/{typeSource:'.$typeObjet.'+}]', ModeleProjetController::class, 'ProjetAchat.ModeleProjet.validate');
        //$router->get($basePath. '/{type:'.$typeObjet.'+}/dupliquer/{idProjet:'.$idProjet.'+}', ModeleProjetController::class, 'ProjetAchat.ModeleProjet.popupDupliquer');
        $router->get($basePath. '/modeleProjet/{type:'.$typeObjet.'+}/delete/{idProjet:'.$idProjet.'+}', ModeleProjetController::class, 'ProjetAchat.ModeleProjet.delete');
        $router->get($basePath. '/modeleProjet/validate-projet-achat', ModeleProjetController::class, 'ProjetAchat.CreationProjetAchat.validateProject');
        $router->get($basePath. '/modeleProjet/ajaxCentreEmetteur', ModeleProjetController::class, 'ProjetAchat.CreationProjetAchat.ajaxCentreEmetteur');
        
        // import Library
        $router->get($basePath. '/importLibrary/ajaxTabLibrary/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}', ImportLibraryController::class, 'ProjetAchat.ImportLibrary.showTabLibrary');
        $router->get($basePath. '/importLibrary/ajaxListeLibrary/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idCategorie:'.$idCategorie.'+}', ImportLibraryController::class, 'ProjetAchat.ImportLibrary.ajaxLibrary');
        $router->get($basePath. '/importLibrary/ajaxAddData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}', ImportLibraryController::class, 'ProjetAchat.ImportLibrary.addData');
        $router->get($basePath. '/importLibrary/ajaxAddContentLibrary/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idCategorie:'.$idCategorie.'+}', ImportLibraryController::class, 'ProjetAchat.ImportLibrary.ajaxAddContentLibrary');
        
        
        // Partie Bibliotheque
        $router->get($basePath. '/bibliothequeDeDonnee', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.index');
        $router->get($basePath. '/ajaxCategorie/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idCategorie:'.$idCategorie.'+}', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.ajaxDetailCategorie');
        $router->get($basePath. '/ajaxMenuContextuel/{idCategorie:'.$idCategorie.'+}', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.ajaxMenuContextuel');
        $router->get($basePath. '/popupFormatDocument', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.popupFormatDocument');
        $router->get($basePath. '/popupFormatDocument/ajaxFormatDocument/{idMaquette:'.$decimal.'+}', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.ajaxFormatDocument');
        $router->get($basePath. '/ajax/reorderFields', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.ajaxReorderFields');
        $router->get($basePath. '/ajax/reorderDatas', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.ajaxReorderDatas');
        $router->get($basePath. '/ajax/reorderActions', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.ajaxReorderActions');
        
        // Champ
        $router->get($basePath. '/champs/create-edit/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idDonnee:'.$idDonnee.'+}[/{idChamp:'.$idChamp.'+}]', ChampsController::class, 'ProjetAchat.Champs.createEdit');
        $router->get($basePath. '/champs/validation/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idDonnee:'.$idDonnee.'+}[/{idChamp:'.$idChamp.'+}]', ChampsController::class, 'ProjetAchat.Champs.validation');
        $router->get($basePath. '/champs/ajaxObjetLie/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idDonnee:'.$idDonnee.'+}[/{idChamp:'.$idChamp.'+}]', ChampsController::class, 'ProjetAchat.Champs.ajaxObjetLie');
        $router->get($basePath. '/champs/delete/{idChamp:'.$idChamp.'+}', ChampsController::class, 'ProjetAchat.Champs.delete');
        $router->get($basePath. '/champs/deleteHeritage/{idChamp:'.$idChamp.'+}', ChampsController::class, 'ProjetAchat.Champs.deleteHeritage');
        $router->get($basePath. '/champs/updateHeritage/{idChamp:'.$idChamp.'+}', ChampsController::class, 'ProjetAchat.Champs.updateHeritage');
        $router->get($basePath. '/champs/briserHeritage/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idDonnee:'.$idDonnee.'+}/{idChamp:'.$idChamp.'+}', ChampsController::class, 'ProjetAchat.Champs.briserHeritage');
        
        /** draft suppresion donnée */
        $router->get($basePath. '/babaSuppression', BibliothequeDonneeController::class, 'ProjetAchat.Champs.babaSuppression');
        
        // Controller TableOperation
        $router->get($basePath . '/table-operation', TableOperationController::class, 'ProjetAchat.TableOperation.tableOperation');
        $router->get($basePath . '/table-operation/{mode:'.$alpha_min.'+}[/{idOperation:'.$idOperation.'+}]', CreationTableOperationController::class, 'ProjetAchat.CreationTableOperation.creation');
        $router->get($basePath . '/validationCreation/{mode:'.$alpha_min.'+}[/{idOperation:'.$idOperation.'+}]', CreationTableOperationController::class, 'ProjetAchat.CreationTableOperation.validation');
        
        // Categories
        $router->get($basePath. '/category/edit/{idCategorie:'.$idCategorie.'+}', CategorieController::class, 'ProjetAchat.Categorie.edit');
        $router->get($basePath. '/category/create/{typeObject:'.$typeObjet.'+}/{idObject:'.$idObjet.'+}[/{idParent:'.$idObjet.'+}[/{isParent:'.$idObjet.'+}]]', CategorieController::class, 'ProjetAchat.Categorie.create');
        $router->get($basePath. '/category/delete/{typeObject:'.$typeObjet.'+}/{idObject:'.$idObjet.'+}/{idCategorie:'.$idCategorie.'+}', CategorieController::class, 'ProjetAchat.Categorie.delete');
        $router->get($basePath. '/category/deleteHeritage/{typeObject:'.$typeObjet.'+}/{idObject:'.$idObjet.'+}/{idCategorie:'.$idCategorie.'+}', CategorieController::class, 'ProjetAchat.Categorie.deleteHeritage');
        $router->get($basePath. '/category/ajax/reorder/{typeObject:'.$typeObjet.'+}/{idObject:'.$idObjet.'+}', CategorieController::class, 'ProjetAchat.Categorie.ajaxReOrder');
        
        
        // Hierarchy
        $router->get($basePath. '/hierarchy/create/{typeObject:'.$typeObjet.'+}/{idObject:'.$idObjet.'+}[/{idParent:'.$idObjet.'+}[/{isParent:'.$idObjet.'+}]]', HierarchyController::class, 'ProjetAchat.Hierarchy.create');
        $router->get($basePath. '/hierarchy/edit/{idHierarchy:'.$idObjet.'+}', HierarchyController::class, 'ProjetAchat.Hierarchy.edit');
        $router->get($basePath. '/hierarchy/delete/{idHierarchy:'.$idObjet.'+}', HierarchyController::class, 'ProjetAchat.Hierarchy.delete');
        $router->get($basePath. '/ajaxHierarchy/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idCategorie:'.$idCategorie.'+}', HierarchyController::class, 'ProjetAchat.Hierarchy.ajaxDetailHierarchy');
        $router->get($basePath. '/ajaxMenuContextuelH/{idHierarchy:'.$idCategorie.'+}', HierarchyController::class, 'ProjetAchat.Hierarchy.ajaxMenuContextuelH');
        $router->get($basePath. '/update-hierarchy', HierarchyController::class, 'ProjetAchat.Hierarchy.updateTache');
        $router->get($basePath. '/hierarchy/ajax/reorder/{typeObject:'.$typeObjet.'+}/{idObject:'.$idObjet.'+}', HierarchyController::class, 'ProjetAchat.Hierarchy.ajaxReOrder');
        

        
        
        // Données
        $router->get($basePath. '/data/create/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idCategorie:'.$idCategorie.'+}', DonneeController::class, 'ProjetAchat.Donnee.create', /*Droits?*/);
        $router->get($basePath. '/data/edit/{idData:'.$idCategorie.'+}', DonneeController::class, 'ProjetAchat.Donnee.edit');
        $router->get($basePath. '/data/delete/{typeObjet:'.$typeObjet.'+}/{idData:'.$idCategorie.'+}', DonneeController::class, 'ProjetAchat.Donnee.delete');
        $router->get($basePath. '/data/deleteHeritage/{typeObjet:'.$typeObjet.'+}/{idData:'.$idCategorie.'+}', DonneeController::class, 'ProjetAchat.Donnee.deleteHeritage');
        $router->get($basePath. '/data/briserHeritage/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idData:'.$idCategorie.'+}', DonneeController::class, 'ProjetAchat.Donnee.briserHeritage', /*Droits?*/);
        
        // tasks
        $router->get($basePath. '/task/create/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idHierarchy:'.$idCategorie.'+}', TaskController::class, 'ProjetAchat.Task.create', /*Droits?*/);
        $router->get($basePath. '/task/edit/{idTask:'.$idCategorie.'+}', TaskController::class, 'ProjetAchat.Task.edit', /*Droits?*/);
        $router->get($basePath. '/task/details/{idTask:'.$idCategorie.'+}', TaskController::class, 'ProjetAchat.Task.details', /*Droits?*/);
        $router->get($basePath. '/task/delete/{idTask:'.$idCategorie.'+}', TaskController::class, 'ProjetAchat.Task.delete', /*Droits?*/);
        $router->get($basePath. '/task/findEndDate', TaskController::class, 'ProjetAchat.Task.findEndDate', /*Droits?*/);
        $router->get($basePath. '/task/ajax/ReorderTask', TaskController::class, 'ProjetAchat.Task.ajaxReorderTask', /*Droits?*/);
        
        
        // action tasks
        $router->get($basePath. '/task/action/createEdit/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTask:'.$idCategorie.'+}[/{idAction:'.$idAction.'+}]', ActionController::class, 'ProjetAchat.Action.createEdit', /*Droits?*/);
        $router->get($basePath. '/task/action/delete/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTask:'.$idCategorie.'+}/{idAction:'.$idAction.'+}', ActionController::class, 'ProjetAchat.Action.delete', /*Droits?*/);
        $router->get($basePath. '/task/action/detail/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}', ActionController::class, 'ProjetAchat.Action.showDetail', /*Droits?*/);
        
        $router->get($basePath. '/task/action/execute/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}', ActionExecuteController::class, 'ProjetAchat.Action.execute', /*Droits?*/);
        $router->get($basePath. '/task/action/captureData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}/{idDonnee:'.$idCategorie.'+}[/{idRecord:'.$idCategorie.'+}[/{action:'.$alpha_min.'+}]]', ActionExecuteController::class, 'ProjetAchat.ActionExecute.captureData', /*Droits?*/);
        $router->get($basePath. '/task/action/validateCaptureData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}/{idDonnee:'.$idCategorie.'+}/{idRecord:'.$idCategorie.'+}[/{action:'.$alpha_min.'+}]', ActionExecuteController::class, 'ProjetAchat.ActionExecute.validateCaptureData', /*Droits?*/);
        $router->get($basePath. '/task/action/ajaxDocContratheque/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idDonnee:'.$idCategorie.'+}/{idData:'.$idChamp.'+}/{idRecord:'.$idCategorie.'+}', ActionExecuteController::class, 'ProjetAchat.ActionExecute.ajaxDocContratheque', /*Droits?*/);
        $router->get($basePath. '/task/action/ajaxGetDataLinkObject/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}/{idDonnee:'.$idCategorie.'+}/{idData:'.$idChamp.'+}', ActionExecuteController::class, 'ProjetAchat.ActionExecute.ajaxGetDataLinkObject', /*Droits?*/);
        $router->get($basePath. '/task/action/deleteCaptureData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}/{idDonnee:'.$idCategorie.'+}/{idRecord:'.$idCategorie.'+}', ActionExecuteController::class, 'ProjetAchat.ActionExecute.deleteCaptureData', /*Droits?*/);
        $router->get($basePath. '/task/action/closeAction/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}', ActionExecuteController::class, 'ProjetAchat.ActionExecute.closeAction', /*Droits?*/);
        $router->get($basePath. '/task/action/popupImportData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}/{idDonnee:'.$idCategorie.'+}', ActionExecuteController::class, 'ProjetAchat.ActionExecute.popupImportData', /*Droits?*/);
        $router->get($basePath. '/task/action/importData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}/{idDonnee:'.$idCategorie.'+}', ActionExecuteController::class, 'ProjetAchat.ActionExecute.importData', /*Droits?*/);
        $router->get($basePath. '/task/action/ajaxGetCalculatedData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idDonnee:'.$idCategorie.'+}', ActionExecuteController::class, 'ProjetAchat.ActionExecute.ajaxGetCalculatedData', /*Droits?*/);
        
        
        // action tasks data
        $router->get($basePath. '/task/action/addData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}', ActionDataController::class, 'ProjetAchat.ActionData.addData', /*Droits?*/);
        $router->get($basePath. '/task/action/generateInput/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}', ActionDataController::class, 'ProjetAchat.ActionData.generateInput', /*Droits?*/);
        $router->get($basePath. '/task/action/validateData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}', ActionDataController::class, 'ProjetAchat.ActionData.validateData', /*Droits?*/);
        $router->get($basePath. '/task/action/gestionData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}/{idData:'.$idCategorie.'+}', ActionDataController::class, 'ProjetAchat.ActionData.gestionData', /*Droits?*/);
        $router->get($basePath. '/task/action/saveData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}/{idData:'.$idCategorie.'+}', ActionDataController::class, 'ProjetAchat.ActionData.saveData', /*Droits?*/);
        $router->get($basePath. '/task/action/edit/gestionData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}/{idData:'.$idCategorie.'+}', ActionDataController::class, 'ProjetAchat.ActionData.editGestionData', /*Droits?*/);
        $router->get($basePath. '/task/action/delete/gestionData/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}/{idData:'.$idCategorie.'+}', ActionDataController::class, 'ProjetAchat.ActionData.deleteData', /*Droits?*/);
        $router->get($basePath. '/task/action/ajaxReorderData', ActionDataController::class, 'ProjetAchat.ActionData.ajaxReorderData', /*Droits?*/);

        // action tasks actor
        $router->get($basePath. '/task/action/actor/createEdit/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}[/{idActor:'.$idCategorie.'+}]', ActionActorController::class, 'ProjetAchat.ActionActor.createEdit', /*Droits?*/);
        $router->get($basePath. '/task/action/actor/validate/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idTasks:'.$idCategorie.'+}/{idAction:'.$idAction.'+}[/{idActor:'.$idCategorie.'+}]', ActionActorController::class, 'ProjetAchat.ActionActor.validate', /*Droits?*/);
        $router->get($basePath. '/task/action/actor/generateInput/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}', ActionActorController::class, 'ProjetAchat.ActionActor.ajaxGenerateInput', /*Droits?*/);
        $router->get($basePath. '/task/action/actor/delete/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}/{idActor:'.$idCategorie.'+}', ActionActorController::class, 'ProjetAchat.ActionActor.delete', /*Droits?*/);
        
        //companies
        $router->get($basePath. '/company/create/{typeObjet:'.$typeObjet.'+}/{idModel:'.$idCategorie.'+}/{typeCompany:'.$typeObjet.'+}', CompanyController::class, 'ProjetAchat.Company.addCompany');
        $router->get($basePath. '/company/unlinkModel/{typeObjet:'.$typeObjet.'+}/{typeCompany:'.$typeObjet.'+}/{idModel:'.$idCategorie.'+}/{idCompany:'.$codeSoc.'+}', CompanyController::class, 'ProjetAchat.Company.companyUnlinkModel');
        
        //Define
        $router->get($basePath. '/define/tab/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}', PlanningController::class, 'ProjetAchat.Planning.tabDefine');
        $router->get($basePath. '/define/ajaxHierarchy/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}[/{idHierarchy:'.$idObjet.'+}]', PlanningController::class, 'ProjetAchat.Planning.ajaxHierarchy');
        $router->get($basePath. '/define/ajaxCalculPlanning/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}[/{idHierarchy:'.$idObjet.'+}]', PlanningController::class, 'ProjetAchat.Planning.ajaxCalculPlanning');
        $router->get($basePath. '/define/archivePlanning/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}', PlanningController::class, 'ProjetAchat.Planning.archivePlanning');
        
        //Ajax Global
        $router->get($basePath. '/ajax/oxadwInit', BibliothequeDonneeController::class, 'ProjetAchat.BibliothequeDonnee.ajaxCalculMotOxaDw');
        
        //Elements concerned
        $router->get($basePath. '/concernedElements/create/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}[/{typeElement:'.$typeElement.'+}]', ElementsConcernedController::class, 'ProjetAchat.ElementsConcerned.create');
        $router->get($basePath. '/concernedElements/ajax/generateInput/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}', ElementsConcernedController::class, 'ProjetAchat.ElementsConcerned.generateInput');
        $router->get($basePath. '/concernedElements/ajaxInsertElement/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}[/{typeElement:'.$typeElement.'+}/{idElement:'.$idElement.'+}]', ElementsConcernedController::class, 'ProjetAchat.ElementsConcerned.ajaxInsertElement');
        $router->get($basePath. '/concernedElements/delete/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{typeElement:'.$typeElement.'+}/{idElement:'.$idElement.'+}', ElementsConcernedController::class, 'ProjetAchat.ElementsConcerned.delete');
        $router->get($basePath. '/concernedElements/edit/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{typeElement:'.$typeElement.'+}/{idElement:'.$idElement.'+}', ElementsConcernedController::class, 'ProjetAchat.ElementsConcerned.edit');
   
        
        // DOUBLONS
        $router->get($basePath. '/doublons/rechercheDoublons', DoublonsController::class, 'ProjetAchat.Doublons.searchDoublons');
        $router->get($basePath. '/doublons/regroupementDoublons', DoublonsController::class, 'ProjetAchat.Doublons.regroupProjet');
        $router->get($basePath. '/doublons/ajaxRegroupProjet', DoublonsController::class, 'ProjetAchat.Doublons.ajaxRegroupProjet');
        $router->get($basePath. '/doublons/createSon/{idProjet:'.$idObjet.'+}', DoublonsController::class, 'ProjetAchat.Doublons.createSon');
        $router->get($basePath. '/doublons/validateSon/{idProjet:'.$idObjet.'+}', DoublonsController::class, 'ProjetAchat.Doublons.validateSon');
        
        // Analyse Projet achat
        $router->get($basePath. '/indicateur', IndicateurProjetAchatController::class, 'ProjetAchat.Indicateur.index');
    
        // Action
        $router->get($basePath. '/switchUser/{idProjet:'.$idObjet.'+}', ActeurController::class, 'ProjetAchat.Acteur.switchUser');
        $router->get($basePath. '/switchUser/confirmationSwitch/{idProjet:'.$idObjet.'+}', ActeurController::class, 'ProjetAchat.Acteur.confirmationSwitch');
        $router->get($basePath. '/switchUser/ajax/switch/{idProjet:'.$idObjet.'+}', ActeurController::class, 'ProjetAchat.Acteur.ajaxSwitch');
       
        $router->get($basePath. '/listeActor/{idProjet:'.$idObjet.'+}', ActeurController::class, 'ProjetAchat.Acteur.listeActor');
        $router->get($basePath. '/listeActor/ajax/UpdateActeur/{idProjet:'.$idObjet.'+}', ActeurController::class, 'ProjetAchat.Acteur.ajaxUpdateActeur');
        $router->get($basePath. '/listeActor/ajax/remplacer/{idProjet:'.$idObjet.'+}', ActeurController::class, 'ProjetAchat.Acteur.ajaxRemplacer');
        $router->get($basePath. '/listeActor/ajax/confirmationRemplacer/{idProjet:'.$idObjet.'+}', ActeurController::class, 'ProjetAchat.Acteur.ajaxConfirmationRemplacer');
        
        $router->get($basePath. '/modeleProjet/ajax/ConfirmationRepercussion/{idProjet:'.$idObjet.'+}', ModeleProjetController::class, 'ProjetAchat.ModeleProjet.ajaxConfirmationRepercussion');

        // SPEC 4776
        $router->get(
            $basePath.'/duplicate/{typeObjet:'.$typeObjet.'+}/{idObjet:'.$idObjet.'+}/{idAction:'.$idAction.'+}/{idDonnee:'.$idDonnee.'+}/{idRecord:'.$idCategorie.'+}/{ligne:'.$idCategorie.'}[/{idCategorie:'.$idCategorie.'+}]',
            GestionProjetAchatController::class,
            'ProjetAchat.GestionProjetAchat.duplicate'
        );

        $router->get(
            $basePath.'/ajax/ajourner/{idProjetAchat:'.$idProjetAchat.'+}',
            GestionProjetAchatController::class,
            'ProjetAchat.GestionProjetAchat.ajourne'
        );

        $router->get(
            $basePath.'/ajax/reprendre/{idProjetAchat:'.$idProjetAchat.'+}',
            GestionProjetAchatController::class,
            'ProjetAchat.GestionProjetAchat.reprendre'
        );
    }
}
