<?php
class MandataireController extends Zend_Controller_Action
{
	protected $coursAppel = array(
		array( "triId"=>"1756", "triCode"=>"AIXPRL", "triNom"=>"Cour d'Appel d'Aix-en-Provence", "triCP"=>"13616" ),
		array( "triId"=>"1757", "triCode"=>"AMIENL", "triNom"=>"Cour d'Appel d'Amiens", "triCP"=>"80027" ),
		array( "triId"=>"1758", "triCode"=>"ANGERL", "triNom"=>"Cour d'Appel d'Angers", "triCP"=>"49043" ),
		array( "triId"=>"1759", "triCode"=>"BASSEL", "triNom"=>"Cour d'Appel de Basse-Terre", "triCP"=>"97109" ),
		array( "triId"=>"1760", "triCode"=>"BASTIL", "triNom"=>"Cour d'Appel de Bastia", "triCP"=>"20407" ),
		array( "triId"=>"1761", "triCode"=>"BESANL", "triNom"=>"Cour d'Appel de Besançon", "triCP"=>"25017" ),
		array( "triId"=>"1762", "triCode"=>"BORDEL", "triNom"=>"Cour d'Appel de Bordeaux", "triCP"=>"33077" ),
		array( "triId"=>"1763", "triCode"=>"BOURGL", "triNom"=>"Cour d'Appel de Bourges", "triCP"=>"18023" ),
		array( "triId"=>"1764", "triCode"=>"CAENL", "triNom"=>"Cour d'Appel de Caen", "triCP"=>"14050" ),
		array( "triId"=>"1765", "triCode"=>"CHAMBL", "triNom"=>"Cour d'Appel de Chambéry", "triCP"=>"73018" ),
		array( "triId"=>"1766", "triCode"=>"COLMAL", "triNom"=>"Cour d'Appel de Colmar", "triCP"=>"68027" ),
		array( "triId"=>"1767", "triCode"=>"DIJONL", "triNom"=>"Cour d'Appel de Dijon", "triCP"=>"21034" ),
		array( "triId"=>"1768", "triCode"=>"DOUAIL", "triNom"=>"Cour d'Appel de Douai", "triCP"=>"59507" ),
		array( "triId"=>"1769", "triCode"=>"FORTFL", "triNom"=>"Cour d'Appel de Fort-de-France", "triCP"=>"97200" ),
		array( "triId"=>"1770", "triCode"=>"GRENOL", "triNom"=>"Cour d'Appel de Grenoble", "triCP"=>"38019" ),
		array( "triId"=>"1771", "triCode"=>"LIMOGL", "triNom"=>"Cour d'Appel de Limoges", "triCP"=>"87031" ),
		array( "triId"=>"1772", "triCode"=>"LYONL", "triNom"=>"Cour d'Appel de Lyon", "triCP"=>"69321" ),
		array( "triId"=>"1773", "triCode"=>"METZL", "triNom"=>"Cour d'Appel de Metz", "triCP"=>"57036" ),
		array( "triId"=>"1774", "triCode"=>"MONTPL", "triNom"=>"Cour d'Appel de Montpellier", "triCP"=>"34023" ),
		array( "triId"=>"1775", "triCode"=>"NANCYL", "triNom"=>"Cour d'Appel de Nancy", "triCP"=>"54035" ),
		array( "triId"=>"1776", "triCode"=>"NIMESL", "triNom"=>"Cour d'Appel de Nîmes", "triCP"=>"30031" ),
		array( "triId"=>"1777", "triCode"=>"NOUMEL", "triNom"=>"Cour d'Appel de Nouméa", "triCP"=>"98848" ),
		array( "triId"=>"1778", "triCode"=>"PAPEEL", "triNom"=>"Cour d'Appel de Papeete", "triCP"=>"98714" ),
		array( "triId"=>"1779", "triCode"=>"PARISL", "triNom"=>"Cour d'Appel de Paris", "triCP"=>"75055" ),
		array( "triId"=>"1780", "triCode"=>"PAUL", "triNom"=>"Cour d'Appel de Pau", "triCP"=>"64034" ),
		array( "triId"=>"1781", "triCode"=>"POITIL", "triNom"=>"Cour d'Appel de Poitiers", "triCP"=>"86020" ),
		array( "triId"=>"1782", "triCode"=>"REIMSL", "triNom"=>"Cour d'Appel de Reims", "triCP"=>"51096" ),
		array( "triId"=>"1783", "triCode"=>"RENNEL", "triNom"=>"Cour d'Appel de Rennes", "triCP"=>"35064" ),
		array( "triId"=>"1784", "triCode"=>"RIOML", "triNom"=>"Cour d'Appel de Riom", "triCP"=>"63201" ),
		array( "triId"=>"1785", "triCode"=>"ROUENL", "triNom"=>"Cour d'Appel de Rouen", "triCP"=>"76037" ),
		array( "triId"=>"1786", "triCode"=>"STDENL", "triNom"=>"Cour d'Appel de Saint-Denis-de-La Réunion", "triCP"=>"97488" ),
		array( "triId"=>"1787", "triCode"=>"TOULOL", "triNom"=>"Cour d'Appel de Toulouse", "triCP"=>"31068" ),
		array( "triId"=>"1788", "triCode"=>"VERSAL", "triNom"=>"Cour d'Appel de Versailles", "triCP"=>"78011" ),
		array( "triId"=>"1789", "triCode"=>"ORLEAL", "triNom"=>"Cour d'Appel d'Orléans", "triCP"=>"45044" ),
		array( "triId"=>"1790", "triCode"=>"CAYENL", "triNom"=>"Chambre Détachée de la Cour d'Appel de Fort de France à Cayenne", "triCP"=>"97300" ),
		array( "triId"=>"1798", "triCode"=>"AGENL", "triNom"=>"Cour d'Appel d'Agen", "triCP"=>"47916" ),
	);

