<?php

function assocSourceDroit(){
	return array(
		'annonces' 		=> 'survannonce',
		'insee'  		=> 'survinsee',
		'bilans' 		=> 'survbilan',
		'score' 		=> 'survscore',
		'actes'  		=> 'survactes',
		'dirigeants' 	=> 'survdirigeants',
		'privileges'	=> 'survpriv',
	);
}

function assocSourceTxt(){
	return array(
		'annonces' 		=> 'annonces',
		'insee' 		=> 'Insee',
		'bilans'		=> 'bilans',
		'score'			=> 'IndiScore',
		'actes'			=> 'actes',
		'dirigeants'	=> 'dirigeants',
		'privileges'	=> 'privilèges',
	);
}

/**
 * Affiche le formulaire surveillance.
 *
 * @param string $page
 *   	La page ou l'on affiche le formulaire, détermine le type de surveillance.
 * @param string $siret
 * 		L'établissement à surveiller.
 * @param array $notEmail
 * 		Un tableau de login pour exclure l'affichage de l'adresse email
 * @param boolean $inDialog
 *
 * @return string
 * 		Retourne sous forme de chaine de caractère le fomulaire en HTML
 */
function formSurveillance($source, $siret, $notEmail, $inDialog = false)
{
	$assocSourceTxt = assocSourceTxt();
	$assocSourceDroit = assocSourceDroit();

	$style = file_get_contents(realpath(dirname(__FILE__)).'/style.css');

	$output = '';

	if ( $inDialog ){
		$output.= '<style type="text/css">'.$style.'</style>'."\n";
		$output.= '<form id="frmSurv" name="frmSurv" '.
			'action="./?page=surveillance" method="post">'."\n";
		$output.= '<input name="q" type="hidden" value="setsurv"/>';
		$output.= '<input name="formSurv[siret]" type="hidden" value="'.
			$siret.'"/>'."\n";

		if( empty($source) ){
			$output.= '<div class="fieldgrp">'."\n";
			$output.= '<label>Types</label>'."\n";
			$output.= '<div class="field">'."\n";
			foreach($assocSourceTxt as $Source => $Txt)
			{
				if(hasPerm($assocSourceDroit[$Source]))
				{
					$checked = 'checked';
					if ($Source=='privileges'){
						$checked = '';
					}
					$output.='<input type="checkbox" '.
						'name="formSurv[source][]" value="'.
						$Source.'" '.$checked.'/>&nbsp;'.$Txt."<br/>\n";
				}
			}
			$output.= '</div>'."\n";
			$output.= '</div>'."\n";
		}else{
			$output.= '<input name="formSurv[source]" '.
				'type="hidden" value="'.$source.'"/>'."\n";
		}
		//Champ référence
		$ref = '';
		if(isset($_REQUEST['ref'])){
			$ref = $_REQUEST['ref'];
		}
		$output.= '<div id="survForm">'."\n";
		$output.= '<div class="fieldgrp">'."\n";
		$output.= '<label class="StyleInfoLib">Votre référence</label>';
		$output.= '<div class="field">';
		$output.= '<input class="longfield" name="formSurv[ref]" type="text" '.
			'value="'.$ref.'" size="10"/></div>'."\n";
		$output.= '</div>'."\n";

		//Champ spécial suivant source
		$encours = '';
		if(isset($_REQUEST['encours'])){
			$encours = $_REQUEST['encours'];
		}
		if ($source=='score'){
			$output.= '<div id="survForm">'."\n";
			$output.= '<div class="fieldgrp">'."\n";
			$output.= '<label class="StyleInfoLib">Votre encours (&euro;)</label>';
			$output.= '<div class="field">';
			$output.= '<input class="longfield" name="formSurv[encours]" '.
				'type="text" value="'.$encours.'" size="10"/></div>'."\n";
			$output.= '</div>'."\n";
		}

		//Champ email
		$email = '';
		if(	!in_array($_SESSION['tabInfo']['login'],$notEmail) &&
			!isset($_REQUEST['email'])){
			$email = $_SESSION['tabInfo']['email'];
		}elseif(isset($_REQUEST['email'])){
			$email = $_REQUEST['email'];
		}
		$output.= '<div class="fieldgrp">'."\n";
		$output.= '<label class="StyleInfoLib">'.
			'Adresse email du destinataire</label>';
		$output.= '<div class="field">'.
			'<input class="longfield" name="formSurv[email]" '.
			'type="text" value="'.$email.'" size="20"/></div>'."\n";
		$output.= '</div>'."\n";;
		$output.= '</div>'."\n";
		$output.= '</form>'."\n";

	} else {
		$texte = 'Mettre sous surveillance ';
		if( !empty($source) ) {
			$texte.= $assocSourceTxt[$source];
		}
		$output.= '<br/>';
		$output.= lienSousSurveillance($texte,
			'Ajouter la surveillance', $source, $siret);
		$output.= '<br/>'."\n";
	}
	return $output;
}

