},{
($limit ? (limit => $limit) : ()),
($offset ? (offset => $offset) : ()),
- flesh => 2, flesh_fields => {acsp => ['patron'], au => ['card','standing_penalties']},
+ flesh => 3, flesh_fields => {acsp => ['patron'], au => ['card','standing_penalties'], ausp => ['standing_penalty']},
order_by => { acsp => 'arrival' }
}]);
},{
($limit ? (limit => $limit) : ()),
($offset ? (offset => $offset) : ()),
- flesh => 2, flesh_fields => {acsp => ['patron'], au => ['card','standing_penalties']},
+ flesh => 3, flesh_fields => {acsp => ['patron'], au => ['card','standing_penalties'], ausp => ['standing_penalty']},
order_by => { acsp => 'slot' }
}]);
},{
($limit ? (limit => $limit) : ()),
($offset ? (offset => $offset) : ()),
- flesh => 2, flesh_fields => {acsp => ['patron'], au => ['card','standing_penalties']},
+ flesh => 3, flesh_fields => {acsp => ['patron'], au => ['card','standing_penalties'], ausp => ['standing_penalty']},
order_by => { acsp => 'slot' }
}]);
label="[% l('Refresh List')%]"></eg-grid-menu-item>
<eg-grid-field label="[% l('Pickup Date/Time') %]" path="slot.slot" datatype="timestamp"></eg-grid-field>
- <eg-grid-field label="[% l('Patron') %]" path="slot.patron" compiled>
+ <eg-grid-field label="[% l('Patron') %]" path="slot.patron" compiled handlers="gridCellHandlers">
<a href="./circ/patron/{{item.slot.patron().id()}}/holds" target="_blank">
{{item.slot.patron().family_name()}} / {{item.slot.patron().card().barcode()}}
<span class="glyphicon glyphicon-new-window"></span>
<span ng-show="item.slot.notes()">
<strong>[% l('Notes:') %]</strong> {{item.slot.notes()}}
</span>
+ <div class="alert alert-warning" ng-show="col.handlers.patronIsBlocked(item['slot'].patron())">
+ [% l('Patron is blocked from checkouts.') %]
+ </div>
</eg-grid-field>
<eg-grid-field label="[% l('Appointment ID') %]" path="slot.id"></eg-grid-field>
<eg-grid-field label="[% l('Action') %]" handlers="gridCellHandlers" compiled>
<button class="btn btn-sm btn-primary"
- ng-disabled="col.handlers.wasHandled(item['slot_id'])"
+ ng-disabled="col.handlers.wasHandled(item['slot_id']) || col.handlers.patronIsBlocked(item['slot'].patron())"
ng-click="col.handlers.mark_delivered(item['slot_id'])">
[% l('Check Out Items And Mark As Delivered') %]
</button>
label="[% l('Refresh List')%]"></eg-grid-menu-item>
<eg-grid-field label="[% l('Pickup Date/Time') %]" path="slot.slot" datatype="timestamp"></eg-grid-field>
- <eg-grid-field label="[% l('Patron') %]" path="slot.patron" compiled>
+ <eg-grid-field label="[% l('Patron') %]" path="slot.patron" compiled handlers="gridCellHandlers">
<a href="./circ/patron/{{item.slot.patron().id()}}/holds" target="_blank">
{{item.slot.patron().family_name()}} / {{item.slot.patron().card().barcode()}}
<span class="glyphicon glyphicon-new-window"></span>
<span ng-show="item.slot.notes()">
<strong>[% l('Notes:') %]</strong> {{item.slot.notes()}}
</span>
+ <div class="alert alert-warning" ng-show="col.handlers.patronIsBlocked(item['slot'].patron())">
+ [% l('Patron is blocked from checkouts.') %]
+ </div>
</eg-grid-field>
<eg-grid-field label="[% l('Appointment ID') %]" path="slot.id"></eg-grid-field>
<eg-grid-field label="[% l('Action') %]" handlers="gridCellHandlers" compiled>
<div class="row">
<div class="col-xs-12">
<button class="btn btn-sm btn-primary"
- ng-disabled="col.handlers.wasHandled(item['slot_id'])"
+ ng-disabled="col.handlers.wasHandled(item['slot_id']) || col.handlers.patronIsBlocked(item['slot'].patron())"
ng-click="col.handlers.mark_arrived(item['slot_id'])">
[% l('Mark As Patron Arrived') %]
</button>
<div class="row">
<div class="col-xs-12">
<button class="btn btn-sm btn-success"
- ng-disabled="col.handlers.wasHandled(item['slot_id'])"
+ ng-disabled="col.handlers.wasHandled(item['slot_id']) || col.handlers.patronIsBlocked(item['slot'].patron())"
ng-click="col.handlers.mark_delivered(item['slot_id'])">
[% l('Check Out Items And Mark As Delivered') %]
</button>
label="[% l('Refresh List')%]"></eg-grid-menu-item>
<eg-grid-field label="[% l('Pickup Date/Time') %]" path="slot.slot" datatype="timestamp"></eg-grid-field>
- <eg-grid-field label="[% l('Patron') %]" path="slot.patron" compiled>
+ <eg-grid-field label="[% l('Patron') %]" path="slot.patron" compiled handlers="gridCellHandlers">
<a href="./circ/patron/{{item.slot.patron().id()}}/holds" target="_blank">
{{item.slot.patron().family_name()}} / {{item.slot.patron().card().barcode()}}
<span class="glyphicon glyphicon-new-window"></span>
<span ng-show="item.slot.notes()">
<strong>[% l('Notes:') %]</strong> {{item.slot.notes()}}
</span>
+ <div class="alert alert-warning" ng-show="col.handlers.patronIsBlocked(item['slot'].patron())">
+ [% l('Patron is blocked from checkouts.') %]
+ </div>
</eg-grid-field>
<eg-grid-field label="[% l('Appointment ID') %]" path="slot.id"></eg-grid-field>
<eg-grid-field label="[% l('Items for Pickup') %]" path="holds" compiled>
</eg-grid-field>
<eg-grid-field label="[% l('Action') %]" handlers="gridCellHandlers" compiled>
<button class="btn btn-sm btn-primary"
- ng-disabled="col.handlers.wasHandled(item['slot_id'])"
+ ng-disabled="col.handlers.wasHandled(item['slot_id']) || col.handlers.patronIsBlocked(item['slot'].patron())"
ng-click="col.handlers.mark_staged(item['slot_id'])">
[% l('Mark As Staged And Ready') %]
</button>
$scope.gridCellHandlers.wasHandled = function(id) {
return $scope.wasHandled[id];
}
+ $scope.gridCellHandlers.patronIsBlocked = function(usr) {
+ return egCurbsideCoreSvc.patron_blocked(usr);
+ }
}]}});
$scope.gridCellHandlers.wasHandled = function(id) {
return $scope.wasHandled[id];
}
+ $scope.gridCellHandlers.patronIsBlocked = function(usr) {
+ return egCurbsideCoreSvc.patron_blocked(usr);
+ }
}]}});
'$uibModal','$timeout','$location','egConfirmDialog','ngToast','$interval',
function($scope , $q , egCurbsideCoreSvc , egCore , egGridDataProvider ,
$uibModal , $timeout , $location , egConfirmDialog , ngToast , $interval) {
-console.debug('GMC');
$scope.gridControls = {};
$scope.gridCellHandlers.wasHandled = function(id) {
return $scope.wasHandled[id];
}
+ $scope.gridCellHandlers.patronIsBlocked = function(usr) {
+ return egCurbsideCoreSvc.patron_blocked(usr);
+ }
}]}});
);
}
+ service.patron_blocked = function(usr) {
+ if (usr.barred() == 't' ||
+ usr.active() == 'f') {
+ return true;
+ }
+ var expire = Date.parse(usr.expire_date());
+ if (expire < new Date()) {
+ return true;
+ }
+ var blocked_by_penalty = false;
+ angular.forEach(usr.standing_penalties(), function(penalty) {
+ if (blocked_by_penalty) return;
+ if (penalty.stop_date()) return;
+ if (!penalty.standing_penalty().block_list()) return;
+ if (penalty.standing_penalty().block_list().match(/CIRC/))
+ blocked_by_penalty = true;
+ });
+ return blocked_by_penalty;
+ }
return service;
}])