]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm
added some report object events, added reporter-store modification to cstoreeditor...
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Reporter.pm
1 package OpenILS::Application::Reporter;
2 use base qw/OpenSRF::Application/;
3 use strict; use warnings;
4 use OpenSRF::Utils::Logger qw/$logger/;
5 use OpenILS::Utils::CStoreEditor qw/:funcs/;
6 use OpenILS::Utils::Fieldmapper;
7 use OpenILS::Application::AppUtils;
8 my $U = "OpenILS::Application::AppUtils";
9
10
11 __PACKAGE__->register_method(
12         api_name => 'open-ils.reporter.folder.create',
13         method => 'create_folder'
14 );
15
16 sub create_folder {
17         my( $self, $conn, $auth, $type, $folder ) = @_;
18
19         my $e = new_rstore_editor(xact=>1, authtoken=>$auth);
20         return $e->event unless $e->checkauth;
21         return $e->event unless $e->allowed('RUN_REPORTS');
22
23         $folder->owner($e->requestor->id);
24         my $meth = "create_reporter_${type}_folder";
25         $e->$meth($folder) or return $e->die_event;
26         $e->commit;
27
28         return $folder->id;
29 }
30
31
32 __PACKAGE__->register_method(
33         api_name => 'open-ils.reporter.folder.visible.retrieve',
34         method => 'retrieve_visible_folders'
35 );
36
37 sub retrieve_visible_folders {
38         my( $self, $conn, $auth, $type ) = @_;
39         my $e = new_rstore_editor(authtoken=>$auth);
40         return $e->event unless $e->checkauth;
41         return $e->event unless $e->allowed('RUN_REPORTS');
42
43         my $meth = "search_reporter_${type}_folder";
44         my $fs = $e->$meth( { owner => $e->requestor->id } );
45
46         # XXX fetch folders visible to me
47
48         return $fs;
49 }
50
51
52
53 __PACKAGE__->register_method(
54         api_name => 'open-ils.reporter.folder_data.retrieve',
55         method => 'retrieve_folder_data'
56 );
57
58 sub retrieve_folder_data {
59         my( $self, $conn, $auth, $type, $folderid ) = @_;
60         my $e = new_rstore_editor(authtoken=>$auth);
61         return $e->event unless $e->checkauth;
62         return $e->event unless $e->allowed('RUN_REPORTS');
63         my $meth = "search_reporter_${type}";
64         return $e->$meth( { folder => $folderid } );
65 }
66
67
68 __PACKAGE__->register_method(
69         api_name => 'open-ils.reporter.template.create',
70         method => 'create_template');
71 sub create_template {
72         my( $self, $conn, $auth, $template ) = @_;
73         my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
74         return $e->event unless $e->checkauth;
75         return $e->event unless $e->allowed('RUN_REPORTS');
76         $template->owner($e->requestor->id);
77         my $tmpl = $e->create_reporter_template($template)
78                 or return $e->die_event;
79         $e->commit;
80         return $tmpl;
81 }
82
83
84 __PACKAGE__->register_method(
85         api_name => 'open-ils.reporter.report.create',
86         method => 'create_report');
87 sub create_report {
88         my( $self, $conn, $auth, $report ) = @_;
89         my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
90         return $e->event unless $e->checkauth;
91         return $e->event unless $e->allowed('RUN_REPORTS');
92         $report->owner($e->requestor->id);
93         my $tmpl = $e->create_reporter_report($report)
94                 or return $e->die_event;
95         $e->commit;
96         return $tmpl;
97 }
98
99
100 __PACKAGE__->register_method(
101         api_name => 'open-ils.reporter.template.retrieve',
102         method => 'retrieve_template');
103 sub retrieve_template {
104         my( $self, $conn, $auth, $id ) = @_;
105         my $e = new_rstore_editor(authtoken=>$auth);
106         return $e->event unless $e->checkauth;
107         return $e->event unless $e->allowed('RUN_REPORTS');
108         my $t = $e->retrieve_reporter_template($id) 
109                 or return $e->event;
110         return $t;
111 }
112
113
114 __PACKAGE__->register_method(
115         api_name => 'open-ils.reporter.report.retrieve',
116         method => 'retrieve_report');
117 sub retrieve_report {
118         my( $self, $conn, $auth, $id ) = @_;
119         my $e = new_rstore_editor(authtoken=>$auth);
120         return $e->event unless $e->checkauth;
121         return $e->event unless $e->allowed('RUN_REPORTS');
122         my $r = $e->retrieve_reporter_report($id) 
123                 or return $e->event;
124         return $r;
125 }
126
127
128 __PACKAGE__->register_method(
129         api_name => 'open-ils.reporter.template.update',
130         method => 'update_template');
131 sub update_template {
132         my( $self, $conn, $auth, $tmpl ) = @_;
133         my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
134         return $e->event unless $e->checkauth;
135         return $e->event unless $e->allowed('RUN_REPORTS');
136         my $t = $e->retrieve_reporter_template($tmpl->id)
137                 or return $e->die_event;
138         return 0 if $t->owner ne $e->requestor->id;
139         $e->update_reporter_template($tmpl)
140                 or return $e->die_event;
141         $e->commit;
142         return 1;
143 }
144
145
146
147 __PACKAGE__->register_method(
148         method => 'magic_fetch_all',
149         api_name => 'open-ils.reporter.magic_fetch');
150 sub magic_fetch_all {
151         my( $self, $conn, $auth, $args ) = @_;
152         my $e = new_editor(authtoken => $auth);
153         return $e->event unless $e->checkauth;
154         return $e->event unless $e->allowed('RUN_REPORTS');
155
156         my $hint = $$args{hint};
157
158         # Find the class the iplements the given hint
159         my ($class) = grep { 
160                 $Fieldmapper::fieldmap->{$_}{hint} eq $hint } Fieldmapper->classes;
161
162         return undef unless $class->Selector;
163
164         $class =~ s/Fieldmapper:://og;
165         $class =~ s/::/_/og;
166         my $method = "retrieve_all_$class";
167
168         $logger->info("reporter.magic_fetch => $method");
169
170         return $e->$method();
171 }
172
173
174 1;