/**
* Affiche le formulaire de demande de référence.
* @return string
* 		Retourne sous forme de chaine de caractère le fomulaire en HTML
*/
function formDemanderef()
{
	$style = file_get_contents(realpath(dirname(__FILE__)).'/style.css');

	$output = '';
	$output.= '<style type="text/css">'.$style.'</style>'."\n";
	$output.= '<form id="frmSurv" name="frmSurv" action="#" method="post">'."\n";

	//Champ référence
	$ref = '';
	if(isset($_REQUEST['ref'])){
		$ref = $_REQUEST['ref'];
	}
	$output.= '<div id="survForm">'."\n";
	$output.= '<div class="fieldgrp">'."\n";
	$output.= '<label class="StyleInfoLib">Votre référence</label>';
	$output.= '<div class="field">';
	$output.= '<input class="longfield" name="ref" type="text" '.
		'value="'.$ref.'" size="10"/></div>'."\n";
	$output.= '</div>'."\n";

	//Champ spécial suivant source
	$encours = '';
	if(isset($_REQUEST['encours'])){
		$encours = $_REQUEST['encours'];
	}
	$output.= '<div id="survForm">'."\n";
	$output.= '<div class="fieldgrp">'."\n";
	$output.= '<label class="StyleInfoLib">Votre encours (&euro;)</label>';
	$output.= '<div class="field">';
	$output.= '<input class="longfield" name="encours" type="text" value="'.$encours.'" size="10"/></div>'."\n";
	$output.= '</div>'."\n";
		
	$email = $_SESSION['tabInfo']['email'];
	$output.= '<div class="fieldgrp">'."\n";
	$output.= '<label class="StyleInfoLib">'.
				'Adresse email du destinataire</label>';
	$output.= '<div class="field">'.
				'<input class="longfield" name="email" '.
				'type="text" value="'.$email.'" size="20"/></div>'."\n";
	$output.= '</div>'."\n";;
	$output.= '</div>'."\n";
	
	$output.= '</form>'."\n";
	return $output;
}


/**
 * Gère la détection des droits et des préférences pour l'affichage
 * de la surveillance.
 * @param string $page
 *   	La page ou l'on affiche le formulaire, détermine le type
 *   de surveillance.
 * @param string $siret
 * 		L'établissement à surveiller.
 * @return void
 */
function getSurveillance($source, $siret){
	$assocSourceDroit = assocSourceDroit();
	$return = '';
	$notEmail = array('testreunica', 'reunicacsf');

	if (!empty($source) &&
		array_key_exists($source, $assocSourceDroit) &&
		hasPerm($assocSourceDroit[$source]) ){
			$listSurv = inSurveillance($source, $siret);
			if (hasPref('voirsurv') && $listSurv!==FALSE){
				$return = dInfoSurveillance($listSurv, $source, $siret);
			}else{
				$return = formSurveillance($source, $siret, $notEmail);
			}
	}else{

		$listSurv = inSurveillance('', $siret);
		if (hasPref('voirsurv') && $listSurv!==FALSE){
			$return = dInfoSurveillance($listSurv, '', $siret);
		} else {
			$return = formSurveillance('', $siret, $notEmail);
		}
	}
	return $return;
}

/**
 * Renvoie le code HTML pour le lien de surveillance
 * @param string $texte
 * @param string $titre
 * @param string $source
 * @param string $siret
 */
function lienSousSurveillance($texte, $titre, $source, $siret){
	$output = '<a class="dialogsurv" href="./?page=surveillance&q=ajouter';
	$output.= '/'.$siret;
	if ( !empty($source) ) { $output.= '/'.$source; }
	$output.= '" title="'.$titre.' '.$source.'">'. $texte . '</a>';
	return $output;
}

/**
 * Affiche les informations de surveillance
 * @param array | boolean $listSurv
 * @param string $source
 * @param string $siret
 */