	public function init()
	{
		require_once 'Scores/WsScores.php';
	}


	/**
	 * Enregistrement d'un mandataire
	 */
	public function addAction()
	{
		$this->_helper->layout->disableLayout();

		$request = $this->getRequest();
		$idMandataire = $request->getParam('idMand', '');
		$tribunal =  $request->getParam('tribunal', '');

		$ws = new WsScores();

		Zend_Registry::get('firebug')->info('idMandataire : '.$idMandataire);

		//Mode edition
		if ($idMandataire != '') {
			$idMandataire = (int)substr($idMandataire,1);
			$reponse = $ws->getMandataire($idMandataire);
			Zend_Registry::get('firebug')->info($reponse);
			if ($reponse!==false) {
				$tabMandataires = json_decode($reponse, true);
			} else {
				$message = 'Une erreur est survenue durant la recherche de mandataire.';
			}
		//Mode ajout
		} else {
			$tabMandataires = $request->getParam('tabMandataires');
		}

		if ($tribunal!='') {
			//La cour d'appel suivant le tribunal sélectionné
			$codeCourAppel = $ws->getIdCoursAppel($tribunal);

			//Les tribunaux
			$tmp = $ws->getTribunaux(array('C','I','G')); //

			$tribunaux = $tmp->result->item;
		}else{
			$message = 'Pas de tribunal sélectionné.';
		}

		$this->view->assign('message', $message);
		$this->view->assign('tabMandataires', $tabMandataires);
		$this->view->assign('coursAppel', $this->coursAppel);
		$this->view->assign('tribunal', $tribunal);
		$this->view->assign('tribunaux', $tribunaux);
	}

	/**
	 * Edition d'un mandataire
	 */
	public function editAction()
	{
		$this->_forward('add');
	}

	/**
	 * Recherche d'un mandataire à partir d'une chaine de caractères
	 * "nom, departement"
	 */
	public function searchAction()
	{
		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender();

		$request = $this->getRequest();
		$search = $request->getParam('search', '');

		if (empty($search)) { echo ''; }
		else { $search = strtolower($search); }

		list($searchStr, $filtre) = explode(',', $search);
		$searchStr = trim($searchStr);
		$filtre = str_replace(' ', '', $filtre);
		if( strlen($filtre) != 5 && strlen($filtre) != 2 ){
			$filtre = '';
		}

		$ws = new WsScores();
		$reponse = $ws->searchMandataires(
			$searchStr,
			array('V', 'N', 'H', 'A', 'M'), //types de mandataires
			$filtre
		);

		if ($reponse == false){
			echo 'Erreur durant la recherche';
			exit;
		}

		$mandataires = $reponse->result->item;

		$output = array();
		$output[] = array(
			'label' => "A l'adresse du bien vendu",
			'id'	=> 'adresse'
		);

		/*
		 REGEX Code Postal : ^(F-)?((2[A|B])|[0-9]{2})[0-9]{3}$
		 (?<!/BP /i) Ne pas avoir la présence de BP devant les 5 chiffres
		 */
		//Recherche des codes postaux
		if( count($mandataires)>0 ) {
			$tableResults = array();
			$i=0;
			foreach ($mandataires as $mandataire) {
				$tabResults[$i]['code'] = $mandataire->id;
				$tabResults[$i]['lib'] =  htmlspecialchars_decode(
					html_entity_decode($mandataire->mand, ENT_COMPAT | ENT_HTML401, 'UTF-8')
				        , ENT_QUOTES);

				preg_match('/(?<!bp )((2[A|B])|[0-9]{2})[0-9]{3}( )/i', $mandataire->mand, $matches);
				$tabResults[$i]['cp'] = $matches[0];
				$i++;
			}
			foreach ($tabResults as $key => $row){
				$code[$key]  = $row['code'];
				$lib[$key] = $row['lib'];
				$cp[$key] = $row['cp'];
			}
			//Classement du tableau
			array_multisort($cp, SORT_NUMERIC, $tabResults);

			//Affichage des valeurs
			foreach ($tabResults as $item){
				$output[] = array(
					'label' => $item['lib'],
					'id'	=> $item['code']
				);
			}
		}
		echo json_encode($output);
	}

