<?php

class RelanceBR
{

    const fichierXsl = 'application/xsl/popup_relance_br.xsl';

    const id_main = 'div_main';

    const id_form = 'popup_rel_br';

    const id_choix_panel = 'choix_panel';

    private $no_br;

    private $OnEstEnBRetour;

    function __construct(& $no_br, $OnEstEnBRetour)
    {
        $no_br_tmp = trim($no_br);
        if ('' != $no_br_tmp) {
            $this->no_br = $no_br_tmp;
        }
        $this->OnEstEnBRetour = $OnEstEnBRetour;
    }

    static function &getUrlAction(& $action)
    {
        $js = 'popup_relance_BR.php?action=' . urlencode($action);
        return $js;
    }

    static function &getJSUrlAction(& $action, $valeur = '')
    {
        $js = 'CallUrl(\'' . RelanceBR::getUrlAction($action);
        if ('' != $valeur)
            $js .= '&valeur=' . urlencode($valeur);
        $js .= '\');';
        return $js;
    }

    static function &getJSUrlActionForm(& $action, & $NomFichier)
    {
        $js = 'TraiteUrlAsync(\'' . RelanceBR::getUrlAction($action) . '&fichier=' . urlencode($NomFichier) . '\', this);';
        return $js;
    }

    /**
     * Construction de l'écran complet
     * 
     * @param unknown $prixRefBud
     *            : est-ce qu'on affiche le prix (P) ou le budget (B) ?
     * @return Ambigous <string, multitype:NULL string >
     */
    function &buildXml()
    {
        $array = null;
        $arrayResult = array();
        
        $arrayResult = RelanceBR::CallWsdlInitMail($this->no_br, $this->OnEstEnBRetour);
        $NomFichier = (array_key_exists('FichierPDF', $arrayResult)) ? $arrayResult['FichierPDF'] : '';
        
        // $arrayResult['FichierPDF']
        
        if ($NomFichier != '') {
            $array['popup_title'] = Trad('Mail bon de retour');
        } else {
            $array['popup_title'] = Trad('Mail de relance');
        }
        
        $key = 'Destinataire';
        $modifiable = true;
        $valeur = $arrayResult['MailFournisseur'];
        $libelle_champ = Trad('Destinataires :');
        $size = 50;
        
        $compXsl = new ComposantXslTexte($key, $modifiable);
        $compXsl->setValeur($valeur);
        $compXsl->setSize($size);
        $array['Destinataire'] = $compXsl->buildXml();
        $array[$key]['!libelle_chp'] = $libelle_champ;
        
        $key = 'Sujet';
        $modifiable = true;
        $valeur = $arrayResult['SujetMail'];
        $libelle_champ = Trad('Sujet :');
        $size = 50;
        
        $compXsl = new ComposantXslTexte($key, $modifiable);
        $compXsl->setValeur($valeur);
        $compXsl->setSize($size);
        $array['Sujet'] = $compXsl->buildXml();
        $array[$key]['!libelle_chp'] = $libelle_champ;
        
        $valeur = '';
        $NomFicMail = $arrayResult['NomFicMail'];
        
        if ($NomFicMail != '' && ! is_null($NomFicMail)) {
            $cheminTMP = Fichier::getCheminTmp();
            $cheminComplet = $cheminTMP . $NomFicMail;
            $valeur = Fichier::LireContenuFichier($cheminComplet);
            $valeur = utf8_encode($valeur);
        }
        
        $key = 'Corps';
        $modifiable = true;
        $libelle_champ = Trad('Corps :');
        $size = 50;
        
        $compXsl = new ComposantXslTexte($key, $modifiable);
        $compXsl->setValeur($valeur);
        $compXsl->setRowsCols(10, $size);
        $array['Corps'] = $compXsl->buildXml();
        $array[$key]['!libelle_chp'] = $libelle_champ;
        
        if ($NomFichier != '') {
            $key = 'Lien';
            $libelle = trad('PJ : Impression BR');
            $action = 'window.open("' . Fichier::GetURL('tmp', $NomFichier, 'impressionPdfBR.pdf') . '","pj_br");';
            $fichiercomplet = $cheminTMP . $NomFichier;
            
            $compXsl = new ComposantXslAction($key);
            $compXsl->setLibelle($libelle);
            $compXsl->setAction($action);
            $compXsl->setValeur($fichiercomplet);
            $array['Lien'] = $compXsl->buildXml();
        }
        
        $idBtn = 'envoi_mail';
        $lblBtn = Trad('Envoyer');
        $titleBtn = Trad('Envoyer le mail');
        $actionBtn = 'if (confirm("' . cnv_to_javascript(Trad('Confirmez-vous l\'envoi de ce mail')) . ' ?")) ' . RelanceBR::getJSUrlActionForm($idBtn, $NomFichier);
        
        $btn = new ComposantXslAction($idBtn);
        $btn->setAction($actionBtn);
        $btn->setLibelle($lblBtn);
        $btn->setTitle($titleBtn);
        $btn->setEstPrimaire(true);
        $array['btn']['valider'] = $btn->buildXml();
        
        return $array;
    }

