From 359dbb7d0ac945e02652bf73328e7fa882619866 Mon Sep 17 00:00:00 2001
From: llaffont <llaffont@git-test.afi-sa.fr>
Date: Tue, 14 May 2013 12:49:43 +0000
Subject: [PATCH] =?UTF-8?q?Opsys:=20sauvegarde=20des=20donn=C3=A9es=20t?=
 =?UTF-8?q?=C3=A9l=C3=A9phone,=20mode=20de=20contact?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 library/Class/WebService/SIGB/Emprunteur.php  | 48 ++++++++++-
 .../Class/WebService/SIGB/Opsys/Service.php   | 23 ++++-
 .../WebService/SIGB/OpsysServiceTest.php      | 85 +++++++++++++++++--
 3 files changed, 144 insertions(+), 12 deletions(-)

diff --git a/library/Class/WebService/SIGB/Emprunteur.php b/library/Class/WebService/SIGB/Emprunteur.php
index 63ed02d1027..ce1803bcad1 100644
--- a/library/Class/WebService/SIGB/Emprunteur.php
+++ b/library/Class/WebService/SIGB/Emprunteur.php
@@ -41,7 +41,9 @@ class Class_WebService_SIGB_Emprunteur {
 		$_ville,
 		$_code_postal,
 		$_telephone,
-		$_date_naissance;
+	  $_date_naissance,
+	  $_is_contact_email,
+	  $_is_contact_sms;
 	
 
 	public function __sleep() {
@@ -63,7 +65,9 @@ class Class_WebService_SIGB_Emprunteur {
 						'_code_barres',
 						'_adresse',
 						'_ville',
-						'_code_postal'];
+						'_code_postal',
+						'_is_contact_email',
+						'_is_contact_sms'];
 	}
 
 
@@ -225,6 +229,42 @@ class Class_WebService_SIGB_Emprunteur {
 	}
 
 
