]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/js/ui/default/staff/services/user.js
webstaff: Add modal "request items" to holding view
[Evergreen.git] / Open-ILS / web / js / ui / default / staff / services / user.js
1 /** 
2  * Service for fetching fleshed user objects.
3  */
4
5 angular.module('egUserMod', ['egCoreMod'])
6
7 .factory('egUser', 
8        ['$q','$timeout','egNet','egAuth','egOrg',
9 function($q,  $timeout,  egNet,  egAuth,  egOrg) {
10
11     var service = {
12         defaultFleshFields : [
13             'card',                                                                
14             'standing_penalties',                                                  
15             'addresses',                                                           
16             'billing_address',                                                     
17             'mailing_address',                                                     
18             'stat_cat_entries',                                                    
19             'usr_activity' 
20         ]
21     };
22
23     service.format_name = function(patron_obj) {
24         var patron_name = ( patron_obj.prefix() ? patron_obj.prefix() + ' ' : '') +
25             patron_obj.family_name() + ', ' +
26             patron_obj.first_given_name() + ' ' +
27             ( patron_obj.second_given_name() ? patron_obj.second_given_name() + ' ' : '' ) +
28             ( patron_obj.suffix() ? patron_obj.suffix() : '');
29         return patron_name;
30     };
31
32     service.get = function(userId, args) {
33         var deferred = $q.defer();
34
35         if (!userId) deferred.reject();
36
37         var fields = service.defaultFleshFields;
38         if (args) {
39             if (args.useFields) { 
40                 // overridde flesh fields
41                 fields = args.useFields; 
42             }
43             if (args.addFields) {
44                 // append flesh fields
45                 fields = fields.concat(args.addFields);
46             }
47         }
48             
49         egNet.request(
50             'open-ils.actor',
51             'open-ils.actor.user.fleshed.retrieve',
52             egAuth.token(), userId, fields).then(
53             function(user) {
54                 if (user && user.classname == 'au') {
55                     deferred.resolve(user);
56                 } else {
57                     deferred.reject(user);
58                 }
59             }
60         );
61
62         return deferred.promise;
63     };
64
65     service.getByBarcode = function(barcode, args) {
66         return egNet.request(
67             'open-ils.pcrud',
68             'open-ils.pcrud.search.ac.atomic',
69             egAuth.token(), {barcode:barcode}
70         ).then( function(card) {
71             if (card && angular.isArray(card) && card[0] && card[0].classname == 'ac') {
72                 return service.get(card[0].usr(), args)
73             }
74             return service.get(null);
75         }) 
76     };
77
78     return service;
79 }]);
80