]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm
ML reporter code, basic functionality exists, needs more
[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 OpenILS::Utils::CStoreEditor qw/:funcs/;
5 use OpenILS::Utils::Fieldmapper;
6 use OpenILS::Application::AppUtils;
7 my $U = "OpenILS::Application::AppUtils";
8
9
10 __PACKAGE__->register_method(
11         api_name => 'open-ils.reporter.folder.create',
12         method => 'create_folder'
13 );
14
15 sub create_folder {
16         my( $self, $conn, $auth, $type, $folder ) = @_;
17
18         my $e = new_rstore_editor(xact=>1, authtoken=>$auth);
19         return $e->event unless $e->checkauth;
20         return $e->event unless $e->allowed('RUN_REPORTS');
21
22         $folder->owner($e->requestor->id);
23         my $meth = "create_reporter_${type}_folder";
24         $e->$meth($folder) or return $e->die_event;
25         $e->commit;
26
27         return $folder->id;
28 }
29
30
31 __PACKAGE__->register_method(
32         api_name => 'open-ils.reporter.folder.visible.retrieve',
33         method => 'retrieve_visible_folders'
34 );
35
36 sub retrieve_visible_folders {
37         my( $self, $conn, $auth, $type ) = @_;
38         my $e = new_rstore_editor(authtoken=>$auth);
39         return $e->event unless $e->checkauth;
40         return $e->event unless $e->allowed('RUN_REPORTS');
41
42         my $meth = "search_reporter_${type}_folder";
43         my $fs = $e->$meth( { owner => $e->requestor->id } );
44
45         # XXX fetch folders visible to me
46
47         return $fs;
48 }
49
50
51
52 __PACKAGE__->register_method(
53         api_name => 'open-ils.reporter.folder_data.retrieve',
54         method => 'retrieve_folder_data'
55 );
56
57 sub retrieve_folder_data {
58         my( $self, $conn, $auth, $type, $folderid ) = @_;
59         my $e = new_rstore_editor(authtoken=>$auth);
60         return $e->event unless $e->checkauth;
61         return $e->event unless $e->allowed('RUN_REPORTS');
62         my $meth = "search_reporter_${type}";
63         return $e->$meth( { folder => $folderid } );
64 }
65
66
67 __PACKAGE__->register_method(
68         api_name => 'open-ils.reporter.template.create',
69         method => 'create_template');
70 sub create_template {
71         my( $self, $conn, $auth, $template ) = @_;
72         my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
73         return $e->event unless $e->checkauth;
74         return $e->event unless $e->allowed('RUN_REPORTS');
75         $template->owner($e->requestor->id);
76         my $tmpl = $e->create_reporter_template($template)
77                 or return $e->die_event;
78         $e->commit;
79         return $tmpl;
80 }
81
82 __PACKAGE__->register_method(
83         api_name => 'open-ils.reporter.report.create',
84         method => 'create_report');
85 sub create_report {
86         my( $self, $conn, $auth, $report ) = @_;
87         my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
88         return $e->event unless $e->checkauth;
89         return $e->event unless $e->allowed('RUN_REPORTS');
90         $report->owner($e->requestor->id);
91         my $tmpl = $e->create_reporter_report($report)
92                 or return $e->die_event;
93         $e->commit;
94         return $tmpl;
95 }
96
97 1;