create methods, etc.
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 29 Sep 2006 23:54:09 +0000 (23:54 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 29 Sep 2006 23:54:09 +0000 (23:54 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6272 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm

index 7b87de6..f75789c 100644 (file)
@@ -17,8 +17,10 @@ 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');
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
+
+       return 0 if $folder->owner ne $e->requestor->id;
 
        $folder->owner($e->requestor->id);
        my $meth = "create_reporter_${type}_folder";
@@ -48,14 +50,20 @@ sub retrieve_visible_folders {
        my $fs = $e->$meth( [{ owner => $e->requestor->id }, $flesh] );
 
        my @orgs;
-       my $oid = $e->requestor->ws_ou; 
-       while( my ($o) = $U->fetch_org_unit($oid) ) {
-               last unless $o;
-               push( @orgs, $o->id );
-               $oid = $o->parent_ou;
-       }
-
-       my $fs2 = $e->$meth([{shared => 't', share_with => \@orgs}, $flesh]);
+       my $o = $U->storagereq(
+               'open-ils.storage.actor.org_unit.full_path.atomic', $e->requestor->ws_ou);
+       push( @orgs, $_->id ) for @$o;
+
+       my $fs2 = $e->$meth(
+               [
+                       {
+                               shared => 't', 
+                               share_with => \@orgs, 
+                               owner => { '!=' => $e->requestor->id } 
+                       }, 
+                       $flesh
+               ]
+       );
        push( @$fs, @$fs2);
        return $fs;
 }
@@ -86,8 +94,8 @@ __PACKAGE__->register_method(
 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');
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
        $template->owner($e->requestor->id);
        my $tmpl = $e->create_reporter_template($template)
                or return $e->die_event;
@@ -102,8 +110,8 @@ __PACKAGE__->register_method(
 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');
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
        $report->owner($e->requestor->id);
        my $tmpl = $e->create_reporter_report($report)
                or return $e->die_event;
@@ -146,8 +154,8 @@ __PACKAGE__->register_method(
 sub update_template {
        my( $self, $conn, $auth, $tmpl ) = @_;
        my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
-       return $e->event unless $e->checkauth;
-       return $e->event unless $e->allowed('RUN_REPORTS');
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
        my $t = $e->retrieve_reporter_template($tmpl->id)
                or return $e->die_event;
        return 0 if $t->owner ne $e->requestor->id;
@@ -158,6 +166,103 @@ sub update_template {
 }
 
 
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.folder.update',
+       method => 'update_folder');
+sub update_folder {
+       my( $self, $conn, $auth, $type, $folder ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
+       my $meth = "retrieve_reporter_${type}_folder";
+       my $f = $e->$meth($folder->id) or return $e->die_event;
+       return 0 if $f->owner ne $e->requestor->id;
+       $meth = "update_reporter_${type}_folder";
+       $e->$meth($folder) or return $e->die_event;
+       $e->commit;
+       return 1;
+}
+
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.folder.delete',
+       method => 'delete_folder');
+sub delete_folder {
+       my( $self, $conn, $auth, $type, $folderId ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
+       my $meth = "retrieve_reporter_${type}_folder";
+       my $f = $e->$meth($folderId) or return $e->die_event;
+       return 0 if $f->owner ne $e->requestor->id;
+       $meth = "delete_reporter_${type}_folder";
+       $e->$meth($f) or return $e->die_event;
+       $e->commit;
+       return 1;
+}
+
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.template.delete',
+       method => 'delete_template');
+sub delete_template {
+       my( $self, $conn, $auth, $templateId ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
+
+       my $t = $e->retrieve_reporter_template($templateId)
+               or return $e->die_event;
+       return 0 if $t->owner ne $e->requestor->id;
+       $e->delete_reporter_template($t) or return $e->die_event;
+       $e->commit;
+       return 1;
+}
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.report.delete',
+       method => 'delete_report');
+sub delete_report {
+       my( $self, $conn, $auth, $reportId ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth, xact=>1);
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
+
+       my $t = $e->retrieve_reporter_report($reportId)
+               or return $e->die_event;
+       return 0 if $t->owner ne $e->requestor->id;
+       $e->delete_reporter_report($t) or return $e->die_event;
+       $e->commit;
+       return 1;
+}
+
+
+__PACKAGE__->register_method(
+       api_name => 'open-ils.reporter.template_has_reports',
+       method => 'has_reports');
+sub has_reports {
+       my( $self, $conn, $auth, $templateId ) = @_;
+       my $e = new_rstore_editor(authtoken=>$auth);
+       return $e->die_event unless $e->checkauth;
+       return $e->die_event unless $e->allowed('RUN_REPORTS');
+       my $rpts = $e->search_reporter_report({template=>$templateId},{idlist=>1});
+       return 1 if @$rpts;
+       return 0;
+}
+
+
+__PACKAGE__->register_method(
+       method => 'org_full_path',
+       api_name => 'open-ils.reporter.org_unit.full_path');
+
+sub org_full_path {
+       my( $self, $conn, $orgid ) = @_;
+       return $U->storagereq(
+               'open-ils.storage.actor.org_unit.full_path.atomic', $orgid );
+}
+
+
+
 
 __PACKAGE__->register_method(
        method => 'magic_fetch_all',