+	/**
+	 * @param string $is_contact_email
+	 * @return Class_WebService_SIGB_Emprunteur
+	 */
+	public function setIsContactEmail($is_contact_email) {
+		$this->_is_contact_email = $is_contact_email;
+		return $this;
+	}
+
+
+	/**
+	 * @return string
+	 */
+	public function isContactEmail(){
+		return $this->_is_contact_email;
+	}
+
+
+	/**
+	 * @param string $is_contact_sms
+	 * @return Class_WebService_SIGB_Emprunteur
+	 */
+	public function setIsContactSms($is_contact_sms) {
+		$this->_is_contact_sms = $is_contact_sms;
+		return $this;
+	}
+
+
+	/**
+	 * @return string
+	 */
+	public function isContactSms(){
+		return $this->_is_contact_sms;
+	}
+
+
 	/**
 	 * @param string $date_naissance
 	 * @return Class_WebService_SIGB_Emprunteur
@@ -589,7 +629,9 @@ class Class_WebService_SIGB_Emprunteur {
 				->setIdabon($this->getIdAbon())
 				->setNom($this->getNom())
 				->setPrenom($this->getPrenom())
-				->setMail($this->getEmail());
+				->setMail($this->getEmail())
+				->setIsContactMail($this->isContactEMail())
+				->setIsContactSms($this->isContactSms());
 
 		if ($this->_end_date)
 				$user->setDateFin($this->getEndDate());
diff --git a/library/Class/WebService/SIGB/Opsys/Service.php b/library/Class/WebService/SIGB/Opsys/Service.php
index 052c79ac3ad..81d25793e40 100644
--- a/library/Class/WebService/SIGB/Opsys/Service.php
+++ b/library/Class/WebService/SIGB/Opsys/Service.php
@@ -126,7 +126,7 @@ class Class_WebService_SIGB_Opsys_Service extends Class_WebService_SIGB_Abstract
 	 */
 	public function authentifierEmprunteur($user) {
 		$auth = new EmprAuthentifier($this->guid, $user->getLogin(), $user->getPassword());
-		xdebug_break();
+
 		try {
 			$auth_result = $this->search_client->EmprAuthentifier($auth);
 		} catch (Exception $e) {
@@ -141,12 +141,21 @@ class Class_WebService_SIGB_Opsys_Service extends Class_WebService_SIGB_Abstract
 			return $emprunteur;
 
 		$entite_result = $this->search_client->EmprListerEntite(EmprListerEntite::infos($this->guid));
-		xdebug_break();
+
 		if ($date_fin_abonnement = $entite_result->findAttribute('FinAbo')) {
 			$date_fin_abonnement = implode('-', array_reverse(explode('/', $date_fin_abonnement)));
 			$emprunteur->setEndDate($date_fin_abonnement);
 		}
 
+		if ($telephone = $entite_result->findAttribute('Téléphone'))
+			$emprunteur->setTelephone($telephone);
+
+		if ($is_contact_sms = $entite_result->findAttribute('Contacter par sms'))
+			$emprunteur->setIsContactSms($is_contact_sms == '1');
+
+		if ($is_contact_email = $entite_result->findAttribute('Contacter par email'))
+			$emprunteur->setIsContactEmail($is_contact_email == '1');
+
 		return $emprunteur
 			->setNom($entite_result->findAttribute('nom'))
 			->setPrenom($entite_result->findAttribute('prenom'));
@@ -1651,9 +1660,17 @@ class MaNotice {
 			->addChamp('100')
 			->addSousChamp('100$a', $emprunteur->getNom())
 			->addSousChamp('100$b', $emprunteur->getPrenom());
+
 		$this
 			->addChamp('115')
-			->addSousChamp('115$e', $emprunteur->getEmail());
+			->addSousChamp('115$e', $emprunteur->getEmail())
+			->addSousChamp('115$x', $emprunteur->isContactEmail());
+
+		$this
+			->addChamp('119')
+			->addSousChamp('119$a', $emprunteur->getTelephone())
+			->addSousChamp('119$x', $emprunteur->isContactSms());
+
 		$this
 			->addChamp('120')
 			->addSousChamp('120$a', $emprunteur->getPassword());
diff --git a/tests/library/Class/WebService/SIGB/OpsysServiceTest.php b/tests/library/Class/WebService/SIGB/OpsysServiceTest.php
index 55e367885e8..a7cf77ffb82 100644
--- a/tests/library/Class/WebService/SIGB/OpsysServiceTest.php
+++ b/tests/library/Class/WebService/SIGB/OpsysServiceTest.php
@@ -424,11 +424,11 @@ abstract class OpsysServiceWithSessionTestCase extends Storm_Test_ModelTestCase
 		$entite_infos_response->EmprListerEntiteResult = new RspEmprListerEntite();
 		$entite_infos_response->EmprListerEntiteResult->Entite = new EntiteEmp();
 		$entite_infos_response->EmprListerEntiteResult->Entite->LibelleDonnee = new StdClass();
-		$entite_infos_response->EmprListerEntiteResult->Entite->LibelleDonnee->string = ['Nom', 'Prenom', 'FinAbo'];
+		$entite_infos_response->EmprListerEntiteResult->Entite->LibelleDonnee->string = ['Nom', 'Prenom', 'FinAbo', 'Téléphone', 'Contacter par sms', 'Contacter par email'];
 		$entite_infos_response->EmprListerEntiteResult->Entite->Donnees = new StdClass();
 		$entite_infos_response->EmprListerEntiteResult->Entite->Donnees->Lignes = [$donnes_infos = new DonneeEmp()];
 		$donnes_infos->ValeursDonnees = new StdClass();
-		$donnes_infos->ValeursDonnees->string = ['Tin', 'Tin', '10/12/2012'];
+		$donnes_infos->ValeursDonnees->string = ['Tin', 'Tin', '10/12/2012', '23 45 67 89', '1', '1'];
 
 		$this->search_client
 			->whenCalled('OuvrirSession')->answers($this->ouvre_session_res)
@@ -542,6 +542,59 @@ class OpsysServiceEmprAuthentifierTestCreateEmprunteur extends OpsysServiceWithS
 	}
 
 
+	/** @test */
+	public function emprunterTelephoneShouldBe23456789() {
+		$this->assertEquals('23 45 67 89', $this->emprunteur->getTelephone());
+	}
+
+
+	/** @test */
+	public function emprunteurShouldBeContactedBySms() {
+		$this->assertTrue($this->emprunteur->isContactSms());
+	}
+
+
+	/** @test */
+	public function emprunteurShouldBeContactedByMail() {
+		$this->assertTrue($this->emprunteur->isContactEmail());
+	}
+
+
+	/** @test */
+	public function updateUser() {
+		$user = Class_Users::find(3);
+		$this->emprunteur->updateUser($user);
+		return $user;
+	}
+
+
+	/** 
+	 * @test 
+	 * @depends updateUser
+	 */
+	public function updatedUserTelephoneShouldBe23456789($user) {
+		$this->assertEquals('23 45 67 89', $user->getTelephone());		
+	}
+
+
+	/** 
+	 * @test 
+	 * @depends updateUser
+	 */
+	public function updatedUserIsContactMailShouldBeTrue($user) {
+		$this->assertTrue($user->getIsContactMail());		
+	}
+
+
+	/** 
+	 * @test 
+	 * @depends updateUser
+	 */
+	public function updatedUserIsContactSmsShouldBeTrue($user) {
+		$this->assertTrue($user->getIsContactSms());		
+	}
+
+
 	public function testEmprunteurIsValid() {
 		$this->assertTrue($this->emprunteur->isValid());
 	}
@@ -738,7 +791,10 @@ class OpsysServiceTestUpdateInfoEmprunteur extends OpsysServiceWithSessionTestCa
 			->setPrenom('Flo')
 			->setEmail('flo@astrolabe.fr')
 			->setPassword('amstramgram')
-			->setService($this->opsys);
+			->setService($this->opsys)
+			->setIsContactEmail(true)
+			->setIsContactSms(true)
+			->setTelephone('01 23 45 67');
 
 		/* Infos lecteur  */
 		$sous_champ_nom = new ImportSousChamp();
@@ -758,9 +814,26 @@ class OpsysServiceTestUpdateInfoEmprunteur extends OpsysServiceWithSessionTestCa
 		$sous_champ_email->Etiquette = '115$e';
 		$sous_champ_email->_ = 'flo@astrolabe.fr';
 
+		$sous_champ_contact_email = new ImportSousChamp();
+		$sous_champ_contact_email->Etiquette = '115$x';
+		$sous_champ_contact_email->_ = '1';
+
+		$champ_mail = new ImportChamp();
+		$champ_mail->Etiquette = '115';
+		$champ_mail->SousChamps = array($sous_champ_email, $sous_champ_contact_email);
+
+
+		$sous_champ_telephone = new ImportSousChamp();
+		$sous_champ_telephone->Etiquette = '119$a';
+		$sous_champ_telephone->_ = '01 23 45 67';
+
+		$sous_champ_contact_sms = new ImportSousChamp();
+		$sous_champ_contact_sms->Etiquette = '119$x';
+		$sous_champ_contact_sms->_ = '1';
+
 		$champ_telephone = new ImportChamp();
-		$champ_telephone->Etiquette = '115';
-		$champ_telephone->SousChamps = array($sous_champ_email);
+		$champ_telephone->Etiquette = '119';
+		$champ_telephone->SousChamps = array($sous_champ_telephone, $sous_champ_contact_sms);
 
 		/* Autres  */
 		$sous_champ_password = new ImportSousChamp();
@@ -774,7 +847,7 @@ class OpsysServiceTestUpdateInfoEmprunteur extends OpsysServiceWithSessionTestCa
 		/* Notice lecteur */
 		$notice = new MaNotice();
 		$notice->GUIDSession = 'guid_12345';
-		$notice->Champs = array($champ_info_lecteur, $champ_telephone, $champ_autres);
+		$notice->Champs = array($champ_info_lecteur, $champ_mail, $champ_telephone, $champ_autres);
 
 
 		$expected_ecrire_notice = new EcrireNotice();
-- 
GitLab