Skip to content
Snippets Groups Projects
Commit a7396276 authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

Merge branch 'hotdev#13536_reservation_message_site_retrait' into 'hotline_6.43'

Hotdev#13536 Reservation Message Site Retrait
parents a576c49e d131c27d
Branches
Tags
3 merge requests!258Dev/13872 Orphee Allow Hold Available Items,!114Master,!113Hotline 6.43
......@@ -495,30 +495,47 @@ class RechercheController extends ZendAfi_Controller_Action {
$comm = new Class_CommSigb();
$ret = $comm->reserverExemplaire($id_bib, $id_origine, $code_annexe);
if ($ret["erreur"])
$message = $ret["erreur"];
else if ($ret["popup"])
$message = '<iframe src="'.$ret["popup"].'"></iframe>';
else {
$current_hold = null;
foreach($user->getReservations() as $hold) {
if (!$opac_item = $hold->getExemplaire()->getExemplaireOPAC())
continue;
if ($id_origine == $opac_item->getId()) {
$current_hold = $hold;
break;
}
$this->renderPopupResult($this->view->_('Réservation'),
$this->_getHoldMessage($user, $id_origine, $ret));
}
protected function _getHoldMessage($user, $item_id, $response) {
if ($response['erreur'])
return $response['erreur'];
if ($response['popup'])
return '<iframe src="' . $response['popup'] . '"></iframe>';
$current_hold = null;
foreach($user->getReservations() as $hold) {
if (!$opac_item = $hold->getExemplaire()->getExemplaireOPAC())
continue;
if ($item_id == $opac_item->getId()) {
$current_hold = $hold;
break;
}
$message = ($current_hold) ?
$this->view->_('Votre réservation est enregistrée. Nous vous informerons quand le document sera disponible pour être retiré à : %s',
$current_hold->getPickupLocationLabel()) :
$this->view->_('Votre réservation est enregistrée. Nous vous informerons quand le document sera disponible');
}
return ($current_hold
&& ($location_label = $current_hold->getPickupLocationLabel())) ?
$this->view->_('Votre réservation est enregistrée.<br>Nous vous informerons quand le document%s sera disponible pour être retiré à : %s',
$this->_getMessageNoticeLabel($item_id), $location_label) :
$this->view->_('Votre réservation est enregistrée.<br>Nous vous informerons quand le document%s sera disponible',
$this->_getMessageNoticeLabel($item_id));
}
$this->renderPopupResult($this->view->_('Réservation'),
$message);
protected function _getMessageNoticeLabel($item_id) {
if (!$item_id
|| !($item = Class_Exemplaire::find($item_id))
|| !($notice = $item->getNotice()))
return '';
return sprintf(" '%s / %s'",
$notice->getTitrePrincipal(),
$notice->getAuteurPrincipal());
}
......
......@@ -189,26 +189,50 @@ class RechercheControllerReservationWithWebServiceKohaTest extends AbstractContr
/** @test */
public function withMatchingHoldMessageShouldContainsPickupLocation() {
$this->_dispatchWithEmprunteurAndAssertContentEquals(
$this->_prepareEmprunteurHolding($this->fixture('Class_Exemplaire', ['id' => 456])),
"Votre réservation est enregistrée. Nous vous informerons quand le document sera disponible pour être retiré à : Valensole");
$this->_prepareEmprunteurHolding($this->fixture('Class_Exemplaire', ['id' => 456]),
'Valensole'),
'Votre réservation est enregistrée.<br>Nous vous informerons quand le document sera disponible pour être retiré à : Valensole');
}
/** @test */
public function withMatchingHoldAndRecordMessageShouldContainsPickupLocationAndRecordTitleAuthor() {
$exemplaire = $this->fixture('Class_Exemplaire',
['id' => 456,
'notice' => $this->fixture('Class_Notice',
['id' => 8890,
'titre_principal' => 'Arcadia',
'auteur_principal' => 'Matsumoto'])]);
$this->_dispatchWithEmprunteurAndAssertContentEquals(
$this->_prepareEmprunteurHolding($exemplaire, 'Valensole'),
'Votre réservation est enregistrée.<br>Nous vous informerons quand le document \'Arcadia / Matsumoto\' sera disponible pour être retiré à : Valensole');
}
/** @test */
public function withoutMatchingHoldMessageShouldNotContainsPickupLocation() {
$this->_dispatchWithEmprunteurAndAssertContentEquals(
$this->_prepareEmprunteurHolding(null),
"Votre réservation est enregistrée. Nous vous informerons quand le document sera disponible");
$this->_prepareEmprunteurHolding(null, 'Valensole'),
'Votre réservation est enregistrée.<br>Nous vous informerons quand le document sera disponible');
}
/** @test */
public function withMatchingHoldAndNoPickupLocationShouldNotContainsPickupLocation() {
$this->_dispatchWithEmprunteurAndAssertContentEquals(
$this->_prepareEmprunteurHolding($this->fixture('Class_Exemplaire', ['id' => 456]),
null),
'Votre réservation est enregistrée.<br>Nous vous informerons quand le document sera disponible');
}
protected function _prepareEmprunteurHolding($item) {
protected function _prepareEmprunteurHolding($item, $pickup_label) {
$this->jajm->setIdabon(395749);
$exemplaire = (new Class_WebService_SIGB_Exemplaire(2))
->setExemplaireOPAC($item);
$hold = new Class_WebService_SIGB_Reservation(2, $exemplaire);
$hold->setPickupLocationLabel('Valensole');
$hold->setPickupLocationLabel($pickup_label);
$emprunteur_jajm = Class_WebService_SIGB_Emprunteur::newInstance(2, 'jajm');
$emprunteur_jajm->reservationsAdd($hold);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment