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";
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;
}
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;
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;
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;
}
+__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',