).then(function(evt) {
- if (angular.isArray(evt)) evt = evt[0];
+ if (!angular.isArray(evt)) evt = [evt];
return service.flesh_response_data('checkout', evt, params, options)
.then(function() {
).then(function(evt) {
- if (angular.isArray(evt)) evt = evt[0];
+ if (!angular.isArray(evt)) evt = [evt];
return service.flesh_response_data(
'renew', evt, params, options)
).then(function(evt) {
- if (angular.isArray(evt)) evt = evt[0];
+ if (!angular.isArray(evt)) evt = [evt];
return service.flesh_response_data(
'checkin', evt, params, options)
.then(function() {
service.munge_resp_data = function(final_resp) {
var data = final_resp.data = {};
- if (!final_resp.evt) return;
+ if (!final_resp.evt[0]) return;
- var payload = final_resp.evt.payload;
+ var payload = final_resp.evt[0].payload;
if (!payload) return;
data.circ = payload.circ;
data.transit = payload.transit;
data.status = payload.status;
data.message = payload.message;
- data.title = final_resp.evt.title;
- data.author = final_resp.evt.author;
- data.isbn = final_resp.evt.isbn;
- data.route_to = final_resp.evt.route_to;
+ data.title = final_resp.evt[0].title;
+ data.author = final_resp.evt[0].author;
+ data.isbn = final_resp.evt[0].isbn;
+ data.route_to = final_resp.evt[0].route_to;
// for checkin, the mbts lives on the main circ
if (payload.circ && payload.circ.billable_transaction())
// override attempt already made and failed.
// NOTE: I don't think we'll ever get here, since the
// override attempt should produce a perm failure...
- console.debug('override failed: ' + evt.textcode);
+ angular.forEach(evt, function(e){ console.debug('override failed: ' + e.textcode); });
return $q.reject();
}
- if (service.auto_override_checkout_events[evt.textcode]) {
- // user has already opted to override this type
- // of event. Re-run the checkout w/ override.
+ if (evt.filter(function(e){return !service.auto_override_checkout_events[e.textcode];}).length == 0) {
+ // user has already opted to override these type
+ // of events. Re-run the checkout w/ override.
options.override = true;
return service.checkout(params, options);
}
// Some events offer a stock override dialog, while others
// require additional context.
- switch(evt.textcode) {
+ switch(evt[0].textcode) {
case 'COPY_NOT_AVAILABLE':
- return service.copy_not_avail_dialog(evt, params, options);
+ return service.copy_not_avail_dialog(evt[0], params, options);
case 'COPY_ALERT_MESSAGE':
- return service.copy_alert_dialog(evt, params, options, 'checkout');
+ return service.copy_alert_dialog(evt[0], params, options, 'checkout');
default:
return service.override_dialog(evt, params, options, 'checkout');
}
// override attempt already made and failed.
// NOTE: I don't think we'll ever get here, since the
// override attempt should produce a perm failure...
- console.debug('override failed: ' + evt.textcode);
+ angular.forEach(evt, function(e){ console.debug('override failed: ' + e.textcode); });
return $q.reject();
}
// renewal auto-overrides are the same as checkout
- if (service.auto_override_checkout_events[evt.textcode]) {
- // user has already opted to override this type
- // of event. Re-run the renew w/ override.
+ if (evt.filter(function(e){return !service.auto_override_checkout_events[e.textcode];}).length == 0) {
+ // user has already opted to override these type
+ // of events. Re-run the renew w/ override.
options.override = true;
return service.renew(params, options);
}
// Some events offer a stock override dialog, while others
// require additional context.
- switch(evt.textcode) {
+ switch(evt[0].textcode) {
case 'COPY_ALERT_MESSAGE':
- return service.copy_alert_dialog(evt, params, options, 'renew');
+ return service.copy_alert_dialog(evt[0], params, options, 'renew');
default:
return service.override_dialog(evt, params, options, 'renew');
}
// override attempt already made and failed.
// NOTE: I don't think we'll ever get here, since the
// override attempt should produce a perm failure...
- console.debug('override failed: ' + evt.textcode);
+ angular.forEach(evt, function(e){ console.debug('override failed: ' + e.textcode); });
return $q.reject();
}
if (options.suppress_checkin_popups
- && service.checkin_suppress_overrides.indexOf(evt.textcode) > -1) {
- // Event is suppressed. Re-run the checkin w/ override.
+ && evt.filter(function(e){return service.checkin_suppress_overrides.indexOf(e.textcode) == -1;}).length == 0) {
+ // Events are suppressed. Re-run the checkin w/ override.
options.override = true;
return service.checkin(params, options);
}
// Some events offer a stock override dialog, while others
// require additional context.
- switch(evt.textcode) {
+ switch(evt[0].textcode) {
case 'COPY_ALERT_MESSAGE':
- return service.copy_alert_dialog(evt, params, options, 'checkin');
+ return service.copy_alert_dialog(evt[0], params, options, 'checkin');
default:
return service.override_dialog(evt, params, options, 'checkin');
}
var final_resp = {evt : evt, params : params, options : options};
// track the barcode regardless of whether it refers to a copy
- evt.copy_barcode = params.copy_barcode;
+ angular.forEach(evt, function(e){ e.copy_barcode = params.copy_barcode; });
// Overridable Events
- if (service.renew_overridable_events.indexOf(evt.textcode) > -1)
+ if (evt.filter(function(e){return service.renew_overridable_events.indexOf(e.textcode) > -1;}).length > 0)
return service.handle_overridable_renew_event(evt, params, options);
// Other events
- switch (evt.textcode) {
+ switch (evt[0].textcode) {
case 'SUCCESS':
return $q.when(final_resp);
case 'PATRON_ACCOUNT_EXPIRED':
case 'CIRC_CLAIMS_RETURNED':
return service.exit_alert(
- egCore.strings[evt.textcode],
+ egCore.strings[evt[0].textcode],
{barcode : params.copy_barcode}
);
case 'PERM_FAILURE':
return service.exit_alert(
- egCore.strings[evt.textcode],
- {permission : evt.ilsperm}
+ egCore.strings[evt[0].textcode],
+ {permission : evt[0].ilsperm}
);
default:
return service.exit_alert(
egCore.strings.CHECKOUT_FAILED_GENERIC, {
barcode : params.copy_barcode,
- textcode : evt.textcode,
- desc : evt.desc
+ textcode : evt[0].textcode,
+ desc : evt[0].desc
}
);
}
var final_resp = {evt : evt, params : params, options : options};
// track the barcode regardless of whether it refers to a copy
- evt.copy_barcode = params.copy_barcode;
+ angular.forEach(evt, function(e){ e.copy_barcode = params.copy_barcode; });
// Overridable Events
- if (service.checkout_overridable_events.indexOf(evt.textcode) > -1)
+ if (evt.filter(function(e){return service.checkout_overridable_events.indexOf(e.textcode) > -1;}).length > 0)
return service.handle_overridable_checkout_event(evt, params, options);
// Other events
- switch (evt.textcode) {
+ switch (evt[0].textcode) {
case 'SUCCESS':
return $q.when(final_resp);
case 'PATRON_ACCOUNT_EXPIRED':
case 'CIRC_CLAIMS_RETURNED':
return service.exit_alert(
- egCore.strings[evt.textcode],
+ egCore.strings[evt[0].textcode],
{barcode : params.copy_barcode}
);
case 'PERM_FAILURE':
return service.exit_alert(
- egCore.strings[evt.textcode],
- {permission : evt.ilsperm}
+ egCore.strings[evt[0].textcode],
+ {permission : evt[0].ilsperm}
);
default:
return service.exit_alert(
egCore.strings.CHECKOUT_FAILED_GENERIC, {
barcode : params.copy_barcode,
- textcode : evt.textcode,
- desc : evt.desc
+ textcode : evt[0].textcode,
+ desc : evt[0].desc
}
);
}
service.flesh_response_data = function(action, evt, params, options) {
var promises = [];
var payload;
- if (!evt || !(payload = evt.payload)) return $q.when();
+ if (!evt[0] || !(payload = evt[0].payload)) return $q.when();
promises.push(service.flesh_copy_location(payload.copy));
if (payload.copy) {
}
// extract precat values
- evt.title = payload.record ? payload.record.title() :
- (payload.copy ? payload.copy.dummy_title() : null);
+ angular.forEach(evt, function(e){ e.title = payload.record ? payload.record.title() :
+ (payload.copy ? payload.copy.dummy_title() : null);});
- evt.author = payload.record ? payload.record.author() :
- (payload.copy ? payload.copy.dummy_author() : null);
+ angular.forEach(evt, function(e){ e.author = payload.record ? payload.record.author() :
+ (payload.copy ? payload.copy.dummy_author() : null);});
- evt.isbn = payload.record ? payload.record.isbn() :
- (payload.copy ? payload.copy.dummy_isbn() : null);
+ angular.forEach(evt, function(e){ e.isbn = payload.record ? payload.record.isbn() :
+ (payload.copy ? payload.copy.dummy_isbn() : null);});
return $q.all(promises);
}
// opens a dialog asking the user if they would like to override
// the returned event.
service.override_dialog = function(evt, params, options, action) {
+ if (!angular.isArray(evt)) evt = [evt];
return $modal.open({
templateUrl: './circ/share/t_event_override_dialog',
controller:
['$scope', '$modalInstance',
function($scope, $modalInstance) {
- $scope.evt = evt;
- $scope.auto_override =
- service.checkout_auto_override_after_first.indexOf(evt.textcode) > -1;
+ $scope.events = evt;
+ $scope.auto_override =
+ evt.filter(function(e){
+ return service.checkout_auto_override_after_first.indexOf(evt.textcode) > -1;
+ }).length > 0;
$scope.copy_barcode = params.copy_barcode; // may be null
$scope.ok = function() { $modalInstance.close() }
$scope.cancel = function ($event) {
}
// checkout/renew support override-after-first
- if (service.checkout_auto_override_after_first.indexOf(evt.textcode) > -1)
- service.auto_override_checkout_events[evt.textcode] = true;
+ angular.forEach(evt, function(e){
+ if (service.checkout_auto_override_after_first.indexOf(e.textcode) > -1)
+ service.auto_override_checkout_events[e.textcode] = true;
+ });
return service[action](params, options);
}
}
service.copy_not_avail_dialog = function(evt, params, options) {
+ if (angular.isArray(evt)) evt = evt[0];
return $modal.open({
templateUrl: './circ/share/t_copy_not_avail_dialog',
controller:
// find the open transit for the given copy barcode; flesh the org
// units locally.
service.find_copy_transit = function(evt, params, options) {
+ if (angular.isArray(evt)) evt = evt[0];
if (evt && evt.payload && evt.payload.transit)
return $q.when(evt.payload.transit);
}
service.copy_in_transit_dialog = function(evt, params, options) {
+ if (angular.isArray(evt)) evt = evt[0];
return $modal.open({
templateUrl: './circ/share/t_copy_in_transit_dialog',
controller:
}
service.circ_exists_dialog = function(evt, params, options) {
+ if (angular.isArray(evt)) evt = evt[0];
if (!evt.payload.old_circ) {
return egCore.net.request(
// alert when copy location alert_message is set.
// This does not affect processing, it only produces a click-through
service.handle_checkin_loc_alert = function(evt, params, options) {
+ if (angular.isArray(evt)) evt = evt[0];
var copy = evt && evt.payload ? evt.payload.copy : null;
}
service.handle_checkin_resp = function(evt, params, options) {
+ if (!angular.isArray(evt)) evt = [evt];
var final_resp = {evt : evt, params : params, options : options};
var copy, hold, transit;
- if (evt.payload) {
- copy = evt.payload.copy;
- hold = evt.payload.hold;
- transit = evt.payload.transit;
+ if (evt[0].payload) {
+ copy = evt[0].payload.copy;
+ hold = evt[0].payload.hold;
+ transit = evt[0].payload.transit;
}
// track the barcode regardless of whether it's valid
- evt.copy_barcode = params.copy_barcode;
+ angular.forEach(evt, function(e){ e.copy_barcode = params.copy_barcode; });
- console.debug('checkin event ' + evt.textcode);
+ angular.forEach(evt, function(e){ console.debug('checkin event ' + e.textcode); });
- if (service.checkin_overridable_events.indexOf(evt.textcode) > -1)
+ if (evt.filter(function(e){return service.checkin_overridable_events.indexOf(e.textcode) > -1;}).length > 0)
return service.handle_overridable_checkin_event(evt, params, options);
- switch (evt.textcode) {
+ switch (evt[0].textcode) {
case 'SUCCESS':
case 'NO_CHANGE':
if (hold.pickup_lib() == egCore.auth.user().ws_ou()) {
// inform user if the item is on the local holds shelf
- evt.route_to = egCore.strings.ROUTE_TO_HOLDS_SHELF;
+ evt[0].route_to = egCore.strings.ROUTE_TO_HOLDS_SHELF;
return service.route_dialog(
'./circ/share/t_hold_shelf_dialog',
- evt, params, options
+ evt[0], params, options
).then(function() { return final_resp });
} else {
}
case 11: /* CATALOGING */
- evt.route_to = egCore.strings.ROUTE_TO_CATALOGING;
+ evt[0].route_to = egCore.strings.ROUTE_TO_CATALOGING;
return $q.when(final_resp);
case 15: /* ON_RESERVATION_SHELF */
case 'ROUTE_ITEM':
return service.route_dialog(
'./circ/share/t_transit_dialog',
- evt, params, options
+ evt[0], params, options
).then(function() { return final_resp });
case 'ASSET_COPY_NOT_FOUND':
.result.then(function() {return final_resp});
case 'ITEM_NOT_CATALOGED':
- evt.route_to = egCore.strings.ROUTE_TO_CATALOGING;
+ evt[0].route_to = egCore.strings.ROUTE_TO_CATALOGING;
if (options.no_precat_alert)
return $q.when(final_resp);
return egAlertDialog.open(
.result.then(function() {return final_resp});
default:
- console.warn('unhandled checkin response : ' + evt.textcode);
+ console.warn('unhandled checkin response : ' + evt[0].textcode);
return $q.when(final_resp);
}
}
// collect transit, address, and hold info that's not already
// included in responses.
service.collect_route_data = function(tmpl, evt, params, options) {
+ if (angular.isArray(evt)) evt = evt[0];
var promises = [];
var data = {};
}
service.route_dialog = function(tmpl, evt, params, options) {
+ if (angular.isArray(evt)) evt = evt[0];
return service.collect_route_data(tmpl, evt, params, options)
.then(function(data) {
// action == what action to take if the user confirms the alert
service.copy_alert_dialog = function(evt, params, options, action) {
+ if (angular.isArray(evt)) evt = evt[0];
return egConfirmDialog.open(
egCore.strings.COPY_ALERT_MSG_DIALOG_TITLE,
evt.payload, // payload == alert message text