ML reporter code, basic functionality exists, needs more
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 26 Sep 2006 19:01:23 +0000 (19:01 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 26 Sep 2006 19:01:23 +0000 (19:01 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6222 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm [new file with mode: 0644]

diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm b/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm
new file mode 100644 (file)
index 0000000..1a1857f
--- /dev/null
@@ -0,0 +1,97 @@
+package OpenILS::Application::Reporter;
+use base qw/OpenSRF::Application/;
+use strict; use warnings;
+use OpenILS::Utils::CStoreEditor qw/:funcs/;
+use OpenILS::Utils::Fieldmapper;
+use OpenILS::Application::AppUtils;
+my $U = "OpenILS::Application::AppUtils";
+
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.folder.create',
+       method => 'create_folder'
+);
+
+sub create_folder {
+       my( $self, $conn, $auth, $type, $folder ) = @_;
+
+       my $e = new_rstore_editor(xact=>1, authtoken=>$auth);
+       return $e->event unless $e->checkauth;
+       return $e->event unless $e->allowed('RUN_REPORTS');
+
+       $folder->owner($e->requestor->id);
+       my $meth = "create_reporter_${type}_folder";
+       $e->$meth($folder) or return $e->die_event;
+       $e->commit;
+
+       return $folder->id;
+}
+
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.folder.visible.retrieve',
+       method => 'retrieve_visible_folders'
+);
+
+sub retrieve_visible_folders {
+       my( $self, $conn, $auth, $type ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth);
+       return $e->event unless $e->checkauth;
+       return $e->event unless $e->allowed('RUN_REPORTS');
+
+       my $meth = "search_reporter_${type}_folder";
+       my $fs = $e->$meth( { owner => $e->requestor->id } );
+
+       # XXX fetch folders visible to me
+
+       return $fs;
+}
+
+
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.folder_data.retrieve',
+       method => 'retrieve_folder_data'
+);
+
+sub retrieve_folder_data {
+       my( $self, $conn, $auth, $type, $folderid ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth);
+       return $e->event unless $e->checkauth;
+       return $e->event unless $e->allowed('RUN_REPORTS');
+       my $meth = "search_reporter_${type}";
+       return $e->$meth( { folder => $folderid } );
+}
+
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.template.create',
+       method => 'create_template');
+sub create_template {
+       my( $self, $conn, $auth, $template ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
+       return $e->event unless $e->checkauth;
+       return $e->event unless $e->allowed('RUN_REPORTS');
+       $template->owner($e->requestor->id);
+       my $tmpl = $e->create_reporter_template($template)
+               or return $e->die_event;
+       $e->commit;
+       return $tmpl;
+}
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.report.create',
+       method => 'create_report');
+sub create_report {
+       my( $self, $conn, $auth, $report ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
+       return $e->event unless $e->checkauth;
+       return $e->event unless $e->allowed('RUN_REPORTS');
+       $report->owner($e->requestor->id);
+       my $tmpl = $e->create_reporter_report($report)
+               or return $e->die_event;
+       $e->commit;
+       return $tmpl;
+}
+
+1;