function dInfoSurveillance($listSurv, $source, $siret){
	$output = '';
	if (is_array($listSurv) && count($listSurv)>0){
		$output.= '<br/>L\'entité est ' .
			lienSousSurveillance('sous surveillance',
				'Ajouter la surveillance', $source, $siret);
		$sourceTxt = assocSourceTxt();
		$cSource = 0;
		foreach ($listSurv as $source => $info){
			$cSource++;
			$ref = $info['ref'];
			$output.= ' <u tooltip="';
			$output.= 'Ref : '.$ref;
			$date = WDate::dateT('Y-m-d', 'd/m/Y', $info['dateAjout']);
			$output.= '<br/>Date d\'ajout : '.$date;
			if ($info['dateDerEnvoi']!='0000-00-00 00:00:00'){
				$date = WDate::dateT('Y-m-d', 'd/m/Y',
					substr($info['dateDerEnvoi'],0,10));
				$output.= '<br/>Date de dernier envoi : '.$date;
			}
			$output.= '">'.$sourceTxt[$source].'</u>';
			if ($cSource<count($listSurv)) $output.= ',';
		}
		if (!empty($ref)) $output.= ' ('.$ref.')';
		$output.= ".\n";
	}
	return $output;
}

/**
 * Vérifie si l'établissement est en surveillance
 *
 * @param string $source
 *   	Le type de surveillance.
 * @param string $siret
 * 		L'établissement surveillé.
 * @return boolean
 * 		true or false
 */
function inSurveillance($source, $siret){
	global $client;
	try {
		$result = $client->getSurveillances($siret,$source);
		$survSource = $result['results']['reponses'];
		if (count($survSource)>0 ){
			$find = FALSE;
			if(strlen($siret)>9) $siret = substr($siret, 0, 9);
			if (!empty($source)){
				foreach($survSource as $item){
					if ($item['siren'] == $siret &&
						$item['source'] == $source)
						{
							$find[$item['source']] = array(
								'email' => $item['email'],
								'ref' => $item['ref'],
								'dateAjout' => $item['dateAjout'],
								'dateDerEnvoi' => $item['dateDerEnvoi'],
							);
							break;
						}
				}
			} else {
				$find = array();
				FB::log($survSource, 'SURV');
				foreach($survSource as $item){
					if ($item['siren'] == $siret){
						$find[$item['source']] = array(
							'email' => $item['email'],
							'ref' => $item['ref'],
							'dateAjout' => $item['dateAjout'],
							'dateDerEnvoi' => $item['dateDerEnvoi'],
						);
					}
				}
			}
			return $find;
		}else{ return false; }
	}catch(SoapFault $fault){
		return false;
	}
}

/**
 * Envoi la surveillance au webservice
 *
 * @param array $tabForm
 *   	Le type de surveillance.
 * @return mixed
 * 		Retourne la réponse du webservice ou false
 */
function setSurveillance($tabForm)
{
	global $client;
	$siret = $tabForm['siret'];
	$email = $tabForm['email'];
	$ref = $tabForm['ref'];
	$source = $tabForm['source'];
	isset($tabForm['encours']) && !empty($tabForm['encours']) ?
		$encours = $tabForm['encours'] : $encours = 0;

	//Vérification de l'encours (chiffres)
	if (!preg_match('/([0-9]+)/', $encours)){
		return 'Encours incorrect';
		exit;
	}

	//Mise en surveillance pour une liste de sources
	if ( is_array($source) ){
		foreach ( $source as $s ){
			try {
				$result = $client->setSurveillance($siret, $email, $ref, $s,
					false, $encours);
				$result = '';
			}catch(SoapFault $fault){
				$result = false;
			}
		}
	//Mise en surveillance pour une source
	} else {
		try{
			$result = $client->setSurveillance($siret, $email, $ref, $source,
				false, $encours);
			$result = '';
		}catch (SoapFault $fault){
			$result = false;
		}
	}
	return $result;
}

/**
 * Supprime la surveillance
 * @param string $siret
 *   	L'établissement surveillé.
 * @param $email
 * 		L'email enregistré pour la surveillance
 * @param $ref
 * 		La référence ajouté pour cette surveillance
 * @param $source
 * 		La source pour cette surveillance
 * @return mixed
 * 		Retourne la réponse du webservice ou false
 */
function deleteSurveillance($siret, $email, $ref, $source){
	global $client;
	try{
		$result = $client->setSurveillance($siret, $email, $ref, $source, TRUE);
		return TRUE;
	}catch(SoapFault $fault){
		return FALSE;
	}
}


?>