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