<?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);
    }
    
    /**
     * getNumConsultation
     *
     * @param  array<mixed> $post
     * @return Wsdl
     */
    public function getNumConsultation(array $post): Wsdl
    {
        $xml = "<AONumIn LngUtilisation='" . $_SESSION['Session_Langue'] . "'>
                    <CodeSociete>" . $post['CODE_STE'] . "</CodeSociete>
                    <TypeSG>" . $post['TYPE_SG'] . "</TypeSG>
                </AONumIn>";
        return new Wsdl('', 'OXAPRC_AO_DONNE_NUM', $xml, false);
    }
}