	public function getAction()
	{
		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender(true);

		$request = $this->getRequest();
		$siren = $request->getParam('siren');
		$siren = str_replace(' ','',$siren); //Remplacer les espaces

		if ( $siren=='' || strlen($siren)!=14 ) {
			$output = array(
				'Siret' => 'Siret incorrect',
			);
			echo json_encode($output);
			exit;
		}

		$tabEntrep = array();
		$ws = new WsScores();
		$tabEntrep = $ws->getIdentite($siren);
		if ($tabEntrep!==false){
			/**
			 * Utiliser la dénomination sociale la plus longue
			 * Nom, Nom2, NomLong
			 */
			if (!empty($tabEntrep->NomLong) && strlen($tabEntrep->NomLong)>strlen($tabEntrep->Nom)){
				$tabEntrep->Nom = $tabEntrep->NomLong;
			}

			//Retourner le tableau sous forme json
			echo json_encode($tabEntrep);
		}

	}

	public function saveAction()
	{
		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender();

		$request = $this->getRequest();

		$error = false;

		$tabMandataires = $request->getParam('tabMandataires', array());

		//Vérification des données
		$fields = array();
		if($tabMandataires['sirenGrp']=='' && $tabMandataires['sirenMand']==''){
			$fields[] ='Siret'; $error = true;
		}
		if($tabMandataires['sirenGrp'] == $tabMandataires['sirenMand']){
			$fields[] ='Siret de la société civile identique au Siret du mandataire';
			$error = true;
		}
		if( (strlen($tabMandataires['sirenGrp'])!=14 && empty($tabMandataires['sirenMand'])) ||
			(empty($tabMandataires['sirenGrp']) && strlen($tabMandataires['sirenMand'])!=14) ){
			$fields = 'Siret avec la bonne taille';
			$error = true;
		}

		if($tabMandataires['Nom']=='' ){$fields[] ='Nom'; $error = true;}
		if($tabMandataires['type']==''){$fields[] ='Type'; $error = true;}
		if($tabMandataires['tribunal']==''){$fields[] ='Tribunal'; $error = true;}
		if($tabMandataires['coursAppel']==''){$fields[] ='Cours d\'appel'; $error = true;}
		if($tabMandataires['Statut']==''){$fields[] ='Statut'; $error = true;}
		if($tabMandataires['adresse']==''){$fields[] ='Adresse'; $error = true;}
		if($tabMandataires['cp']==''){$fields[] ='Code Postal'; $error = true;}
		if($tabMandataires['ville']==''){$fields[] ='Ville'; $error = true;}
		if($tabMandataires['tel']==''){$fields[] ='Téléphone'; $error = true;}

		//Envoi de la requête au webservices
		if ($error==true){
			$message = '<font color="red">';
			$message.= 'Veuillez remplir les champs suivants : ';
			$message.= join(', ', $fields);
			$message.= '</font>';
		} else {
			$message='';
			$ws = new WsScores();
			$reponse = $ws->setMandataire($tabMandataires);
			if ( $reponse===false ){
				$message = "Une erreur s'est produite durant l'enregistrement";
			} elseif ( is_string($reponse) ) {
				$message = $reponse;
			}
		}
		echo $message;
	}

	protected function htmlentitydecode_deep($value)
	{
    	$value = is_array($value) ?
                array_map(array('MandataireController' ,'htmlentitydecode_deep'), $value) :
                html_entity_decode($value, ENT_QUOTES);
    	return $value;
	}



}