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 );
40 __PACKAGE__->register_method(
41 method => "stat_cat_create",
42 api_name => "open-ils.circ.stat_cat.asset.create");
44 __PACKAGE__->register_method(
45 method => "stat_cat_create",
46 api_name => "open-ils.circ.stat_cat.actor.create");
49 my( $self, $client, $user_session, $stat_cat ) = @_;
52 throw OpenSRF::EX::ERROR
53 ("stat_cat.*.create requires a stat_cat object");
56 my $user_obj = $apputils->check_user_session($user_session);
57 my $orgid = $user_obj->home_ou();
59 my $method = "open-ils.storage.direct.actor.stat_cat.create";
60 my $entry_create = "open-ils.storage.direct.actor.stat_cat_entry.create";
62 if($self->api_name =~ /asset/) {
63 $method = "open-ils.storage.direct.asset.stat_cat.create";
64 $entry_create = "open-ils.storage.direct.asset.stat_cat_entry.create";
67 my $session = $apputils->start_db_session();
68 my $newid = _create_stat_cat($session, $stat_cat, $method);
70 for my $entry (@{$stat_cat->entries}) {
71 $entry->stat_cat($newid);
72 _create_stat_entry($session, $entry, $entry_create);
75 $apputils->commit_db_session($session);
77 warn "Stat cat creation successful with id $newid\n";
79 if( $self->api_name =~ /asset/ ) {
80 return _flesh_asset_cat($newid, $orgid);
82 return _flesh_user_cat($newid, $orgid);
92 my $session = OpenSRF::AppSession->create("open-ils.storage");
93 my $cat = $session->request(
94 "open-ils.storage.direct.actor.stat_cat.retrieve",
99 "open-ils.storage.ranged.actor.stat_cat_entry.search.stat_cat.atomic",
100 $orgid, $id )->gather(1) );
106 sub _flesh_asset_cat {
110 my $session = OpenSRF::AppSession->create("open-ils.storage");
111 my $cat = $session->request(
112 "open-ils.storage.direct.asset.stat_cat.retrieve",
117 "open-ils.storage.ranged.asset.stat_cat_entry.search.stat_cat.atomic",
118 $orgid, $id )->gather(1) );
125 sub _create_stat_cat {
126 my( $session, $stat_cat, $method) = @_;
127 warn "Creating new stat cat with name " . $stat_cat->name . "\n";
128 $stat_cat->clear_id();
129 my $req = $session->request( $method, $stat_cat );
130 my $id = $req->gather(1);
132 throw OpenSRF::EX::ERROR
133 ("Error creating new statistical category"); }
135 warn "Stat cat create returned id $id\n";
140 sub _create_stat_entry {
141 my( $session, $stat_entry, $method) = @_;
142 warn "Creating new stat entry with value " . $stat_entry->value . "\n";
143 $stat_entry->clear_id();
144 my $req = $session->request($method, $stat_entry);
145 my $id = $req->gather(1);
147 throw OpenSRF::EX::ERROR
148 ("Error creating new stat cat entry"); }
150 warn "Stat cat entry create returned id $id\n";
155 __PACKAGE__->register_method(
156 method => "update_stat_entry",
157 api_name => "open-ils.circ.stat_cat.actor.entry.update");
159 __PACKAGE__->register_method(
160 method => "update_stat_entry",
161 api_name => "open-ils.circ.stat_cat.asset.entry.update");
163 sub update_stat_entry {
164 my( $self, $client, $user_session, $entry ) = @_;
166 my $user_obj = $apputils->check_user_session($user_session);
168 my $method = "open-ils.storage.direct.actor.stat_cat_entry.update";
169 if($self->api_name =~ /asset/) {
170 $method = "open-ils.storage.direct.asset.stat_cat_entry.update";
173 my $session = $apputils->start_db_session();
174 my $req = $session->request($method, $entry);
175 my $status = $req->gather(1);
176 $apputils->commit_db_session($session);
177 warn "stat cat entry with value " . $entry->value . " updated with status $status\n";
183 __PACKAGE__->register_method(
184 method => "create_stat_map",
185 api_name => "open-ils.circ.stat_cat.actor.user_map.create");
187 __PACKAGE__->register_method(
188 method => "create_stat_map",
189 api_name => "open-ils.circ.stat_cat.asset.copy_map.create");
191 sub create_stat_map {
192 my( $self, $client, $user_session, $map ) = @_;
194 my $user_obj = $apputils->check_user_session($user_session);
196 warn "Creating stat_cat_map\n";
200 my $method = "open-ils.storage.direct.actor.stat_cat_entry_user_map.create";
201 my $ret = "open-ils.storage.direct.actor.stat_cat_entry_user_map.retrieve";
202 if($self->api_name =~ /asset/) {
203 $method = "open-ils.storage.direct.asset.stat_cat_entry_copy_map.create";
204 $ret = "open-ils.storage.direct.asset.stat_cat_entry_copy_map.retrieve";
207 my $session = $apputils->start_db_session();
208 my $req = $session->request($method, $map);
209 my $newid = $req->gather(1);
210 warn "Created new stat cat map with id $newid\n";
211 $apputils->commit_db_session($session);
213 return $apputils->simple_scalar_request( "open-ils.storage", $ret, $newid );
219 __PACKAGE__->register_method(
220 method => "retrieve_maps",
221 api_name => "open-ils.circ.stat_cat.actor.user_map.retrieve");
223 __PACKAGE__->register_method(
224 method => "retrieve_maps",
225 api_name => "open-ils.circ.stat_cat.asset.copy_map.retrieve");
228 my( $self, $client, $user_session, $target ) = @_;
230 my $user_obj = $apputils->check_user_session($user_session);
232 my $method = "open-ils.storage.direct.asset.stat_cat_entry_copy_map.search.owning_copy";
233 if($self->api_name =~ /actor/ ) {
234 if(!$target) { $target = $user_obj->id; }
235 $method = "open-ils.storage.direct.actor.stat_cat_entry_user_map.search.target_usr";
238 return $apputils->simple_scalar_request("open-ils.storage", $method, $target);