use OpenSRF::EX qw(:try);
use OpenILS::Perm;
use OpenSRF::Utils::Logger;
+use OpenILS::Utils::ModsParser;
my $logger = "OpenSRF::Utils::Logger";
return( $requestor, $target, $evt);
}
+sub fetch_copy {
+ my( $self, $copyid ) = @_;
+ my( $copy, $evt );
+ $copy = $self->simplereq(
+ 'open-ils.storage',
+ 'open-ils.storage.direct.asset.copy.retrieve', $copyid );
+
+ if(!$copy) { $evt = OpenILS::Event->new('COPY_NOT_FOUND'); }
+
+ return( $copy, $evt );
+}
+
+
+# retrieves a circ object by id
+sub fetch_circulation {
+ my( $self, $circid ) = @_;
+ my $circ; my $evt;
+
+ $circ = $self->simplereq(
+ 'open-ils.storage',
+ "open-ils.storage.direct.action.circulation.retrieve", $circid );
+
+ if(!$circ) {
+ $evt = OpenILS::Event->new('CIRCULATION_NOT_FOUND', circid => $circid );
+ }
+
+ return ( $circ, $evt );
+}
+
+sub fetch_record_by_copy {
+ my( $self, $copyid ) = @_;
+ my( $record, $evt );
+
+ $record = $self->simplereq(
+ 'open-ils.storage',
+ 'open-ils.storage.fleshed.biblio.record_entry.retrieve_by_copy', $copyid );
+
+ if(!$record) {
+ $evt = OpenILS::Event->new('BIBLIO_RECORD_NOT_FOUND');
+ }
+
+ return ($record, $evt);
+}
+
+# turns a record object into an mvr (mods) object
+sub record_to_mvr {
+ my( $self, $record ) = @_;
+ my $u = OpenILS::Utils::ModsParser->new();
+ $u->start_mods_batch( $record->marc );
+ my $mods = $u->finish_mods_batch();
+ $mods->doc_id($record->id);
+ return $mods;
+}
my $apputils = "OpenILS::Application::AppUtils";
use OpenSRF::Utils;
use OpenILS::Utils::ModsParser;
+use OpenILS::Event;
+use OpenSRF::EX qw(:try);
+use OpenSRF::Utils::Logger qw(:logger);
+#my $logger = "OpenSRF::Utils::Logger";
# ------------------------------------------------------------------------
sub checkouts_by_user {
my( $self, $client, $user_session, $user_id ) = @_;
- my $session = OpenSRF::AppSession->create("open-ils.storage");
- my $user_obj = $apputils->check_user_session($user_session);
+ my( $requestor, $target, $copy, $record, $evt );
- if(!$user_id) { $user_id = $user_obj->id(); }
+ ( $requestor, $target, $evt ) =
+ $apputils->checkses_requestor( $user_session, $user_id, 'VIEW_CIRCULATIONS');
+ return $evt if $evt;
- my $circs = $session->request(
+ my $circs = $apputils->simplereq(
+ 'open-ils.storage',
"open-ils.storage.direct.action.open_circulation.search.atomic",
- { usr => $user_id } );
- $circs = $circs->gather(1);
+ { usr => $target->id } );
my @results;
for my $circ (@$circs) {
- my $copy = $session->request(
- "open-ils.storage.direct.asset.copy.retrieve",
- $circ->target_copy );
+ ( $copy, $evt ) = $apputils->fetch_copy($circ->target_copy);
+ return $evt if $evt;
- warn "Retrieving record for copy " . $circ->target_copy . "\n";
+ $logger->debug("Retrieving record for copy " . $circ->target_copy);
- my $record = $session->request(
- "open-ils.storage.fleshed.biblio.record_entry.retrieve_by_copy",
- $circ->target_copy );
+ ($record, $evt) = $apputils->fetch_record_by_copy( $circ->target_copy );
+ return $evt if $evt;
- $copy = $copy->gather(1);
- $record = $record->gather(1);
-
- use Data::Dumper;
- warn Dumper $circ;
- my $u = OpenILS::Utils::ModsParser->new();
- $u->start_mods_batch( $record->marc() );
- my $mods = $u->finish_mods_batch();
- $mods->doc_id($record->id());
+ my $mods = $apputils->record_to_mvr($record);
push( @results, { copy => $copy, circ => $circ, record => $mods } );
}
NOTES
sub title_from_transaction {
-
my( $self, $client, $login_session, $transactionid ) = @_;
- my $user = $apputils->check_user_session($login_session);
- my $session = OpenSRF::AppSession->create('open-ils.storage');
- my $circ = $session->request(
- "open-ils.storage.direct.action.circulation.retrieve", $transactionid )->gather(1);
+ my( $user, $circ, $title, $evt );
- if($circ) {
- my $title = $session->request(
- "open-ils.storage.fleshed.biblio.record_entry.retrieve_by_copy",
- $circ->target_copy )->gather(1);
+ ( $user, $evt ) = $apputils->checkses( $login_session );
+ return $evt if $evt;
- if($title) {
- my $u = OpenILS::Utils::ModsParser->new();
- $u->start_mods_batch( $title->marc );
- return $u->finish_mods_batch();
- }
- }
+ ( $circ, $evt ) = $apputils->fetch_circulation($transactionid);
+ return $evt if $evt;
+
+ ($title, $evt) = $apputils->fetch_record_by_copy($circ->target_copy);
+ return $evt if $evt;
- return undef;
+ return $apputils->record_to_mvr($title);
}
sub set_circ_lost {
my( $self, $client, $login, $circid ) = @_;
+ my( $user, $circ, $evt );
- my $user = $apputils->check_user_session($login);
- my $session = OpenSRF::AppSession->create('open-ils.storage');
- my $circ = $session->request(
- "open-ils.storage.direct.action.circulation.retrieve", $circid )->gather(1);
+ ( $user, $evt ) = $apputils->checkses($login);
+ return $evt if $evt;
- if(!$circ) { throw OpenSRF::EX::ERROR ("No circulation exists with id $circid"); }
+ ( $circ, $evt ) = $apputils->fetch_circulation( $circid );
+ return $evt if $evt;
if($self->api_name =~ /lost/) {
- if($apputils->check_user_perms($user->id, $circ->circ_lib, "SET_CIRC_LOST")) {
- return OpenILS::Perm->new("SET_CIRC_LOST");
+ if($evt = $apputils->checkperms(
+ $user->id, $circ->circ_lib, "SET_CIRC_LOST")) {
+ return $evt;
}
$circ->stop_fines("LOST");
}
if($self->api_name =~ /claims_returned/) {
- if($apputils->check_user_perms($user->id, $circ->circ_lib, "SET_CIRC_CLAIMS_RETURNED")) {
- return OpenILS::Perm->new("SET_CIRC_CLAIMS_RETURNED");
+ if($evt = $apputils->checkperms(
+ $user->id, $circ->circ_lib, "SET_CIRC_CLAIMS_RETURNED")) {
+ return $evt;
}
$circ->stop_fines("CLAIMSRETURNED");
}
-
- my $s = $session->request(
- "open-ils.storage.direct.action.circulation.update", $circ )->gather(1);
+ my $s = $apputils->simplereq(
+ 'open-ils.storage',
+ "open-ils.storage.direct.action.circulation.update", $circ );
if(!$s) { throw OpenSRF::EX::ERROR ("Error updating circulation with id $circid"); }
-
}