    static function &checkValue(& $data)
    {
        $messageErreur = '';
        if ((is_null($data) || '' == $data)) {
            $messageErreur = trad('Veuillez saisir au moin un destinataire');
        } else {
            $NbDestinataire = mb_substr_count($data, '@');
            if ($NbDestinataire >= 1) {
                if (mb_substr_count($data, ',') != $NbDestinataire - 1) {
                    $messageErreur = trad('Le séparateur doit être une virgule');
                }
            } else
                $messageErreur = trad('Adresse mail du destinataire invalide');
        }
        
        return $messageErreur;
    }

    static function CallWsdlInitMail($no_br, $OnEstEnBRetour = false)
    {
        $Methode = '';
        
        if ($OnEstEnBRetour) {
            $Methode = 'OXAPRC_MAILBRETOUR';
        } else {
            $Methode = 'OXAPRC_MAILBR_CDE';
        }
        $envoi = '<CodeUtilisateur>' . $_SESSION['Session_Login'] . '</CodeUtilisateur>' . '<NumRetour>' . $no_br . '</NumRetour>' . '<FichierReponse></FichierReponse>';
        $envoi = '<MailRetourIn LngUtilisation="' . $_SESSION['Session_Langue'] . '">' . $envoi . '</MailRetourIn>';
        
        if ($res = Wsdl::wsdlCallGen('Oxaproc_AO.wsdl', $Methode, $envoi)) {
            /*
             * if ($res['Statut'] == 'O'){
             * return true;
             * }
             * else
             * return false;
             */
            return $res;
        }
    }

    static function CallWsdlEnvoiMail($Destinataire, $Sujet, $Corps, $CheminPJ = '')
    {
        $ListeDestinataire = explode(',', $Destinataire);
        
        $envoiMail = '';
        foreach ($ListeDestinataire as $desti) {
            $envoiMail .= '<Mail>' . $desti . '</Mail>';
        }
        
        $envoi = '<User>' . $_SESSION['Session_Login'] . '</User>' . '<ListDest>' . $envoiMail . '</ListDest>' . '<Sujet>' . $Sujet . '</Sujet>' . '<Corps>' . $Corps . '</Corps>';
        
        if ($CheminPJ != '') {
            $envoi = $envoi . '<ListPJ>' . '<PJ>' . Fichier::getCheminTmp() . $CheminPJ . '</PJ>' . '</ListPJ>';
        }
        
        $envoi = '<MailIn LngUtilisation="' . $_SESSION['Session_Langue'] . '">' . $envoi . '</MailIn>';
        
        $res = Wsdl::wsdlCallGen('Oxaproc_AO.wsdl', 'OXAPRC_ENVOIMAIL', $envoi);
    }
}