<?php

namespace Modules\ProjetAchat\WebService;

use Helpers\Parametres\Constante;
use Helpers\Session\ParseBase1;

class Projet
{

    private function getUrlOxaproc()
    {
        $sec = (new ParseBase1())->getHttps()? 'https' : 'http';
        $broker = (new ParseBase1())->getBroker()=='1'? '':(new ParseBase1())->getBroker();
        
        $urlOxaproc = $sec.'://'.(new ParseBase1())->getServer().'/oxaproc'.$broker.'/index/connexion/NULL/NULL/projetAchat/<ID_USER>/0/0/<ID_ACTION>';

        return htmlspecialchars($urlOxaproc);
    }

    public function getNumRefProjet($modele)
    {
        $envoi = '<DOANumRefIn LngUtilisation="'.$_SESSION['Session_Langue'].'">
					<CodeSociete>'.$_SESSION['Session_SocUsr'].'</CodeSociete>
					<PourModele>'.($modele? 'true':'false').'</PourModele>
				</DOANumRefIn>';
        
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_DOA_DONNE_NUM_REF', $envoi, false);
    }
    
    public function wsdlSupDOA($id)
    {
        $envoi = "<SupprimeDOAIn LngUtilisation='{$_SESSION['Session_Langue']}'>
                    <ID_DOA>" . $id . "</ID_DOA>
                    <CodeUtilisateur>" . $_SESSION['Session_Login'] . "</CodeUtilisateur>
                  </SupprimeDOAIn>";

        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_DOA_SUPPRESSION', $envoi, false);
    }
    
    public function wsdlDuplication($idDoa, $modele, $array, $cs, $fils = false, $repriseDonnes = null, $repriseTachesActions = null)
    {
        $spliter = Constante::spliter;
        
        $envoi = "<DupliDOAIn LngUtilisation='{$_SESSION['Session_Langue']}'>
                        <ID_DOA>$idDoa</ID_DOA>
                        <LibNouveau>".htmlspecialchars($array['LIB'])."</LibNouveau>
                        <RefNouveau>".htmlspecialchars($array['REF'])."</RefNouveau>
                        <CreerModele>".($modele? 'true':'false')."</CreerModele>
                        <CodeUtilisateur>".$_SESSION['Session_Login']."</CodeUtilisateur>
                        <DescrNouveau>".htmlspecialchars($array['DESCR'])."</DescrNouveau>
                        <IdTypeNouveau>".$array['ID_TYPE']."</IdTypeNouveau>
                        <CodeOpeNouveau>".$array['CODE_OPE']."</CodeOpeNouveau>
                        <ProprietaireNouveau>".$array['PROPRIETAIRE']."</ProprietaireNouveau>
                        <PrescripteurNouveau>".($array['PRESCRIPTEUR']??'')."</PrescripteurNouveau>
                        <CtrEmettNouveau>".($array['CTR_EMETT']??'')."</CtrEmettNouveau>
                        <DateDebNouveau>".($array['DATE_DEB']??'')."</DateDebNouveau>
                        <DateFinNouveau>".($array['DATE_FIN']??'')."</DateFinNouveau>
                        <IdCalNouveau>".$array['ID_CAL']."</IdCalNouveau>
                        <ModeplanningNouveau>".($array['MODEPLANNINGTrueFalse'] ?? false)."</ModeplanningNouveau>
                        <ListChpSup>";
        
        foreach ($cs as $key => $val) {
            if (substr($key, 0, 12) == 'CS_EXTENTION') {
                $splitKey = explode($spliter, $key);
                
                $envoi .= " <ChpSup>
                                <CSNumFixe>".$splitKey[3]."</CSNumFixe> 
                                <CSValeur>".htmlspecialchars($val)."</CSValeur> 
                            </ChpSup>";
            }
        }
        
        $envoi .= "     </ListChpSup>";
        
        if ($fils) {
            $envoi .= "  <Fils>
                            <Creation>true</Creation>
                            <RepriseDonnes>".($repriseDonnes? 'true':'false')."</RepriseDonnes>
                            <RepriseTachesActions>".($repriseTachesActions? 'true':'false')."</RepriseTachesActions>
                        </Fils>";
        }
        
        $envoi .= " </DupliDOAIn> ";

        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_DOA_DUPLICATION', $envoi, false);
    }
    
