]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/staff/services/user.js
LP#1677000 - webstaff Adds a 'has-notes visual indicator' for patrons with notes.
[working/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             'settings',
15             'standing_penalties',                                                  
16             'addresses',                                                           
17             'billing_address',                                                     
18             'mailing_address',                                                     
19             'stat_cat_entries',                                                    
20             'usr_activity',
21             'notes'
22         ]
23     };
24
25     service.format_name = function(patron_obj) {
26         var patron_name = ( patron_obj.prefix() ? patron_obj.prefix() + ' ' : '') +
27             patron_obj.family_name() + ', ' +
28             patron_obj.first_given_name() + ' ' +
29             ( patron_obj.second_given_name() ? patron_obj.second_given_name() + ' ' : '' ) +
30             ( patron_obj.suffix() ? patron_obj.suffix() : '');
31         return patron_name;
32     };
33
34     service.get = function(userId, args) {
35         var deferred = $q.defer();
36
37         if (!userId) deferred.reject();
38
39         var fields = service.defaultFleshFields;
40         if (args) {
41             if (args.useFields) { 
42                 // overridde flesh fields
43                 fields = args.useFields; 
44             }
45             if (args.addFields) {
46                 // append flesh fields
47                 fields = fields.concat(args.addFields);
48             }
49         }
50             
51         egNet.request(
52             'open-ils.actor',
53             'open-ils.actor.user.fleshed.retrieve',
54             egAuth.token(), userId, fields).then(
55             function(user) {
56                 if (user && user.classname == 'au') {
57                     deferred.resolve(user);
58                 } else {
59                     deferred.reject(user);
60                 }
61             }
62         );
63
64         return deferred.promise;
65     };
66
67     service.getByBarcode = function(barcode, args) {
68         return egNet.request(
69             'open-ils.pcrud',
70             'open-ils.pcrud.search.ac.atomic',
71             egAuth.token(), {barcode:barcode}
72         ).then( function(card) {
73             if (card && angular.isArray(card) && card[0] && card[0].classname == 'ac') {
74                 return service.get(card[0].usr(), args)
75             }
76             return service.get(null);
77         }) 
78     };
79
80     return service;
81 }]);
82