<?php
namespace Modules\Additional\Specifique\Client112;

use Psr\Container\ContainerInterface;
use Skeleton\Router;
use Skeleton\Module;
use Helpers\Parametres\Parametres;
use Skeleton\Renderer\RendererInterface;
use Modules\Additional\Specifique\Client112\Modules\Facture\Controller\GestionFactureController;
use Modules\Additional\Specifique\Client112\Modules\Facture\Controller\ParamSIContratFournisseurController;

class Specifique112Module extends Module
{

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

    // private $router, $container
    public function __construct(
        ContainerInterface $container,
    ) {
        // TODO:
        // Mettre en place modif / suppression dans le twig
        // Modifier affectation facture avec code SI pour Fact Sans Commande
        // Modifier / Suppression enregistrement nouvelle valeur dans DILISPECN
        // Ajouter vérification unicité FRS / BT-12 / SI
        $parametres     = new Parametres();
        $numFact        = $parametres->id_facture;
        $societe        = $parametres->id_societe;
        $codeFrs        = $parametres->id_fournisseur;
        $contractNumber = $parametres->id_accord_cadre;
        $codeSI         = $parametres->getUniversalCodeRegexp();

        // Redéfinition du container
        /**
         * @var Router $router
         */
        $router = $container->get(Router::class);
        $container->get(RendererInterface::class)->addPath('Specifique112', __DIR__);

        // Controller Gestion Facture
        $router->get($container->get('baseUrl') . $container->get('Specifique112.prefix') . '/CommandeReguMail/{numFact:' . $numFact . '+}/{codeSte:' . $societe . '+}', GestionFactureController::class, 'Specifique112.GestionFacture.specMail');

        $router->get($container->get('baseUrl') . $container->get('Specifique112.prefix') . '/affectationSIContrat/list', ParamSIContratFournisseurController::class, 'Specifique112.ParamSIContratFournisseur.read');
        $router->get($container->get('baseUrl') . $container->get('Specifique112.prefix') . '/affectationSIContrat/create', ParamSIContratFournisseurController::class, 'Specifique112.ParamSIContratFournisseur.create');
        $router->get($container->get('baseUrl') . $container->get('Specifique112.prefix') . '/affectationSIContrat/createView', ParamSIContratFournisseurController::class, 'Specifique112.ParamSIContratFournisseur.createView');
        $router->get(
            $container->get('baseUrl') . $container->get('Specifique112.prefix') . '/affectationSIContrat/update/{codeFrs:' . $codeFrs . '+}/{contractNumber:' . $contractNumber . '+}/{codeSI:' . $codeSI . '+}',
            ParamSIContratFournisseurController::class,
            'Specifique112.ParamSIContratFournisseur.update',
        );
        $router->get(
            $container->get('baseUrl') . $container->get('Specifique112.prefix') . '/affectationSIContrat/updateView/{codeFrs:' . $codeFrs . '+}/{contractNumber:' . $contractNumber . '+}/{codeSI:' . $codeSI . '+}',
            ParamSIContratFournisseurController::class,
            'Specifique112.ParamSIContratFournisseur.updateView',
        );
        $router->get(
            $container->get('baseUrl') . $container->get('Specifique112.prefix') . '/affectationSIContrat/delete/{codeFrs:' . $codeFrs . '+}/{contractNumber:' . $contractNumber . '+}/{codeSI:' . $codeSI . '+}',
            ParamSIContratFournisseurController::class,
            'Specifique112.ParamSIContratFournisseur.delete',
        );
    }
}
