1 package OpenILS::Application::Circ::StatCat;
2 use base qw/OpenSRF::Application/;
3 use strict; use warnings;
5 use OpenSRF::EX qw/:try/;
6 use OpenILS::Application::AppUtils;
7 my $apputils = "OpenILS::Application::AppUtils";
11 __PACKAGE__->register_method(
12 method => "retrieve_stat_cats",
13 api_name => "open-ils.circ.stat_cat.actor.retrieve.all");
15 __PACKAGE__->register_method(
16 method => "retrieve_stat_cats",
17 api_name => "open-ils.circ.stat_cat.asset.retrieve.all");
19 # retrieves all of the stat cats for a given org unit
20 # if no orgid, user_session->home_ou is used
22 sub retrieve_stat_cats {
23 my( $self, $client, $user_session, $orgid ) = @_;
25 my $user_obj = $apputils->check_user_session($user_session);
26 if(!$orgid) { $orgid = $user_obj->home_ou; }
28 my $method = "open-ils.storage.ranged.fleshed.actor.stat_cat.all.atomic";
29 if( $self->api_name =~ /asset/ ) {
30 $method = "open-ils.storage.ranged.fleshed.asset.stat_cat.all.atomic";
33 return $apputils->simple_scalar_request(
34 "open-ils.storage", $method, $orgid );
39 __PACKAGE__->register_method(
40 method => "retrieve_ranged_intersect_stat_cats",
41 api_name => "open-ils.circ.stat_cat.asset.multirange.intersect.retrieve");
43 sub retrieve_ranged_intersect_stat_cats {
44 my( $self, $client, $user_session, $orglist ) = @_;
46 my $user_obj = $apputils->check_user_session($user_session);
47 if(!$orglist) { $orglist = [ $user_obj->home_ou ]; }
50 my %hash = map { ($_ => 1) } @$orglist;
51 $orglist = [ keys %hash ];
53 warn "range: @$orglist\n";
55 my $method = "open-ils.storage.multiranged.intersect.fleshed.asset.stat_cat.all.atomic";
56 return $apputils->simple_scalar_request(
57 "open-ils.storage", $method, $orglist );
61 __PACKAGE__->register_method(
62 method => "retrieve_ranged_union_stat_cats",
63 api_name => "open-ils.circ.stat_cat.asset.multirange.union.retrieve");
65 sub retrieve_ranged_union_stat_cats {
66 my( $self, $client, $user_session, $orglist ) = @_;
68 my $user_obj = $apputils->check_user_session($user_session);
69 if(!$orglist) { $orglist = [ $user_obj->home_ou ]; }
72 my %hash = map { ($_ => 1) } @$orglist;
73 $orglist = [ keys %hash ];
75 warn "range: @$orglist\n";
77 my $method = "open-ils.storage.multiranged.union.fleshed.asset.stat_cat.all.atomic";
78 return $apputils->simple_scalar_request(
79 "open-ils.storage", $method, $orglist );
86 __PACKAGE__->register_method(
87 method => "stat_cat_create",
88 api_name => "open-ils.circ.stat_cat.asset.create");
90 __PACKAGE__->register_method(
91 method => "stat_cat_create",
92 api_name => "open-ils.circ.stat_cat.actor.create");
95 my( $self, $client, $user_session, $stat_cat ) = @_;
98 throw OpenSRF::EX::ERROR
99 ("stat_cat.*.create requires a stat_cat object");
102 my $user_obj = $apputils->check_user_session($user_session);
103 my $orgid = $user_obj->home_ou();
105 my $method = "open-ils.storage.direct.actor.stat_cat.create";
106 my $entry_create = "open-ils.storage.direct.actor.stat_cat_entry.create";
108 if($self->api_name =~ /asset/) {
109 $method = "open-ils.storage.direct.asset.stat_cat.create";
110 $entry_create = "open-ils.storage.direct.asset.stat_cat_entry.create";
113 my $session = $apputils->start_db_session();
114 my $newid = _create_stat_cat($session, $stat_cat, $method);
116 for my $entry (@{$stat_cat->entries}) {
117 $entry->stat_cat($newid);
118 _create_stat_entry($session, $entry, $entry_create);
121 $apputils->commit_db_session($session);
123 warn "Stat cat creation successful with id $newid\n";
125 if( $self->api_name =~ /asset/ ) {
126 return _flesh_asset_cat($newid, $orgid);
128 return _flesh_user_cat($newid, $orgid);
134 sub _flesh_user_cat {
138 my $session = OpenSRF::AppSession->create("open-ils.storage");
139 my $cat = $session->request(
140 "open-ils.storage.direct.actor.stat_cat.retrieve",
145 "open-ils.storage.ranged.actor.stat_cat_entry.search.stat_cat.atomic",
146 $orgid, $id )->gather(1) );
152 sub _flesh_asset_cat {
156 my $session = OpenSRF::AppSession->create("open-ils.storage");
157 my $cat = $session->request(
158 "open-ils.storage.direct.asset.stat_cat.retrieve",
163 "open-ils.storage.ranged.asset.stat_cat_entry.search.stat_cat.atomic",
164 $orgid, $id )->gather(1) );
171 sub _create_stat_cat {
172 my( $session, $stat_cat, $method) = @_;
173 warn "Creating new stat cat with name " . $stat_cat->name . "\n";
174 $stat_cat->clear_id();
175 my $req = $session->request( $method, $stat_cat );
176 my $id = $req->gather(1);
178 throw OpenSRF::EX::ERROR
179 ("Error creating new statistical category"); }
181 warn "Stat cat create returned id $id\n";
186 sub _create_stat_entry {
187 my( $session, $stat_entry, $method) = @_;
189 warn "Creating new stat entry with value " . $stat_entry->value . "\n";
190 $stat_entry->clear_id();
192 my $req = $session->request($method, $stat_entry);
193 my $id = $req->gather(1);
195 warn "Stat entry " . Dumper($stat_entry) . "\n";
198 throw OpenSRF::EX::ERROR
199 ("Error creating new stat cat entry"); }
201 warn "Stat cat entry create returned id $id\n";
206 __PACKAGE__->register_method(
207 method => "update_stat_entry",
208 api_name => "open-ils.circ.stat_cat.actor.entry.update");
210 __PACKAGE__->register_method(
211 method => "update_stat_entry",
212 api_name => "open-ils.circ.stat_cat.asset.entry.update");
214 sub update_stat_entry {
215 my( $self, $client, $user_session, $entry ) = @_;
217 my $user_obj = $apputils->check_user_session($user_session);
219 my $method = "open-ils.storage.direct.actor.stat_cat_entry.update";
220 if($self->api_name =~ /asset/) {
221 $method = "open-ils.storage.direct.asset.stat_cat_entry.update";
224 my $session = $apputils->start_db_session();
225 my $req = $session->request($method, $entry);
226 my $status = $req->gather(1);
227 $apputils->commit_db_session($session);
228 warn "stat cat entry with value " . $entry->value . " updated with status $status\n";
233 __PACKAGE__->register_method(
234 method => "update_stat",
235 api_name => "open-ils.circ.stat_cat.actor.update");
237 __PACKAGE__->register_method(
238 method => "update_stat",
239 api_name => "open-ils.circ.stat_cat.asset.update");
242 my( $self, $client, $user_session, $cat ) = @_;
244 my $user_obj = $apputils->check_user_session($user_session);
246 my $method = "open-ils.storage.direct.actor.stat_cat.update";
247 if($self->api_name =~ /asset/) {
248 $method = "open-ils.storage.direct.asset.stat_cat.update";
251 my $session = $apputils->start_db_session();
252 my $req = $session->request($method, $cat);
253 my $status = $req->gather(1);
254 $apputils->commit_db_session($session);
255 warn "stat cat with id " . $cat->id . " updated with status $status\n";
260 __PACKAGE__->register_method(
261 method => "create_stat_entry",
262 api_name => "open-ils.circ.stat_cat.actor.entry.create");
264 __PACKAGE__->register_method(
265 method => "create_stat_entry",
266 api_name => "open-ils.circ.stat_cat.asset.entry.create");
268 sub create_stat_entry {
269 my( $self, $client, $user_session, $entry ) = @_;
271 my $user_obj = $apputils->check_user_session($user_session);
277 my $method = "open-ils.storage.direct.actor.stat_cat_entry.create";
278 if($self->api_name =~ /asset/) {
279 $method = "open-ils.storage.direct.asset.stat_cat_entry.create";
282 my $session = $apputils->start_db_session();
283 my $req = $session->request($method, $entry);
284 my $status = $req->gather(1);
285 $apputils->commit_db_session($session);
287 warn "stat cat entry with id " . $status . " updated with status $status\n";
293 __PACKAGE__->register_method(
294 method => "create_stat_map",
295 api_name => "open-ils.circ.stat_cat.actor.user_map.create");
297 __PACKAGE__->register_method(
298 method => "create_stat_map",
299 api_name => "open-ils.circ.stat_cat.asset.copy_map.create");
301 sub create_stat_map {
302 my( $self, $client, $user_session, $map ) = @_;
304 my $user_obj = $apputils->check_user_session($user_session);
306 warn "Creating stat_cat_map\n";
310 my $method = "open-ils.storage.direct.actor.stat_cat_entry_user_map.create";
311 my $ret = "open-ils.storage.direct.actor.stat_cat_entry_user_map.retrieve";
312 if($self->api_name =~ /asset/) {
313 $method = "open-ils.storage.direct.asset.stat_cat_entry_copy_map.create";
314 $ret = "open-ils.storage.direct.asset.stat_cat_entry_copy_map.retrieve";
317 my $session = $apputils->start_db_session();
318 my $req = $session->request($method, $map);
319 my $newid = $req->gather(1);
320 warn "Created new stat cat map with id $newid\n";
321 $apputils->commit_db_session($session);
323 return $apputils->simple_scalar_request( "open-ils.storage", $ret, $newid );
328 __PACKAGE__->register_method(
329 method => "update_stat_map",
330 api_name => "open-ils.circ.stat_cat.actor.user_map.update");
332 __PACKAGE__->register_method(
333 method => "update_stat_map",
334 api_name => "open-ils.circ.stat_cat.asset.copy_map.update");
336 sub update_stat_map {
337 my( $self, $client, $user_session, $map ) = @_;
339 my $user_obj = $apputils->check_user_session($user_session);
341 warn "Updating stat_cat_map\n";
343 my $method = "open-ils.storage.direct.actor.stat_cat_entry_user_map.update";
344 if($self->api_name =~ /asset/) {
345 $method = "open-ils.storage.direct.asset.stat_cat_entry_copy_map.update";
348 my $session = $apputils->start_db_session();
349 my $req = $session->request($method, $map);
350 my $newid = $req->gather(1);
351 warn "Updated new stat cat map with id $newid\n";
352 $apputils->commit_db_session($session);
359 __PACKAGE__->register_method(
360 method => "retrieve_maps",
361 api_name => "open-ils.circ.stat_cat.actor.user_map.retrieve");
363 __PACKAGE__->register_method(
364 method => "retrieve_maps",
365 api_name => "open-ils.circ.stat_cat.asset.copy_map.retrieve");
368 my( $self, $client, $user_session, $target ) = @_;
370 my $user_obj = $apputils->check_user_session($user_session);
372 my $method = "open-ils.storage.direct.asset.stat_cat_entry_copy_map.search.owning_copy";
373 if($self->api_name =~ /actor/ ) {
374 if(!$target) { $target = $user_obj->id; }
375 $method = "open-ils.storage.direct.actor.stat_cat_entry_user_map.search.target_usr";
378 return $apputils->simple_scalar_request("open-ils.storage", $method, $target);
384 __PACKAGE__->register_method(
385 method => "delete_stats",
386 api_name => "open-ils.circ.stat_cat.actor.delete");
388 __PACKAGE__->register_method(
389 method => "delete_stats",
390 api_name => "open-ils.circ.stat_cat.asset.delete");
393 my( $self, $client, $user_session, $target ) = @_;
394 my $user_obj = $apputils->check_user_session($user_session);
395 my $session = OpenSRF::AppSession->create("open-ils.storage");
397 if($self->api_name =~ /asset/) { $type = "asset"; }
398 return _delete_stats($session, $target, $type);
402 my( $session, $stat, $type) = @_;
404 my $method = "open-ils.storage.direct.asset.stat_cat.delete";
405 if($type =~ /actor/ ) {
406 $method = "open-ils.storage.direct.actor.stat_cat.delete";
408 return $session->request($method, $stat)->gather(1);
413 __PACKAGE__->register_method(
414 method => "delete_entry",
415 api_name => "open-ils.circ.stat_cat.actor.entry.delete");
417 __PACKAGE__->register_method(
418 method => "delete_entry",
419 api_name => "open-ils.circ.stat_cat.asset.entry.delete");
422 my( $self, $client, $user_session, $target ) = @_;
423 my $user_obj = $apputils->check_user_session($user_session);
424 my $session = OpenSRF::AppSession->create("open-ils.storage");
426 if($self->api_name =~ /asset/) { $type = "asset"; }
427 return _delete_entry($session, $target, $type);
431 my( $session, $stat_entry, $type) = @_;
433 my $method = "open-ils.storage.direct.asset.stat_cat_entry.delete";
434 if($type =~ /actor/ ) {
435 $method = "open-ils.storage.direct.actor.stat_cat_entry.delete";
438 return $session->request($method, $stat_entry)->gather(1);