From: erickson Date: Fri, 29 Sep 2006 23:54:09 +0000 (+0000) Subject: create methods, etc. X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=4d530902471f2775e17e1ebdee6c8b76599af863;p=Evergreen.git create methods, etc. git-svn-id: svn://svn.open-ils.org/ILS/trunk@6272 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm b/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm index 7b87de6f57..f75789c21e 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Reporter.pm @@ -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',