]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Circ/StatCat.pm
early statcat code. needs much fixin
[working/Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Circ / StatCat.pm
1 package OpenILS::Application::Circ::StatCat;
2 use base qw/OpenSRF::Application/;
3 use strict; use warnings;
4
5 use OpenSRF::EX qw/:try/;
6 use OpenILS::Application::AppUtils;
7 my $apputils = "OpenILS::Application::AppUtils";
8
9
10
11 __PACKAGE__->register_method(
12         method  => "retrieve_stat_cats",
13         api_name        => "open-ils.circ.stat_cat.user.retrieve.all");
14
15 __PACKAGE__->register_method(
16         method  => "retrieve_stat_cats",
17         api_name        => "open-ils.circ.stat_cat.copy.retrieve.all");
18
19 # retrieves all of the stat cats for a given org unit
20 # if no orgid, user_session->home_ou is used
21
22 sub retrieve_stat_cats {
23         my( $self, $client, $user_session, $orgid ) = @_;
24
25         my $user_obj = $apputils->check_user_session($user_session); 
26         if(!$orgid) { $orgid = $user_obj->home_ou; }
27
28         my $method = "open-ils.storage.ranged.fleshed.actor.stat_cat.all.atomic"; 
29         if( $self->api_name =~ /copy/ ) {
30                 $method = "open-ils.storage.ranged.fleshed.asset.stat_cat.all.atomic"; 
31         }
32
33         return $apputils->simple_scalar_request(
34                                 "open-ils.storage", $method, $orgid );
35 }
36
37
38
39
40 __PACKAGE__->register_method(
41         method  => "stat_cat_create",
42         api_name        => "open-ils.circ.stat_cat.copy.create");
43
44 __PACKAGE__->register_method(
45         method  => "stat_cat_create",
46         api_name        => "open-ils.circ.stat_cat.actor.create");
47
48 sub stat_cat_create {
49         my( $self, $client, $user_session, $stat_cat ) = @_;
50
51         if(!$stat_cat) {
52                 throw OpenSRF::EX::ERROR
53                         ("stat_cat.*.create requires a stat_cat object");
54         }
55
56         my $user_obj = $apputils->check_user_session($user_session); 
57         my $orgid = $user_obj->home_ou();
58         warn "creating new stat_cat with name " . $stat_cat->name() . "\n";
59
60
61         my $method = "open-ils.storage.direct.actor.stat_cat.create";
62         my $entry_create = "open-ils.storage.direct.actor.stat_cat_entry.create";
63
64         if($self->api_name =~ /copy/) {
65                 $method = "open-ils.storage.direct.asset.stat_cat.create";
66                 $entry_create = "open-ils.storage.direct.asset.stat_cat_entry.create";
67         }
68
69         my $session = $apputils->start_db_session();
70         my $newid = _create_stat_cat($session, $stat_cat, $method);
71
72         for my $entry ($stat_cat->entries) {
73                 _create_stat_entry($session, $entry, $entry_create);
74         }
75
76         $apputils->commit_db_session($session);
77
78         warn "Stat cat creation successful with id $newid\n";
79
80         if( $self->api_name =~ /copy/ ) {
81                 return _flesh_copy_cat($newid, $orgid);
82         } else {
83                 return _flesh_user_cat($newid, $orgid);
84         }
85
86 }
87
88
89 sub _flesh_user_cat {
90         my $id = shift;
91         my $orgid = shift;
92
93         my $session = OpenSRF::AppSession->create("open-ils.storage");
94         my $cat = $session->request(
95                 "open-ils.storage.direct.actor.stat_cat.retrieve",
96                 $id )->gather(1);
97
98         $cat->entries( 
99                 $session->request(
100                         "open-ils.storage.ranged.actor.stat_cat_entry.search.stat_cat.atomic",
101                         $orgid, $id )->gather(1) );
102
103         return $cat;
104 }
105
106
107 sub _flesh_copy_cat {
108         my $id = shift;
109         my $orgid = shift;
110
111         my $session = OpenSRF::AppSession->create("open-ils.storage");
112         my $cat = $session->request(
113                 "open-ils.storage.direct.asset.stat_cat.retrieve",
114                 $id )->gather(1);
115
116         $cat->entries( 
117                 $session->request(
118                         "open-ils.storage.ranged.asset.stat_cat_entry.search.stat_cat.atomic",
119                         $orgid,  $id )->gather(1) );
120
121         return $cat;
122
123 }
124
125
126 sub _create_stat_cat {
127         my( $session, $stat_cat, $method) = @_;
128         $stat_cat->clear_id();
129         my $req = $session->request( $method, $stat_cat );
130         my $id = $req->gather(1);
131         if(!$id) {
132                 throw OpenSRF::EX::ERROR 
133                         ("Error creating new statistical category");
134         }
135         return $id;
136 }
137
138
139 sub _create_stat_entry {
140         my( $session, $stat_entry, $method) = @_;
141 }
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157 1;