<?php

namespace Modules\EtatStatistiques\WebService;

use Helpers\Outil\Date;

class Statistique
{
    
    // phpcs:ignore
    public function AppelWsdlHighCharts_REQ_INT($etat, $societe, $periode, $acd, $si, $nbEnreg)
    {
        $xml = '<EtatIn LngUtilisation=\'' . $_SESSION['Session_Langue'] . '\'>
					<CodeEtat>' . $etat . '</CodeEtat>
					<Criteres>
						<ACD>' . htmlentities($acd) . '</ACD>
						<Societe>' . htmlentities($societe) . '</Societe>
						<Periode>' . htmlentities($periode) . '</Periode>
						<SI>' . htmlentities($si) . '</SI>
						<NbEnreg>' . $nbEnreg . '</NbEnreg>
					</Criteres>
				</EtatIn>';
                            
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_ETAT_STD_HC', $xml, false);
    }
    
    public function wsdlEtatInfo($codEtat)
    {
        $xml = '<EtatStdInfosIn>
					<CodeEtat>'.$codEtat.'</CodeEtat>
				</EtatStdInfosIn>
	';
                            
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_ETAT_STD_INFOS ', $xml, false);
    }
    
    // phpcs:ignore
    public function wsdlListeEtat_HC($code_etat, $post)
    {
        
        $xml = '
        <EtatIn LngUtilisation=\'' . $_SESSION['Session_Langue'] . '\'>
            <CodeEtat>'.$code_etat.'</CodeEtat>
            <CodeUser>'.$_SESSION['Session_Login'].'</CodeUser>  
                <Criteres>';

        foreach ($post as $keyp => $pval) {
            if (is_array($pval)) {
                $pval = implode('|', $pval);
            }
            $xml .= '<Critere objet="'.$keyp.'">'.$pval.'</Critere>';
        }
        $xml .= '    
        </Criteres>
		</EtatIn>';
                       
        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_ETAT_STD_HC', $xml, false);
    }

    // phpcs:ignore
    public function wsdlFiltre_dtEtat($code_etat, $post)
    {

        $xml = '
        <EtatIn LngUtilisation=\'' . $_SESSION['Session_Langue'] . '\'>
            <CodeEtat>'.$code_etat.'</CodeEtat>
            <CodeUser>'.$_SESSION['Session_Login'].'</CodeUser>  
                <Filtres>';

        $i = 0;
        $xmlArr = [];

        foreach ($post as $keyp => $pval) {
            $postExplode = explode('separateurFiltre', $keyp);

            if (substr($postExplode[0], 0, 7) == 'select_') {
                $codeFiltre = substr($postExplode[0], 7);
                $typeFiltre = $postExplode[1];
            }
            if (substr($postExplode[0], 0, 6) == 'debut_') {
                $choix = $postExplode[3];
                $val_deb = $pval;
            }
            if (substr($postExplode[0], 0, 11) == 'code_filtre') {
                $choix = $postExplode[3];
                $val_deb = $pval;
                $xmlArr[$i] = array ('COD_FILTRE' => $codeFiltre, 'TYPE_FILTRE' => $typeFiltre, 'CHOIX' => $choix, 'VAL_DEB' => $val_deb);
                $i++;
            }
      
            if (substr($postExplode[0], 0, 4) == 'fin_') {
                $val_fin = $pval;
                $xmlArr[$i] = array ('COD_FILTRE' => $codeFiltre, 'TYPE_FILTRE' => $typeFiltre, 'CHOIX' => $choix, 'VAL_DEB' => $val_deb, 'VAL_FIN' => $val_fin);
                $i++;
            }
        }
        foreach ($xmlArr as $v) {
            // Dossier 41171
            // TODO: A revoir pour mapper sur l'ensemble des types de dates présente en DB. Voir dans quel table elles sont stocké
            if ($v['COD_FILTRE'] === 'DATE') {
                isset($v['VAL_DEB']) ? Date::dateToSql($v['VAL_DEB']) : null;
                isset($v['VAL_FIN']) ? Date::dateToSql($v['VAL_FIN']) : null;
            }

            $xml .= ' 
            <Filtre>
                <CodeFiltre>'.$v['COD_FILTRE'].'</CodeFiltre> 
                <TypeFiltre>'.$v['TYPE_FILTRE'].'</TypeFiltre>
                <Choix>'. $v['CHOIX']. '</Choix>
                <ValeurDeb>'.($v['VAL_DEB']??'').'</ValeurDeb>
                <ValeurFin>'.($v['VAL_FIN']??'').'</ValeurFin>
            </Filtre>';
        }

        $xml  .= '
        </Filtres>
		</EtatIn>';

        return new \Helpers\Webservice\Wsdl('', 'OXAPRC_ETAT_STD_HC', $xml, false);
    }
}
