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