]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/patron/patron_utils.js
crud for patrons and other misc patron functions
[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         for (var i = 0; i < au._checkouts.length; i++) {
65                 var item = au._checkouts[i];
66                 var due_date = item.circ.due_date();
67                 due_date = due_date.substr(0,4) + due_date.substr(5,2) + due_date.substr(8,2);
68                 var today = formatted_date( new Date() , '%Y%m%d' );
69                 if (today > due_date) total++;
70         }
71         sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
72         return total;
73 }
74
75 function patron_get_holds( au ) {
76         sdump('D_PATRON_UTILS',arg_dump(arguments));
77         try {
78                 au._holds = user_request(
79                         'open-ils.circ',
80                         'open-ils.circ.holds.retrieve',
81                         [ mw.G.auth_ses[0], au.id() ]
82                 )[0];
83                 sdump('D_PATRON_UTILS','holds = ' + js2JSON(au._holds) + '\n');
84                 return au._holds;
85         } catch(E) {
86                 sdump('D_ERROR',js2JSON(E) + '\n');
87                 return null;
88         }
89 }
90
91 function patron_get_holds_total( au ) {
92         sdump('D_PATRON_UTILS',arg_dump(arguments));
93         if (! au._holds) patron_get_holds( au );
94         if (au._holds == null)
95                 return '???';
96         else
97                 return au._holds.length;
98 }
99
100 function patron_get_holds_available_total( au ) {
101         sdump('D_PATRON_UTILS',arg_dump(arguments));
102         if (! au._holds) patron_get_holds( au );
103         var total = 0;
104         for (var i = 0; i < au._holds.length; i++) {
105                 var hold = au._holds[i];
106                 if (hold.capture_time()) total++;
107         }
108         sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
109         return total;
110 }
111
112 function patron_get_home_ou_name( au ) {
113         sdump('D_PATRON_UTILS',arg_dump(arguments));
114         if (au && 
115                 au.home_ou && 
116                 au.home_ou() && 
117                 mw.G.org_tree_hash &&
118                 mw.G.org_tree_hash[ au.home_ou() ] && 
119                 mw.G.org_tree_hash[ au.home_ou() ].name &&
120                 mw.G.org_tree_hash[ au.home_ou() ].name()
121         ) {
122                 return mw.G.org_tree_hash[ au.home_ou() ].name();
123         } else {
124                 return null;
125         }
126 }
127
128 function patron_get_ident1_type_as_text( au ) {
129         sdump('D_PATRON_UTILS',arg_dump(arguments));
130         if (au && 
131                 au.ident_type && 
132                 au.ident_type() && 
133                 mw.G.cit_hash &&
134                 mw.G.cit_hash[ au.ident_type() ] && 
135                 mw.G.cit_hash[ au.ident_type() ].value &&
136                 mw.G.cit_hash[ au.ident_type() ].value()
137         ) {
138                 return mw.G.cit_hash[ au.ident_type() ].value();
139         } else {
140                 return null;
141         }
142 }
143
144 function patron_get_ident2_type_as_text( au ) {
145         sdump('D_PATRON_UTILS',arg_dump(arguments));
146         if (au && 
147                 au.ident_type2 && 
148                 au.ident_type2() && 
149                 mw.G.cit_hash &&
150                 mw.G.cit_hash[ au.ident_type2() ] && 
151                 mw.G.cit_hash[ au.ident_type2() ].value &&
152                 mw.G.cit_hash[ au.ident_type2() ].value()
153         ) {
154                 return mw.G.cit_hash[ au.ident_type2() ].value();
155         } else {
156                 return null;
157         }
158 }
159
160 function patron_get_profile_as_text( au ) {
161         sdump('D_PATRON_UTILS',arg_dump(arguments));
162         if (au && 
163                 au.profile && 
164                 au.profile() && 
165                 mw.G.ap_hash &&
166                 mw.G.ap_hash[ au.profile() ] && 
167                 mw.G.ap_hash[ au.profile() ].value &&
168                 mw.G.ap_hash[ au.profile() ].value()
169         ) {
170                 return mw.G.ap_hash[ au.profile() ].value();
171         } else {
172                 return null;
173         }
174 }
175
176 function patron_get_standing_as_text( au ) {
177         sdump('D_PATRON_UTILS',arg_dump(arguments));
178         if (au && 
179                 au.standing && 
180                 au.standing() && 
181                 mw.G.cst_hash &&
182                 mw.G.cst_hash[ au.standing() ] && 
183                 mw.G.cst_hash[ au.standing() ].value &&
184                 mw.G.cst_hash[ au.standing() ].value()
185         ) {
186                 return mw.G.cst_hash[ au.standing() ].value();
187         } else {
188                 return null;
189         }
190 }
191
192 function patron_get_standing_css_style( value ) {
193         sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
194         switch(value) {
195                 case 'Good' : case '1' : return 'background-color: lightgreen;'; break;
196                 case 'Barred' : case '2' : return 'background-color: yellow;'; break;
197                 case 'Blocked' : case '3' : return 'background-color: red;'; break;
198                 default: return 'background-color: white;'; break;
199         }
200 }
201
202 function retrieve_patron_by_barcode( barcode ) {
203         sdump('D_PATRON_UTILS',arg_dump(arguments));
204         if (!barcode) return null;
205         return retrieve_patron_by_method( barcode, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve_by_barcode' );
206 }
207
208 function retrieve_patron_by_id( id ) {
209         sdump('D_PATRON_UTILS',arg_dump(arguments));
210         if (!id) return null;
211         return retrieve_patron_by_method( id, 'open-ils.actor', 'open-ils.actor.user.fleshed.retrieve' );
212 }
213
214 function retrieve_patron_by_method( id, app, method ) {
215         sdump('D_PATRON_UTILS',arg_dump(arguments));
216         if (!id) return null;
217         try {
218                 var au = user_request(
219                         app,
220                         method,
221                         [ mw.G.auth_ses[0], id ]
222                 )[0];
223                 return au;
224         } catch(E) {
225                 handle_error(E);
226                 return null;
227         }
228 }
229
230 function save_patron( au ) {
231         sdump('D_PATRON_UTILS',arg_dump(arguments));
232         try {
233                 var result = user_request(
234                         'open-ils.actor',
235                         'open-ils.actor.patron.update',
236                         [ mw.G.auth_ses[0], au ]
237                 )[0];
238                 return result;
239         } catch(E) {
240                 handle_error(E);
241                 return null;
242         }
243 }