diff --git a/application/modules/opac/controllers/AbonneController.php b/application/modules/opac/controllers/AbonneController.php index c33fe5677e3a6440e3582e3211281a173ae1941b..07c9ac49f726fae6e5867c972bba047052f1b8a6 100644 --- a/application/modules/opac/controllers/AbonneController.php +++ b/application/modules/opac/controllers/AbonneController.php @@ -602,7 +602,21 @@ class AbonneController extends Zend_Controller_Action { public function multimediaHoldGroupAction() { $bean = $this->_getDeviceHoldBean(); $namespace = $this->_getSessionNamespace(); - $location = Class_Multimedia_Location::find((int)$bean->location); + + if (null == ($location = Class_Multimedia_Location::getLoader()->find((int)$bean->location))) { + $this->_redirect('/abonne/multimedia-hold-location'); + return; + } + + if ('' == $bean->day) { + $this->_redirect('/abonne/multimedia-hold-day'); + return; + } + + if ('' == $bean->time || 0 == $bean->duration) { + $this->_redirect('/abonne/multimedia-hold-hours'); + return; + } if ($this->_getParam('group')) { $bean->group = $this->_getParam('group'); @@ -610,7 +624,6 @@ class AbonneController extends Zend_Controller_Action { return; } - $this->view->groups = $location->getGroups(); $this->view->timelineActions = $this->_getTimelineActions('group'); } diff --git a/categories.org b/categories.org index cf69259ed37f74df807056306338c79721d795ba..ca1488e7bd57c7c33b9180db1ec0c0b084e827f3 100644 --- a/categories.org +++ b/categories.org @@ -29,7 +29,7 @@ cf [[file:application/modules/opac/controllers/AbonneController.php::and%20null% [[file:library/Class/Multimedia/Device.php::public%20function%20autoHoldByUser($user,%20$current_hold)%20{][Device autoHoldByUser]] [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::class%20AbonneControllerMultimediaAuthenticateLaurentTest%20extends%20AbonneControllerMultimediaAuthenticateValidTestCase%20{][Tests autoHold]] - [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::protected%20function%20_prepareLocationInSession()%20{][TestCase de base]] *** TODO Ajouter la vérification du quota (factoriser avec [[file:application/modules/opac/controllers/AbonneController.php::/*%20V%C3%A9rification%20du%20quota%20sur%20le%20jour%20choisi%20*/][ce qui est fait dans AbonneController]] (en fait déjà dans [[file:library/Class/Users.php::public%20function%20getMultimediaQuotaErrorForDay($day)%20{][Users::getMultimediaQuotaErrorForDay]] -** Réservation d'un poste [1/3] +** Réservation d'un poste [2/3] [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::abstract%20class%20AbonneControllerMultimediaAuthenticateTestCase%20extends%20AbstractControllerTestCase%20{][Test controller Abonne]] *** [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::class%20AbonneControllerMultimediaHoldLocationTest%20extends%20AbonneControllerMultimediaHoldTestCase%20{][1er écran choix du lieu]] *** TODO [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::class%20AbonneControllerMultimediaHoldDayTest%20extends%20AbonneControllerMultimediaHoldTestCase%20{][2nd écran choix du jour]] - [[file:application/modules/opac/controllers/AbonneController.php::public%20function%20multimediaHoldDayAction()%20{][action controller]] [1/2] @@ -43,8 +43,10 @@ cf [[file:application/modules/opac/controllers/AbonneController.php::and%20null% CLOSED: [2012-08-09 Thu 18:55] -*** TODO [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::class%20AbonneControllerMultimediaHoldDeviceTest%20extends%20AbonneControllerMultimediaHoldTestCase%20{][4ème écran choix du poste]] [0/1] -**** TODO Rajouter un écran choix de groupe + schuffle des postes que pour un groupe donné [[file:library/Class/Multimedia/Location.php::public%20function%20getHoldableDevicesForDateTimeAndDuration($date,%20$time,%20$duration)%20{][Recherche des postes pour horaire donné]] +*** DONE [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::class%20AbonneControllerMultimediaHoldDeviceTest%20extends%20AbonneControllerMultimediaHoldTestCase%20{][4ème écran choix du poste]] [1/1] + CLOSED: [2012-08-20 Mon 17:39] +**** DONE Rajouter un écran choix de groupe + schuffle des postes que pour un groupe donné [[file:library/Class/Multimedia/Location.php::public%20function%20getHoldableDevicesForDateTimeAndDuration($date,%20$time,%20$duration)%20{][Recherche des postes pour horaire donné]] + CLOSED: [2012-08-20 Mon 17:39] *** [[file:tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php::class%20AbonneControllerMultimediaHoldConfirmTest%20extends%20AbonneControllerMultimediaHoldTestCase%20{][5ème écran confirmation]] ** TODO Fiche abonné: afficher conso + temps restant par jour / semaine / mois diff --git a/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php b/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php index d5ca00dcc85b0df4eceb069fc5216da3d3a92256..79eac507b6be6c372ce688cee9e49f8dc81286c9 100644 --- a/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php +++ b/tests/application/modules/opac/controllers/AbonneControllerMultimediaTest.php @@ -850,6 +850,38 @@ class AbonneControllerMultimediaHoldGroupChoiceTest extends AbonneControllerMult +/* Quatrième écran validation du choix du groupe de postes, redirection vers le choix du poste */ +class AbonneControllerMultimediaHoldGroupChoiceErrorTest extends AbonneControllerMultimediaHoldTestCase { + /** @test */ + public function withoutHoursShouldRedirectToHoldHours() { + $this->_prepareLocationInSession(); + $this->_prepareDayInSession(); + $this->dispatch('/abonne/multimedia-hold-group/group/5', true); + $this->assertRedirectTo('/abonne/multimedia-hold-hours'); + } + + + /** @test */ + public function withoutDayShouldRedirectToHoldDay() { + $this->_prepareLocationInSession(); + $this->_prepareTimeAndDurationInSession(); + $this->dispatch('/abonne/multimedia-hold-group/group/5', true); + $this->assertRedirectTo('/abonne/multimedia-hold-day'); + } + + + /** @test */ + public function withoutLocationShouldRedirectToHoldLocation() { + $this->_prepareDayInSession(); + $this->_prepareTimeAndDurationInSession(); + $this->dispatch('/abonne/multimedia-hold-group/group/5', true); + $this->assertRedirectTo('/abonne/multimedia-hold-location'); + } +} + + + + /* Cinquième écran choix du poste */ class AbonneControllerMultimediaHoldDeviceTest extends AbonneControllerMultimediaHoldTestCase { public function setUp() { @@ -914,6 +946,21 @@ class AbonneControllerMultimediaHoldDeviceChoiceTest extends AbonneControllerMul +class AbonneControllerMultimediaHoldDeviceChoiceErrorTest extends AbonneControllerMultimediaHoldTestCase { + /** @test */ + public function withoutGroupShouldRedirectToHoldGroup() { + parent::setUp(); + $this->_prepareLocationInSession(); + $this->_prepareDayInSession(); + $this->_prepareTimeAndDurationInSession(); + $this->dispatch('/abonne/multimedia-hold-device/device/1', true); + $this->assertRedirectTo('/abonne/multimedia-hold-group'); + } +} + + + + /* Sixième écran confirmation de la réservation */ class AbonneControllerMultimediaHoldConfirmTest extends AbonneControllerMultimediaHoldTestCase { public function setUp() {