<?php

namespace Modules\Suivi\Service;

use Helpers\Fichier\Gestion_Fic_PJ;
use Skeleton\Router;
use Helpers\Session\ParseBase1;

class RelanceService
{
    public string $typeRelance;
    public string $idDoc;
    public router $router;

    public function __construct(Router $router, string $typeRelance, string $idDoc)
    {
        $this->typeRelance = $typeRelance;
        $this->idDoc = $idDoc;
        $this->router = $router;
    }

    /**
     * @return \SimpleXMLElement
     */
    private function getWsdl()
    {
        $wsdl = '   <MailRetourIn LngUtilisation="'.$_SESSION['Session_Langue'].'">
                        <CodeUtilisateur>'.$_SESSION["Session_Login"].'</CodeUtilisateur>
                        <NumRetour>'.$this->idDoc.'</NumRetour>
                        <FichierReponse></FichierReponse>
                    </MailRetourIn>';


        if ($this->typeRelance == 'RETOUR') {
            $Methode = 'OXAPRC_MAILBRETOUR';
        } else {
            $Methode = 'OXAPRC_MAILBR_CDE';
        }

        $retour = new \Helpers\Webservice\Wsdl('Oxaproc_fournisseur.wsdl', $Methode, $wsdl, false);

        return new \SimpleXMLElement($retour->responseData);
    }

    /**
     * @return array<mixed>
     */
    public function relance()
    {
        $retour = $this->getWsdl();

        $destinataire   = (string)$retour->MailFournisseur;
        $sujet          = (string)$retour->SujetMail;

        $corpsFile      = (string)$retour->NomFicMail;
        
        if ($corpsFile && $corpsFile != '.') {
            $contentMail = (new ParseBase1())->getRep()->tmp.$corpsFile;
            $corps = file_get_contents($contentMail);
            $corps = mb_convert_encoding((string)$corps, 'UTF-8', mb_list_encodings());
            ;
        }

        $file           = (string)$retour->FichierPDF;
        if ($file) {
            $pj = $file;
        }

        return [
            'destinataire' => $destinataire,
            'sujet' => $sujet,
            'corps' => $corps??'',
            'file' => $pj??'',
            'urlChargeDoc' => (($pj??'')?
                $this->router->generateUri(
                    'GlobalApplication.ChargeDocument.chargeDocument',
                    ['emplacement' => 'tmp', 'urlFichier' => $pj]
                ) :
                ''
            ),
        ];
    }
}
