<?php

namespace Modules\DemandeAchat\Controller;

use Skeleton\Controller\Controller;
use Helpers\Fichier\Fichier;
use Helpers\Trad\Trad;
use Helpers\Session\ParseBase1;

class ImpressionGlobaleDemandeAchatController extends Controller
{
    
    public function impressionDemandeAchatAction() : string
    {
        $post = $this->request->getParsedBody();
     
        $idDA = $post['numDA'] = $this->request->getAttribute('idDA');
        $typeImpression = $this->request->getAttribute('typeImpression');
        $post['nonchiffre'] = $typeImpression=='nonchiffre' ? true : false;
        
        $xmlResult = new \Modules\DemandeAchat\WebService\ImpressionDemandeAchat();
        $xmlResult = $xmlResult->impression($post);
        $reponse = new \SimpleXMLElement($xmlResult->responseData);

        if ($reponse->Retour=="O") {
            $fichierPdf = $reponse->FichierPDF;
            $url = $fichierPdf;
            $message = Fichier::UploadClient($url, "DA_".($post['nonchiffre'] ? 'NonChiffre' : 'Chiffre')."_".$idDA."_".date('dmY').'.pdf');
            return $message;
        } else {
            $erreur = $reponse->MsgErreur;
        }
        
        return $erreur;
    }
    
    public function impressionGlobaleAction() : string
    {
        $post = $this->request->getParsedBody();
        $typeImpression = $this->request->getAttribute('typeImpression');
        $trad = $this->getTranslationService();
        
        $titre = $trad->t('Impression des Demandes d\'achat');
        if ($typeImpression=='nonchiffre') {
            $titre = $trad->t('Impression des Demandes d\'achat non valorisée');
        }

        return $this->renderer->render('@DemandeAchat/ImpressionGlobaleDemandeAchat/impressionGlobale', [
            'menuActive'   => 'CollecteBesoins',
            'menuLeft'     => 'GestionDemandeAchat',
            'post'         => $post,
            'titre'        => $titre,
            'SocUsrProfil' => $_SESSION['Session_SocUsrProfil'] ?? '',
            'dir_tmp'      => (new ParseBase1())->getRep()->tmp,
        ]);
    }
    
    public function pdfImpressionGlobaleAction() : string
    {
        $post = $this->request->getParsedBody();
        $trad = $this->getTranslationService();
        
        $trad = $this->getTranslationService();

        $validator = $this->createValidator();
        
        $validator->zoom('Societe', $post['CODE_STE'], $trad->t('Société'), $this->pdo);
        
        $validator->isInteger($trad->t('Numéro de DA début'), $post['NUM_DA_MIN']);
        $validator->isInteger($trad->t('Numéro de DA fin'), $post['NUM_DA_MAX']);
        $validator->isTrue(($post['NUM_DA_MIN']!='' && $post['NUM_DA_MAX']!='' && $post['NUM_DA_MIN']>$post['NUM_DA_MAX']), '<br />'.$trad->t("Le numéro de fin doit être supérieur au numéro de début."));
        
        $validator->isDate($post['DTE_EMISS_MIN'], '', '', true, $trad->t('Date de création début'));
        $validator->isDate($post['DTE_EMISS_MAX'], '', '', true, $trad->t('Date de création fin'));
        $validator->isTrue(($post['DTE_EMISS_MIN']!='' && $post['DTE_EMISS_MAX']!='' && $post['DTE_EMISS_MIN']>$post['DTE_EMISS_MAX']), '<br />'.$trad->t("La date de création de fin doit être supérieure à la date de création de début."));
        
        $validator->zoom('HASTUTIL', $post['NO_DEM'], $trad->t('Demandeur'), $this->pdo, true, ['filter_DEMAND' => 'T']);
        $validator->zoom('Centrana', $post['CENTRE_ANALYSE'], $trad->t('Centre d\'analyse'), $this->pdo, true);
        $validator->zoom('Sscptana', $post['SSCPTEANA'], $trad->t('Sous compte d\'analyse'), $this->pdo, true);
        $validator->zoom('Sectimpu', $post['SECTIMP'], $trad->t('Section d\'imputation'), $this->pdo, true);
        $validator->zoom('Fourniss', $post['FOU'], 'Fournisseur', $this->pdo, true);
        $validator->zoom('typeDoc', $post['TYP_DOC'], $trad->t('Type de document'), $this->pdo, true);

        if ($validator->isValid()) {
            $post['ModeListeDA'] = 'TRUE';

            $xmlResult = new \Modules\DemandeAchat\WebService\ImpressionDemandeAchat();
            $xmlResult = $xmlResult->impression($post);
            $reponse = new \SimpleXMLElement($xmlResult->responseData);

            
            if ($reponse->Retour =="O") {
                $fichierPdf = (string)$reponse->FichierPDF;
                
                $url = $fichierPdf;
                $url = $this->router->generateUri('Ajax.outil.downloadPdf', ['url' => (string)str_replace('.pdf', '', $url)]);
                return \json_encode(['statut' => 'O', 'url' => $url]);
            } else {
                return \json_encode(['statut' => $reponse->Retour, 'erreur' => $reponse->MsgErreur]);
            }
        }
            
        return \json_encode(['statut' => '', 'erreur' => $validator->getError()]);
    }
}
