1 sdump('D_TRACE','Loading patron_utils.js\n');
3 function patron_get_full_name( au ) {
4 sdump('D_PATRON_UTILS',arg_dump(arguments));
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() + ' ';
14 function patron_get_barcode( au ) {
15 sdump('D_PATRON_UTILS',arg_dump(arguments));
17 if (au && au.card && au.card() ) {
18 if ( (au.card()!='null') && (typeof(au.card())=='object') ) {
19 return au.card().barcode();
21 return find_id_object_in_list( au.cards(), au.card() ).barcode();
30 function patron_get_bills_total( au ) {
31 sdump('D_PATRON_UTILS',arg_dump(arguments));
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();
41 function patron_get_checkouts( au ) {
42 sdump('D_PATRON_UTILS',arg_dump(arguments));
44 au.checkouts( user_request(
46 'open-ils.circ.actor.user.checked_out',
47 [ mw.G.auth_ses[0], au.id() ]
49 sdump('D_PATRON_UTILS','checkouts = ' + js2JSON(au._checkouts) + '\n');
50 return au.checkouts();
52 sdump('D_ERROR',js2JSON(E) + '\n');
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)
63 return au.checkouts().length;
66 function patron_get_checkouts_overdue_total( au ) {
67 sdump('D_PATRON_UTILS',arg_dump(arguments));
68 if (! au.checkouts()) patron_get_checkouts( au );
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++;
79 sdump('D_PATRON_UTILS','\toverdue = ' + total + '\n');
83 function patron_get_holds( au ) {
84 sdump('D_PATRON_UTILS',arg_dump(arguments));
86 au.hold_requests( user_request(
88 'open-ils.circ.holds.retrieve',
89 [ mw.G.auth_ses[0], au.id() ]
91 sdump('D_PATRON_UTILS','holds = ' + js2JSON(au.hold_requests()) + '\n');
92 return au.hold_requests();
94 sdump('D_ERROR',js2JSON(E) + '\n');
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)
105 return au.hold_requests().length;
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 );
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++;
118 sdump('D_PATRON_UTILS','\tavailable = ' + total + '\n');
122 function patron_get_home_ou_name( au ) {
123 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
132 return mw.G.org_tree_hash[ au.home_ou() ].name();
138 function patron_get_ident1_type_as_text( au ) {
139 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
148 return mw.G.cit_hash[ au.ident_type() ].value();
154 function patron_get_ident2_type_as_text( au ) {
155 sdump('D_PATRON_UTILS',arg_dump(arguments));
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()
164 return mw.G.cit_hash[ au.ident_type2() ].value();
170 function patron_get_profile_as_text( au ) {
171 sdump('D_PATRON_UTILS',arg_dump(arguments));
176 mw.G.ap_hash[ au.profile() ] &&
177 mw.G.ap_hash[ au.profile() ].value &&
178 mw.G.ap_hash[ au.profile() ].value()
180 return mw.G.ap_hash[ au.profile() ].value();
186 function patron_get_standing_as_text( au ) {
187 sdump('D_PATRON_UTILS',arg_dump(arguments));
192 mw.G.cst_hash[ au.standing() ] &&
193 mw.G.cst_hash[ au.standing() ].value &&
194 mw.G.cst_hash[ au.standing() ].value()
196 return mw.G.cst_hash[ au.standing() ].value();
202 function patron_get_standing_css_style( value ) {
203 sdump('D_PATRON_UTILS',arg_dump(arguments,{0:true}));
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;
212 function retrieve_patron_by_barcode( barcode ) {
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' );
218 function retrieve_patron_by_id( id ) {
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' );
224 function retrieve_patron_by_method( id, app, method ) {
225 sdump('D_PATRON_UTILS',arg_dump(arguments));
226 if (!id) return null;
228 var au = user_request(
231 [ mw.G.auth_ses[0], id ]
240 function save_patron( au ) {
241 sdump('D_PATRON_UTILS',arg_dump(arguments));
243 var result = user_request(
245 'open-ils.actor.patron.update',
246 [ mw.G.auth_ses[0], au ]