--- /dev/null
+<div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close"
+ ng-click="ok()" aria-hidden="true">×</button>
+ <h4 class="modal-title">[% l('Transit Slip') %]</h4>
+ </div>
+ <div class="modal-body">
+ <div>
+ <span>[% l('Destination') %]</span>
+ <strong>{{dest.shortname()}}</strong>
+ </div>
+ <br/>
+ <div>
+ <address>
+ <strong>{{dest.name()}}</strong><br>
+ {{destAddr.street1()}} {{destAddr.street2()}}<br/>
+ {{destAddr.city()}}, {{destAddr.state()}} {{destAddr.post_code()}}<br/>
+ <abbr title="[% l('Phone') %]">P:</abbr> {{dest.phone()}}
+ </address>
+ </div>
+ <div>
+ <span>[% l('Item Barcode:') %]</span>
+ <span>{{evt.payload.copy.barcode()}}</span>
+ </div>
+ <div>
+ <span>[% l('Title:') %]</span>
+ <span>{{evt.payload.record.title()}}</span>
+ </div>
+ <div>
+ <span>[% l('Author:') %]</span>
+ <span>{{evt.payload.record.author()}}</span>
+ </div>
+ <div ng-if="holdUser">
+ <br/>
+ <div>[% |l %]
+ Hold for patron {{holdUser.family_name()}},
+ {{holdUser.first_given_name()}} {{holdUser.second_given_name()}}
+ [% END %]
+ </div>
+ <div>
+ <span>[% l('Patron Barcode:') %]</span>
+ <span>{{holdUser.card().barcode()}}</span>
+ </div>
+ <br/>
+ <div>
+ <span>[% l('Request Date:') %]</span>
+ <span>{{evt.payload.hold.request_time() | date:'shortDate'}}</span>
+ </div>
+ <div>
+ <span>[% l('Slip Date:') %]</span>
+ <span>{{now | date:'shortDate'}}</span>
+ </div>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <input type="button" class="btn btn-primary" disabled="disabled"
+ ng-click="print()" value="[% l('Print') %]"/>
+ <input type="submit" class="btn btn-warning"
+ ng-click="ok()" value="[% l('Do Not Print') %]"/>
+ </div>
+ </div>
+</div>
}])
/**
+ * locally cached org unit addresses -- needed for route slips, etc.
+ */
+.factory('orgAddrSvc',
+ ['$q','egOrg','egPCRUD',
+function($q, egOrg, egPCRUD) {
+ var service = {cache : {}};
+ service.getAddr = function(org_id, addr_type) {
+ if (service.cache[org_id]) {
+ if (service.cache[org_id][addr_type]) {
+ return $q.when(service.cache[org_id][addr_type]);
+ }
+ } else {
+ service.cache[org_id] = {};
+ }
+
+ var deferred = $q.defer();
+ egPCRUD.retrieve('aoa', egOrg.get(org_id).holds_address())
+ .then(function(addr) {
+ service.cache[org_id][addr_type] = addr;
+ deferred.resolve(addr);
+ });
+ return deferred.promise;
+ }
+ return service;
+}])
+
+
+/**
* Manages checkin
*/
.controller('CheckinCtrl',
- ['$scope','$modal','egStartup','checkinSvc','egNet','egAuth',
-function($scope, $modal, egStartup, checkinSvc, egNet, egAuth) {
+ ['$scope','$q','$modal','egStartup','checkinSvc','egNet','egAuth','orgAddrSvc','egOrg','egPCRUD',
+function($scope, $q, $modal, egStartup, checkinSvc, egNet, egAuth, orgAddrSvc, egOrg, egPCRUD) {
// run egStartup here since it's not handled via resolver
egStartup.go().then(
case 'SUCCESS':
case 'ROUTE_ITEM':
checkinSvc.checkins.items.push(evt);
+ openRouteDialog(evt, args);
break;
case 'ASSET_COPY_NOT_FOUND':
openAlertDialog('uncat_alert_dialog', evt, args);
}).result.then(function() {$scope.focusMe = true});
}
+ function openRouteDialog(evt, args) {
+ // avoid unintended checkins while the dialog is open
+ $scope.blurMe = true;
+ $modal.open({
+ templateUrl: './circ/checkin/t_transit_dialog',
+ controller:
+ ['$scope', '$modalInstance', 'destAddr', 'holdUser',
+ function($scope, $modalInstance, destAddr, holdUser) {
+ $scope.destAddr = destAddr;
+ $scope.holdUser = holdUser;
+ $scope.dest = egOrg.get(evt.org);
+ $scope.evt = evt;
+ $scope.now = new Date();
+ $scope.ok = function() {$modalInstance.close()}
+ }],
+ resolve : {
+ destAddr : function() {
+ // TODO: response payload should flesh dest addr
+ return orgAddrSvc.getAddr(evt.org, 'holds_address');
+ },
+ holdUser : function() {
+ // TODO: response payload should flesh hold recipient
+ if (!evt.payload.hold) return $q.when();
+ return egPCRUD.retrieve('au',
+ evt.payload.hold.usr(), {
+ flesh : 1,
+ flesh_fields : {'au' : ['card']}
+ }
+ );
+ }
+ }
+ }).result.then(function() {$scope.focusMe = true});
+ }
+
}])