<?php
namespace Modules\API\APIInterne\OxaMobility\Controller;

use Firebase\JWT\JWT;
use SimpleXMLElement;
use Helpers\Outil\Sql;
use Helpers\Trad\Trad;
use Skeleton\Controller\Controller;
use Helpers\Outil\Outils;
use Helpers\Fichier\Fichier;
use Modules\API\APIInterne\OxaMobility\Outil\OutilExtension;

// phpcs:ignore
class PAGE_PanierController extends Controller
{
    public function init() : void
    {
        /** A deplacer dans absAPIcontroller plus tard car pas top */
        $trad = $this->getTranslationService();
        if ($trad instanceof Trad) {
            $trad->setLang($_SESSION['Session_Langue']);
        }
    }


    public function INITAction($body = [], $jwtPayload = [], $json = true)
    {
        $trad = $this->getTranslationService();
        $return['Trads']['MLS_Txt_Societe']                 = $trad->t('Société');
        $return['Trads']['MLS_Txt_SI']                      = $trad->t('Section d\'imputation');
        $return['Trads']['MLS_Txt_CDC']                     = $trad->t('Code complémentaire');
        $return['Trads']['MLS_Txt_SCA']                     = $trad->t('Sous-compte d\'analyse');
        $return['Trads']['MLS_Txt_CodeGestion']             = $trad->t('Code gestion');
        $return['Trads']['MLS_Txt_CTR_L']                   = $trad->t('Centre de livraison');
        $return['Trads']['MLS_Txt_TotalCde']                = $trad->t('Total de la commande (HT)') . $trad->colon();
        $return['Trads']['MLS_Btn_Soumettre']               = $trad->t('Soumettre mon panier');
        $return['Trads']['MLS_Btn_Vider']                   = $trad->t('Vider le panier');
        $return['Trads']['MLS_Btn_RetourNvelleCde']         = $trad->t('Nouvelle commande');
        $return['Trads']['MLS_Confirm_Suppr']               = $trad->t('Confirmez-vous la suppression de ce panier ?');
        $return['Trads']['MLS_Txt_Err_Regroup']             = $trad->t('Le critère de regroupement n\'est pas identique pour toutes les lignes d\'un même fournisseur.');
        $return['Trads']['MLS_Txt_Err_Panier_Soc']          = $trad->t('Votre panier en cours concerne la société %1. Vous devez vous reconnecter sur cette société.');
        $return['Trads']['MLS_Txt_Err_Panier_Vide']         = $trad->t('Votre panier est vide.%1Vous allez être redirigé vers la page d\'accueil.');
        $return['Trads']['MLS_Txt_Err_Code_Oblig']          = $trad->t('Ce code est obligatoire');
        $return['Trads']['MLS_Txt_Err_Panier_Conditions']   = $trad->t('Toutes les conditions ne sont pas réunies pour transformer ce panier en commande,%1 veuillez modifier votre panier ou utiliser Oxaproc.');
        $return['Trads']['MLS_Txt_Err_Panier']              = $trad->t('Une erreur s\'est produite.%1%2%3Code retour : %4');
        $return['Trads']['MLS_Fournisseur']                 = $trad->t('Fournisseurs') . $trad->colon();
        $return['Trads']['MLS_Site_Stock']                  = $trad->t('Site de stock') . $trad->colon();
        $return['Trads']['MLS_Articles']                    = $trad->t('Articles') . $trad->colon();
        $return['Trads']['MLS_TotalHT']                     = $trad->t('Total HT');
        $return['Trads']['MLS_Recapitulatif']               = $trad->t('Récapitulatif');
        $return['Trads']['MLS_DateLivraison']               = $trad->t('Date de livraison');
        
        $return['Trads']['MLS_Titre_Panier']                = $trad->t('Valider mon panier');
        $return['Trads']['MLS_Titre_PanierModele']          = $trad->t('Visualisation panier modèle');


        $societe = new \Entity\Model\Societe($this->pdo);
        $socUser = $societe->find($body['CodeSoc']);
        $return['Session']['RS_Soc'] = $socUser['RAIS_SOC'];


        
        $si = new \Entity\Model\Sectimpu($this->pdo);
        $sectionImputation = $si->find($body['CodeSI']);
        $return['Session']['LibSI'] = $sectionImputation['LIBELLE'];
        $return['Session']['SI_AvecCG'] = \Helpers\Outil\Sql::boolSql($sectionImputation['SICODG']);
        $return['Session']['SI_AvecCGoblig'] = \Helpers\Outil\Sql::boolSql($sectionImputation['IMPCODG']);

        $cdc = new \Entity\Model\Codecomp($this->pdo);
        $cdcUser = $cdc->find($body['CodeCDC']);
        $return['Session']['LibCDC'] = $cdcUser['LIBELLE'];
        
        $sca = new \Entity\Model\Sscptana($this->pdo);
        $scaUser = $sca->find($body['CodeSCA']);
        $return['Session']['LibSCA'] = $scaUser['LIBELLE'];

        $centre = new \Entity\Model\Centre($this->pdo);
        $centreEmet = $centre->find($body['CodeCtrEmetteur']);
        $return['Session']['LibCtrEmetteur'] = $centreEmet['RAIS_SOC'];
        
        $centreLivr = $centre->find($body['CodeCtrLivraison']);
        $return['Session']['LibCtrLivraison'] = $centreLivr['RAIS_SOC'];

        $return['Session']['ExisteCodeSoc'] = (isset($socUser['CODE_STE']) && $socUser['CODE_STE']!= '')? 'true' : 'false';
        $return['Session']['ExisteCodeSI'] = (isset($sectionImputation['CODE_SI']) && $sectionImputation['CODE_SI']!= '')? 'true' : 'false';
        $return['Session']['ExisteCodeCDC'] = (isset($cdcUser['CODE_CDC']) && $cdcUser['CODE_CDC']!= '')? 'true' : 'false';
        $return['Session']['ExisteCodeSCA'] = (isset($scaUser['CODE_SCA']) && $scaUser['CODE_SCA']!= '')? 'true' : 'false';
        $return['Session']['ExisteCodeCtrEmetteur'] = (isset($centreEmet['CODE_CTR']) && $centreEmet['CODE_CTR']!= '')? 'true' : 'false';
        $return['Session']['ExisteCodeCtrLivraison'] = (isset($centreLivr['CODE_CTR']) && $centreLivr['CODE_CTR']!= '')? 'true' : 'false';


        if ($return['Session']['ExisteCodeSoc'] == 'false') {
            $return['Session']['MessageErreurSoc'] = $trad->t('Société inconnue');
        }

        if ($return['Session']['ExisteCodeSI'] == 'false') {
            $return['Session']['MessageErreurSI'] = $trad->t('Section d\'imputation inconnue');
        }

        if ($return['Session']['ExisteCodeCDC'] == 'false') {
            $return['Session']['MessageErreurCDC'] = $trad->t('Code complémentaire inconnu');
        }

        if ($return['Session']['ExisteCodeSCA'] == 'false') {
            $return['Session']['MessageErreurSCA'] = $trad->t('Sous-compte d\'analyse inconnu');
        }

        if ($return['Session']['ExisteCodeCtrEmetteur'] == 'false') {
            $return['Session']['MessageErreurCtrEmetteur'] = $trad->t('Centre émetteur inconnu pour la société %1');
        }

        if ($return['Session']['ExisteCodeCtrLivraison'] == 'false') {
            $return['Session']['MessageErreurCtrLivraison'] = $trad->t('Centre livraison inconnu pour la société %1');
        }

        $langues = new \Entity\Model\Langues($this->pdo);
        foreach ($langues->fetchAll() as $lang) {
            $return['Langues'][$lang['COD_LNG']] = [
                'Code' => $lang['COD_LNG'],
                'Lib' => $lang['LIBELLE']
            ];
        }
        return OutilExtension::checkExtension($body, $return, $json);
    }
}
