6 angular.module('egUserBucketMod', ['egCoreMod'])
7 .factory('bucketSvc', ['$q','egCore', function($q, egCore) {
10 allBuckets : [], // un-fleshed user buckets
11 barcodeString : '', // last scanned barcode
12 barcodeRecords : [], // last scanned barcode results
13 currentBucket : null, // currently viewed bucket
15 // per-page list collections
19 // fetches all staff/user buckets for the authenticated user
20 // this function may only be called after startup.
21 fetchUserBuckets : function(force) {
22 if (this.allBuckets.length && !force) return;
24 return egCore.net.request(
26 'open-ils.actor.container.retrieve_by_class.authoritative',
27 egCore.auth.token(), egCore.auth.user().id(),
28 'user', 'staff_client'
29 ).then(function(buckets) { self.allBuckets = buckets });
32 createBucket : function(name, desc) {
33 var deferred = $q.defer();
34 var bucket = new egCore.idl.cub();
35 bucket.owner(egCore.auth.user().id());
37 bucket.description(desc || '');
38 bucket.btype('staff_client');
42 'open-ils.actor.container.create',
43 egCore.auth.token(), 'user', bucket
44 ).then(function(resp) {
46 if (typeof resp == 'object') {
47 console.error('bucket create error: ' + js2JSON(resp));
50 deferred.resolve(resp);
55 return deferred.promise;
58 // edit the current bucket. since we edit the
59 // local object, there's no need to re-fetch.
60 editBucket : function(args) {
61 var bucket = service.currentBucket;
62 bucket.name(args.name);
63 bucket.description(args.desc);
65 return egCore.net.request(
67 'open-ils.actor.container.update',
68 egCore.auth.token(), 'user', bucket
73 // returns 1 if full refresh is needed
74 // returns 2 if list refresh only is needed
75 service.bucketRefreshLevel = function(id) {
76 if (!service.currentBucket) return 1;
77 if (service.bucketNeedsRefresh) {
78 service.bucketNeedsRefresh = false;
79 service.currentBucket = null;
82 if (service.currentBucket.id() != id) return 1;
86 // returns a promise, resolved with bucket, rejected if bucket is
88 service.fetchBucket = function(id) {
89 var refresh = service.bucketRefreshLevel(id);
90 if (refresh == 2) return $q.when(service.currentBucket);
92 var deferred = $q.defer();
96 'open-ils.actor.container.flesh.authoritative',
97 egCore.auth.token(), 'user', id
98 ).then(function(bucket) {
99 var evt = egCore.evt.parse(bucket);
102 deferred.reject(evt);
105 service.currentBucket = bucket;
106 deferred.resolve(bucket);
109 return deferred.promise;
112 // deletes a single container item from a bucket by container item ID.
113 // promise is rejected on failure
114 service.detachUser = function(itemId) {
115 var deferred = $q.defer();
118 'open-ils.actor.container.item.delete',
119 egCore.auth.token(), 'user', itemId
120 ).then(function(resp) {
121 var evt = egCore.evt.parse(resp);
124 deferred.reject(evt);
127 console.log('detached bucket item ' + itemId);
128 deferred.resolve(resp);
131 return deferred.promise;
134 // delete bucket by ID.
135 // resolved w/ response on successful delete,
136 // rejected otherwise.
137 service.deleteBucket = function(id) {
138 var deferred = $q.defer();
141 'open-ils.actor.container.full_delete',
142 egCore.auth.token(), 'user', id
143 ).then(function(resp) {
144 var evt = egCore.evt.parse(resp);
147 deferred.reject(evt);
150 deferred.resolve(resp);
152 return deferred.promise;