1 angular.module('egCurbsideAppDep')
3 .directive('egCurbsideArrivedManager', function() {
8 templateUrl: './circ/curbside/t_arrived_manager',
10 ['$scope','$q','egCurbsideCoreSvc','egCore','egGridDataProvider','egProgressDialog',
11 '$uibModal','$timeout','$location','egConfirmDialog','ngToast','$interval',
12 function($scope , $q , egCurbsideCoreSvc , egCore , egGridDataProvider , egProgressDialog ,
13 $uibModal , $timeout , $location , egConfirmDialog , ngToast , $interval) {
15 $scope.gridControls = {};
17 $scope.wasHandled = {};
18 $scope.refreshNeeded = false;
20 latestTime = undefined;
21 var checkRefresh = undefined;
22 function startRefreshCheck() {
23 if (!angular.isDefined(checkRefresh)) {
24 checkRefresh = $interval(function() {
25 egCurbsideCoreSvc.get_latest_arrived().then(function(latest) {
26 if (angular.isDefined(latest)) {
27 if (angular.isDefined(latestTime) && latestTime != latest) {
28 $scope.refreshNeeded = true;
37 function stopRefreshCheck() {
38 if (angular.isDefined(checkRefresh)) {
39 $interval.cancel(checkRefresh);
40 checkRefresh = undefined;
43 this.$onInit = function() {
46 this.$onDestroy = function() {
50 $scope.gridDataProvider = egGridDataProvider.instance({
51 get : function(offset, count) {
52 $scope.wasHandled = {};
53 $scope.refreshNeeded = false;
55 return egCurbsideCoreSvc.get_arrived(offset, count);
59 $scope.refresh_arrived = function() {
60 $scope.gridControls.refresh();
63 $scope.gridCellHandlers = { };
64 $scope.gridCellHandlers.mark_delivered = function(id) {
65 var events_to_handle_later = [];
66 egProgressDialog.open();
67 egCurbsideCoreSvc.mark_delivered(id).then(function(resp) {
68 egProgressDialog.close();
70 events_to_handle_later.pop(); // last element is resp, our param
71 if (events_to_handle_later.length) { // this means we got at least one CO attempt
74 angular.forEach(events_to_handle_later, function (evt) {
75 if (bad_event) return; // already warned staff, leave
76 if (angular.isArray(evt)) evt = evt[0]; // we only need to look at the first event from each CO response
78 evt = egCore.evt.parse(evt);
79 if (!bad_event && evt && evt.textcode != 'SUCCESS') { // at least one non-success event, show the first event.
81 ngToast.danger(egCore.strings.$replace(
82 egCore.strings.FAILED_CURBSIDE_CHECKOUT,
83 { slot_id : id, evt_code : bad_event.code }
89 if (evt = egCore.evt.parse(resp)) {
90 ngToast.danger(egCore.strings.$replace(
91 egCore.strings.FAILED_CURBSIDE_MARK_DELIVERED,
92 { slot_id : id, evt_code : evt.code }
97 if (!angular.isDefined(resp)) {
98 ngToast.warning(egCore.strings.$replace(
99 egCore.strings.NOTFOUND_CURBSIDE_MARK_DELIVERED,
105 ngToast.success(egCore.strings.$replace(
106 egCore.strings.SUCCESS_CURBSIDE_MARK_DELIVERED,
109 $scope.wasHandled[id] = true;
110 $timeout(function() { $scope.refresh_arrived() }, 500);
111 },null, function (resp) {
112 events_to_handle_later.push(resp);
115 $scope.gridCellHandlers.wasHandled = function(id) {
116 return $scope.wasHandled[id];
118 $scope.gridCellHandlers.patronIsBlocked = function(usr) {
119 return egCurbsideCoreSvc.patron_blocked(usr);