    public function importModele($idDoa, $idModele)
    {
        
        $envoi = "<DupliDOAIn LngUtilisation='{$_SESSION['Session_Langue']}'>
                        <ID_DOA>$idModele</ID_DOA>
                        <ID_DOA_Cible>$idDoa</ID_DOA_Cible>
                  </DupliDOAIn> ";
        
        
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_DOA_DUPLICATION', $envoi, false);
    }
    
    public function wsdlValiderProjet($idObjet, $confirmation = false)
    {
        $envoi = "<ValidDOAIn LngUtilisation='{$_SESSION['Session_Langue']}'>
                      <CodeUtilisateur>{$_SESSION['Session_Login']}</CodeUtilisateur>
                      <ID_DOA>$idObjet</ID_DOA>
                      <Confirmation>".($confirmation? 'true':'false')."</Confirmation>
                      <URL_ACTION>".$this->getUrlOxaproc()."</URL_ACTION>
                  </ValidDOAIn>";
        
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_DOA_VALIDATION', $envoi, false);
    }
    
    public function wsdlDevaliderProjet($idObjet)
    {
        $envoi = "<DevalDOAIn LngUtilisation='{$_SESSION['Session_Langue']}'>
                      <CodeUtilisateur>{$_SESSION['Session_Login']}</CodeUtilisateur>
                      <ID_DOA>$idObjet</ID_DOA>
                  </DevalDOAIn>";
        
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_DOA_DEVALIDATION', $envoi, false);
    }

    
    public function wsdlClotureProjet($idObjet, $confirmation = false)
    {
        $envoi = "<ClotureDOAIn LngUtilisation='{$_SESSION['Session_Langue']}'>
                      <ID_DOA>$idObjet</ID_DOA>
                      <Confirmation>".($confirmation? 'true':'false')."</Confirmation>
                      <CodeUtilisateur>{$_SESSION['Session_Login']}</CodeUtilisateur>
                  </ClotureDOAIn>";
        
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_DOA_CLOTURE', $envoi, false);
    }
    
    public function wsdlDocContratheque($array)
    {
        $method = 'OXAPRC_DOA_GENERER_FICHIER';
        
        $envoi = '<DOAFichierIn>
                      <IdDOA>'.$array['IdDOA'].'</IdDOA>
                      <IdDonnee>'.$array['IdDonnee'].'</IdDonnee>
                      <IdData>'.$array['IdData'].'</IdData>
                      <IdRecord>'.$array['IdRecord'].'</IdRecord>
                      <IdMaquette>'.$array['IdMaquette'].'</IdMaquette>
                      <CodeUtilisateur>'.$_SESSION['Session_Login'].'</CodeUtilisateur>
                  </DOAFichierIn>';

        return new \Helpers\Webservice\Wsdl('', $method, $envoi, false);
    }
    
    public function wsdlFermetureAction($idObjet, $idTask, $idAction, $confirmation = false, $allActeur = false)
    {
        $envoi = '  <TermineActionDOAIn LngUtilisation="' . $_SESSION['Session_Langue'] . '">
                        <CodeUtilisateur>' . $_SESSION['Session_Login'] . '</CodeUtilisateur>
                        <ID_DOA>' . $idObjet . '</ID_DOA>
                        <ID_TACHE>' . $idTask . '</ID_TACHE>
                        <ID_ACTION>' . $idAction . '</ID_ACTION>
                        <Confirmation>' . ($confirmation? 'true':'false') . '</Confirmation>
                        <URL_ACTION>'.$this->getUrlOxaproc().'</URL_ACTION>
                        <Global>'.($allActeur? 'true':'false').'</Global>
                    </TermineActionDOAIn>';
        
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_DOA_FERMEACTION', $envoi, false);
    }

    public function wsdlImportData($idObjet, $idDonnee, $idStruct, $new_name, $name_file)
    {
        $envoi = '  <Import_DOA_In LngUtilisation="'.$_SESSION['Session_Langue'].'">
                        <CodeUtilisateur>'.$_SESSION['Session_Login'].'</CodeUtilisateur>
                        <ID_DOA>'.$idObjet.'</ID_DOA>
                        <ID_DONNEE>'.$idDonnee.'</ID_DONNEE>
                        <ID_DONNEE_BIBLI>'.$idStruct.'</ID_DONNEE_BIBLI>
                        <NomFichier>'.$new_name.'</NomFichier>
                        <NomFichierOrigine>'.$name_file.'</NomFichierOrigine>
                    </Import_DOA_In>';
        
        return new \Helpers\Webservice\Wsdl('', 'WS_DOA_IMPRECORD', $envoi, false);
    }
}
