<?php

namespace Modules\Reception\WebService;

use Helpers\Webservice\Wsdl;

class BR
{
    /**
     * @param array<string> $body
     * @param array<mixed>[] $ligneBR
     * @param array<string> $entete
     */
    public static function creationBR($body, $ligneBR, $entete) :Wsdl
    {
        $envoiWSDL = "<BRIn  LngUtilisation='".$body['LngUtilisation']."'>";
        $envoiWSDL .="<Utilisateur>".$body['Utilisateur']."</Utilisateur>";
        $envoiWSDL .="<Type>R</Type>";
        $envoiWSDL .="<Mode>C</Mode>";
        $envoiWSDL .="<NumBR></NumBR>";
        $envoiWSDL .="<NumCde>".$entete['NumCde']."</NumCde>";
        $envoiWSDL .="<RefBL>".$entete['BON_LIVR']."</RefBL>";
        $envoiWSDL .="<DateBL>".$entete['DATE_BL']."</DateBL>";
        $envoiWSDL .="<DatePer></DatePer>";
        $envoiWSDL .="<Comment>".$entete['COMMENT']."</Comment>";
        $envoiWSDL .="<ListLigBR >";
        foreach ($ligneBR as $ligne) {
            $envoiWSDL .="<LigBR>
            <LigCde>".$ligne['NO_PO']."</LigCde>
            <TypeRecepMnt>false</TypeRecepMnt>
            <QteRecep>".$ligne['QTE']."</QteRecep>
            <QteCompt>".$ligne['QTE']."</QteCompt>
            <QteAccept>".$ligne['QTE']."</QteAccept>
            <ListCarComp>";
            foreach ($ligne['ListCarComp'] as $carComp) {
                $isTitle = \Helpers\Outil\Sql::convertBooleenCheckboxForWsdlTrueFalse($carComp['CC_IS_TITLE']);
                $required = \Helpers\Outil\Sql::convertBooleenCheckboxForWsdlTrueFalse($carComp['CC_REQUIRED']);
                $envoiWSDL .="
                <CarComp>
                    <CC_ID>".$carComp['CC_ID']."</CC_ID>
                    <CC_IS_TITLE>".$isTitle."</CC_IS_TITLE>
                    <CC_NAME>".htmlspecialchars($carComp['CC_NAME'])."</CC_NAME>
                    <CC_TYPE>".$carComp['CC_TYPE']."</CC_TYPE>
                    <CC_REQUIRED>".$required."</CC_REQUIRED>
                    <CC_VALUE>".htmlspecialchars($carComp['CC_VALUE'])."</CC_VALUE>
                </CarComp>";
            }
            
            $envoiWSDL .="</ListCarComp></LigBR>";
        }
        
        $envoiWSDL .="</ListLigBR >";
        $envoiWSDL .= "</BRIn>";
        
        return new \Helpers\Webservice\Wsdl('Oxaproc_Gen.wsdl', 'OXAPRC_ENREGBR', $envoiWSDL, false);
    }

    /**
     * @param string $codeBr
     * @param string $codeInc
     * @param string $motif
     * @param string $description
     * @param string $dateCreation
     * @param string $idFrs
     * @param string $numCde
     */
    public static function creationIncidentBR($codeBr, $codeInc, $motif, $description, $dateCreation, $idFrs, $numCde) :Wsdl
    {
        $xml =  '<IncFournisseurIN LngUtilisation="">
                    <Utilisateur>'.$_SESSION['Session_Login'].'</Utilisateur>
                    <CodeFournisseur>'.$idFrs.'</CodeFournisseur>
                    <Niveau></Niveau>
                    <DateOccurence>'.date("Ymd").'</DateOccurence>
                    <CodeIncid>'.$codeInc.'</CodeIncid>
                    <Description>'.$motif.'</Description>
                    <CodeCde>'.$numCde.'</CodeCde>
                    <LigCA></LigCA>
                    <CodeBR>'.$codeBr.'</CodeBR>
                    <LigBR></LigBR>
                    <CodeArticle></CodeArticle>
                    <DesignArticle></DesignArticle>
                    <Qte></Qte>
                    <DateLiv></DateLiv>
                    <DateCreat>'. $dateCreation .'</DateCreat>
                    <MemoComm>'. $description .'</MemoComm>
                </IncFournisseurIN>
        ';
    
        return new \Helpers\Webservice\Wsdl('Oxaproc_Gen.wsdl', 'OXAPRC_FRN_INCIDENT', $xml, false);
    }
    
    /**
     * valDevalSuppBr
     *
     * @param  string $mode
     * @param  int $numBr
     * @return Wsdl
     */
    public static function valDevalSuppBr(string $mode, int $numBr): Wsdl
    {
        $xml = '<BRIn LngUtilisation="' . $_SESSION['Session_Langue'] . '">
                    <Utilisateur>' . $_SESSION['Session_Login'] . '</Utilisateur>
                    <NumBR>' . $numBr . '</NumBR>
                    <Mode>' . $mode . '</Mode>
                </BRIn>';

        return new Wsdl('Oxaproc_Gen.wsdl', 'OXAPRC_VALDEVALSUPBR', $xml, false);
    }
}
