<?php

namespace Modules\Consultation\WebService;

use Helpers\Webservice\Wsdl;

class Consultation
{
    

    // phpcs:ignore
    public function refAo_ACC_REF($array): Wsdl
    {
        Wsdl::XmlEntities($array);
        
        $xml = "<RefAO_In LngUtilisation='".$_SESSION['Session_Langue']."'>
                    <Utilisateur>".$array['Utilisateur']."</Utilisateur>
                    <NumAO>".$array['NumAO']."</NumAO>
                    <CODE_FOUR>".$array['CODE_FOUR']."</CODE_FOUR>
                    <Mode>".$array['Mode']."</Mode>
                    <Commentaire>".$array['Commentaire']."</Commentaire>
                </RefAO_In>";
        
        return new Wsdl('', 'OXALINK_REF_AO_ACC_REF', $xml, false);
    }
    
    
    public function importModele($idAo, $idModele): Wsdl
    {
        $xml = "<ImportModeleQuestionAOIn LngUtilisation='".$_SESSION['Session_Langue']."'>
                    <CodeUtilisateur>".$_SESSION["Session_Login"]."</CodeUtilisateur>
                    <NumAO>$idAo</NumAO>
                    <IDModele>$idModele</IDModele>
                </ImportModeleQuestionAOIn>";

        return new Wsdl('Oxaproc_AO.wsdl', 'SRM_AO_IMPORT_MODELE', $xml, false);
    }
    
    /**
     * Summary of importBibliotheque
     * @param mixed $idAo
     * @param mixed $typeImport
     * @param mixed $themeCible
     * @param mixed $themeBibliotheque
     * @param mixed $listeQuestion
     * @param mixed $importBibliotheque
     * @return Wsdl
     */
    public function importBibliotheque($idAo, $typeImport, $themeCible = '', $themeBibliotheque = '', $listeQuestion = [], $importBibliotheque = false)
    {
        
        $listeQuestionXML = '';
        foreach ($listeQuestion as $question) {
            $listeQuestionXML .= "<Question>".$question."</Question>";
        }

        $xml = "<ImportBiblioQAOIn LngUtilisation='".$_SESSION['Session_Langue']."'>
					<Utilisateur>".$_SESSION["Session_Login"]."</Utilisateur>
					<NumAO>$idAo</NumAO>
					<TypeImport>$typeImport</TypeImport>
					<IDThemeCible>$themeCible</IDThemeCible>
					<IDThemeBibli>$themeBibliotheque</IDThemeBibli>
					<ListeQuestions>$listeQuestionXML</ListeQuestions>
                    <ImpQuestFourn>".($importBibliotheque? 'true':'false')."</ImpQuestFourn>
				</ImportBiblioQAOIn>";
        
        return new Wsdl('Oxaproc_AO.wsdl', 'SRM_AO_IMPORT_QUESTIONS', $xml, false);
    }
    
    public function impressionConsultation($idAo, $typeTarif = false, $tousFournisseur = '', $typeFG = '', $codeFrs = ''): Wsdl
    {
        $xml = "<ImprReponseAOIn LngUtilisation='".$_SESSION['Session_Langue']."'>
                    <Utilisateur>".$_SESSION["Session_Login"]."</Utilisateur>
                    <NumAO>$idAo</NumAO>
                    <TypeTarif>".($typeTarif ? 'M' : 'D')."</TypeTarif>
                    <TousOuUnFournisseur>$tousFournisseur</TousOuUnFournisseur>
                    <TypeFournisseur>$typeFG</TypeFournisseur>
                    <CodeFournisseur>$codeFrs</CodeFournisseur>
                </ImprReponseAOIn>";
        
        return new Wsdl('Oxaproc_AO.wsdl', 'OXAPRC_AO_IMP_REPONSE', $xml, false);
    }
    
    /** */
    public function valideChoixFrsRetenu(int|string $idAo, string $emailAutoRetenu, string $emailAutoNonRetenu): Wsdl
    {
        $xml = "<AOIn LngUtilisation='".$_SESSION['Session_Langue']."'>
                    <Utilisateur>".$_SESSION["Session_Login"]."</Utilisateur>
                    <NumAO>".$idAo."</NumAO>
                    <MailFrsRetenus>".$emailAutoRetenu."</MailFrsRetenus>
                    <MailFrsNonRetenus>".$emailAutoNonRetenu."</MailFrsNonRetenus>
                </AOIn>";
        
        return new Wsdl('Oxaproc_AO.wsdl', 'OXAPRC_AO_VALCHXFOURN', $xml, false);
    }
    
    public function impressionComparatif($idAO): Wsdl
    {
        $xml = "<ImpCompAOIn LngUtilisation='".$_SESSION['Session_Langue']."'>
                    <Utilisateur>".$_SESSION["Session_Login"]."</Utilisateur>
                    <NumAO>$idAO</NumAO>
                </ImpCompAOIn>";
        
        return new Wsdl('Oxaproc_AO.wsdl', 'OXAPRC_AO_COMPMOINSDISANT', $xml, false);
    }

    /**
     *
     * @param string $idAo
     * @param array $listeFrs
     */
    //public function sendConsultation($idAo, $parMail, $formatEdition, $tousOuUnFournisseur, $excel, $listeFrs, $frsSelected = null, $typeFGSelected : Wsdl= null)
    public function sendConsultation($idAo, $formatEdition, $listeFrs): Wsdl
    {
        $xml = "<ImprAOIn LngUtilisation='".$_SESSION['Session_Langue']."'>
                <Utilisateur>".$_SESSION["Session_Login"]."</Utilisateur>
                <NumAO>$idAo</NumAO>
                <FormatEdition>$formatEdition</FormatEdition>
                <TousOuUnFournisseur>T</TousOuUnFournisseur>
                <ListeFournisseurs>";

        foreach ($listeFrs as $frs) {
            $ListDest = '<ListDest>';
            foreach (explode(',', $frs['emails']) as $email) {
                $ListDest .= "<Mail>" . $email . "</Mail>";
            }
            $ListDest .= '</ListDest>';
            
            $xml .= "
                    <Fournisseur>
                        <TypeFournisseur>".$frs['TYPE_FG']."</TypeFournisseur>
                        <CodeFournisseur>".$frs['CODE_FOU']."</CodeFournisseur>
                        ".$ListDest."
                        <ParMail>".($frs['parMail']? 'true':'false')."</ParMail>
                        <ParExcel>".($frs['formatExcel']? 'true':'false')."</ParExcel>
                        <FormatExcel>".$frs['typeFormatExcel']."</FormatExcel>
                        <VersionFormat>".$frs['versionFormat']."</VersionFormat>
                    </Fournisseur>
            ";
        }
        $xml .= "</ListeFournisseurs>
                </ImprAOIn>";
        
        return new Wsdl('Oxaproc_AO.wsdl', 'OXAPRC_IMPRIMEAO', $xml, false);
    }
    
    public function getNumConsultation($codeSte): Wsdl
    {
        $xml = "<AONumIn LngUtilisation='".$_SESSION['Session_Langue']."'>
                    <CodeSociete>".$codeSte."</CodeSociete>
                </AONumIn>";
        return new Wsdl('', 'OXAPRC_AO_DONNE_NUM', $xml, false);
    }
}
