]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js
use fieldmapper virtual fields
[Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / patron / patron_utils.js
1 sdump('D_TRACE','Loading patron_utils.js\n');
2
3 function patron_get_full_name( au ) {
4         sdump('D_PATRON_UTILS',arg_dump(arguments));
5         var name = '';
6         if (au.prefix()) name += au.prefix() + ' ';     
7         if (au.family_name()) name += au.family_name() + ', ';  
8         if (au.first_given_name()) name += au.first_given_name() + ' '; 
9         if (au.second_given_name()) name += au.second_given_name() + ' ';       
10         if (au.suffix()) name += au.suffix() + ' ';     
11         return name;
12 }
13
14 function patron_get_barcode( au ) {
15         sdump('D_PATRON_UTILS',arg_dump(arguments));
16         try {
17                 return find_id_object_in_list( au.cards(), au.card() ).barcode();
18         } catch(E) {
19                 handle_error(E);
20                 return null;
21         }
22 }
23
24 function patron_get_bills_total( au ) {
25         sdump('D_PATRON_UTILS',arg_dump(arguments));
26         return '$0.00';
27 }
28
29 function patron_get_credit_total( au ) {
30         sdump('D_PATRON_UTILS',arg_dump(arguments));
31         /* FIXME: I can use CSS to style this number as money. */
32         return '$' + au.credit_forward_balance();
33 }
34
35 function patron_get_checkouts( au ) {
36         sdump('D_PATRON_UTILS',arg_dump(arguments));
37         try {
38                 au.checkouts( user_request(
39                         'open-ils.circ',
40                         'open-ils.circ.actor.user.checked_out',
41                         [ mw.G.auth_ses[0], au.id() ]
42                 )[0] );
43                 sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au._checkouts) + '\n');
44                 return au.checkouts();
45         } catch(E) {
46                 sdump('D_ERROR',js2JSON(E) + '\n');
47                 return null;
48         }
49 }
50
51 function patron_get_checkouts_total( au ) {
52         sdump('D_PATRON_UTILS',arg_dump(arguments));
53         if (! au.checkouts()) patron_get_checkouts( au );
54         if (au.checkouts() == null)
55                 return '???';
56         else
57                 return au.checkouts().length;
58 }
59
60 function patron_get_checkouts_overdue_total( au ) {
61         sdump('D_PATRON_UTILS',arg_dump(arguments));
62         if (! au.checkouts()) patron_get_checkouts( au );
63         var total = 0;
64         if ( (au.checkouts() != null) && (typeof(au.checkouts())=='object') ) {
65                 for (var i = 0; i < au.checkouts().length; i++) {
66                         var item = au.checkouts()[i];
67                         var due_date = item.circ.due_date();
68                         due_date = due_date.substr(0,4) + due_date.substr(5,2) + due_date.substr(8,2);
69                         var today = formatted_date( new Date() , '%Y%m%d' );
70                         if (today > due_date) total++;
71                 }
72         }
73         sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
74         return total;
75 }
76
77 function patron_get_holds( au ) {
78         sdump('D_PATRON_UTILS',arg_dump(arguments));
79         try {
80                 au.hold_requests( user_request(
81                         'open-ils.circ',
82                         'open-ils.circ.holds.retrieve',
83                         [ mw.G.auth_ses[0], au.id() ]
84                 )[0] );
85                 sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n');
86                 return au.hold_requests();
87         } catch(E) {
88                 sdump('D_ERROR',js2JSON(E) + '\n');
89                 return null;
90         }
91 }
92
93 function patron_get_holds_total( au ) {
94         sdump('D_PATRON_UTILS',arg_dump(arguments));
95         if (! au.hold_requests()) patron_get_holds( au );
96         if (au.hold_requests() == null)
97                 return '???';
98         else
99                 return au.hold_requests().length;
100 }
101
102 function patron_get_holds_available_total( au ) {
103         sdump('D_PATRON_UTILS',arg_dump(arguments));
104         if (! au.hold_requests()) patron_get_holds( au );
105         var total = 0;
106         if ( (au.hold_requests() != null) && (typeof(au.hold_requests()) == 'object') ) {
107                 for (var i = 0; i < au.hold_requests().length; i++) {
108                         var hold = au.hold_requests()[i];
109                         if (hold.capture_time()) total++;
110                 }
111         }
112         sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
113         return total;
114 }
115
116 function patron_get_home_ou_name( au ) {
117         sdump('D_PATRON_UTILS',arg_dump(arguments));
118         if (au && 
119                 au.home_ou && 
120                 au.home_ou() && 
121                 mw.G.org_tree_hash &&
122                 mw.G.org_tree_hash[ au.home_ou() ] && 
123                 mw.G.org_tree_hash[ au.home_ou() ].name &&
124                 mw.G.org_tree_hash[ au.home_ou() ].name()
125         ) {
126                 return mw.G.org_tree_hash[ au.home_ou() ].name();
127         } else {
128                 return null;
129         }
130 }
131
132 function patron_get_ident1_type_as_text( au ) {
133         sdump('D_PATRON_UTILS',arg_dump(arguments));
134         if (au && 
135                 au.ident_type && 
136                 au.ident_type() && 
137                 mw.G.cit_hash &&
138                 mw.G.cit_hash[ au.ident_type() ] && 
139                 mw.G.cit_hash[ au.ident_type() ].value &&
140                 mw.G.cit_hash[ au.ident_type() ].value()
141         ) {
142                 return mw.G.cit_hash[ au.ident_type() ].value();
143         } else {
144                 return null;
145         }
146 }
147
148 function patron_get_ident2_type_as_text( au ) {
149         sdump('D_PATRON_UTILS',arg_dump(arguments));
150         if (au && 
151                 au.ident_type2 && 
152                 au.ident_type2() && 
153                 mw.G.cit_hash &&
154                 mw.G.cit_hash[ au.ident_type2() ] && 
155                 mw.G.cit_hash[ au.ident_type2() ].value &&
156                 mw.G.cit_hash[ au.ident_type2() ].value()
157         ) {
158                 return mw.G.cit_hash[ au.ident_type2() ].value();
159         } else {
160                 return null;
161         }
162 }
163
164 function patron_get_profile_as_text( au ) {
165         sdump('D_PATRON_UTILS',arg_dump(arguments));
166         if (au && 
167                 au.profile && 
168                 au.profile() && 
169                 mw.G.ap_hash &&
170                 mw.G.ap_hash[ au.profile() ] && 
171                 mw.G.ap_hash[ au.profile() ].value &&
172                 mw.G.ap_hash[ au.profile() ].value()
173         ) {
174                 return mw.G.ap_hash[ au.profile() ].value();
175         } else {
176                 return null;
177         }
178 }
179
180 function patron_get_standing_as_text( au ) {
181         sdump('D_PATRON_UTILS',arg_dump(arguments));
182         if (au && 
183                 au.standing && 
184                 au.standing() && 
185                 mw.G.cst_hash &&
186                 mw.G.cst_hash[ au.standing() ] && 
187                 mw.G.cst_hash[ au.standing() ].value &&
188                 mw.G.cst_hash[ au.standing() ].value()
189         ) {
190                 return mw.G.cst_hash[ au.standing() ].value();
191         } else {
192                 return null;
193         }
194 }
195
196 function patron_get_standing_css_style( value ) {
197         sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
198         switch(value) {
199                 case 'Good' : case '1' : return 'background-color: lightgreen;'; break;
200                 case 'Barred' : case '2' : return 'background-color: yellow;'; break;
201                 case 'Blocked' : case '3' : return 'background-color: red;'; break;
202                 default: return 'background-color: white;'; break;
203         }
204 }
205
206 function retrieve_patron_by_barcode( barcode ) {
207         sdump('D_PATRON_UTILS',arg_dump(arguments));
208         if (!barcode) return null;
209         return retrieve_patron_by_method( barcode, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve_by_barcode' );
210 }
211
212 function retrieve_patron_by_id( id ) {
213         sdump('D_PATRON_UTILS',arg_dump(arguments));
214         if (!id) return null;
215         return retrieve_patron_by_method( id, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve' );
216 }
217
218 function retrieve_patron_by_method( id, app, method ) {
219         sdump('D_PATRON_UTILS',arg_dump(arguments));
220         if (!id) return null;
221         try {
222                 var au = user_request(
223                         app,
224                         method,
225                         [ mw.G.auth_ses[0], id ]
226                 )[0];
227                 return au;
228         } catch(E) {
229                 handle_error(E);
230                 return null;
231         }
232 }
233
234 function save_patron( au ) {
235         sdump('D_PATRON_UTILS',arg_dump(arguments));
236         try {
237                 var result = user_request(
238                         'open-ils.actor',
239                         'open-ils.actor.patron.update',
240                         [ mw.G.auth_ses[0], au ]
241                 )[0];
242                 return result;
243         } catch(E) {
244                 handle_error(E);
245                 return null;
246         }
247 }