Working on the CancelRequest message
authorChris Cormack <chrisc@catalyst.net.nz>
Sun, 30 Mar 2014 21:07:52 +0000 (10:07 +1300)
committerChris Cormack <chrisc@catalyst.net.nz>
Sun, 30 Mar 2014 21:07:52 +0000 (10:07 +1300)
lib/NCIP/Handler/CancelRequestItem.pm [new file with mode: 0644]
lib/NCIP/Handler/RequestItem.pm
lib/NCIP/ILS/Koha.pm

diff --git a/lib/NCIP/Handler/CancelRequestItem.pm b/lib/NCIP/Handler/CancelRequestItem.pm
new file mode 100644 (file)
index 0000000..2cc984f
--- /dev/null
@@ -0,0 +1,45 @@
+package NCIP::Handler::LookupUser;
+
+=head1
+
+  NCIP::Handler::LookupUser
+
+=head1 SYNOPSIS
+
+    Not to be called directly, NCIP::Handler will pick the appropriate Handler 
+    object, given a message type
+
+=head1 FUNCTIONS
+
+=cut
+
+use Modern::Perl;
+
+use NCIP::Handler;
+use NCIP::User;
+
+our @ISA = qw(NCIP::Handler);
+
+sub handle {
+    my $self   = shift;
+    my $xmldoc = shift;
+    if ($xmldoc) {
+
+        # Given our xml document, lets find the itemid
+        my ($user_id) =
+          $xmldoc->getElementsByTagNameNS( $self->namespace(),
+            'UserIdentifierValue' );
+
+        my $user = NCIP::User->new(
+            { userid => $user_id->textContent(), ils => $self->ils } );
+        $user->initialise();
+        my $vars;
+        $vars->{'messagetype'} = 'LookupUserResponse';
+        $vars->{'user'} = $user;
+        my $output = $self->render_output('response.tt',$vars);
+        return $output;
+
+    }
+}
+
+1;
index aa2fa86..67aa8ff 100644 (file)
@@ -34,7 +34,7 @@ sub handle {
           $xpc->findnodes( 'ns:RequestItem/UniqueItemId/ItemIdentifierValue',
             $root );
 
-        # checkout the item
+        # request the item
         my ( $error, $messages ) = $self->ils->request( $userid, $itemid );
         my $vars;
         my $output;
index 236437b..ebac487 100644 (file)
@@ -26,7 +26,8 @@ use C4::Members qw{ GetMemberDetails };
 use C4::Circulation qw { AddReturn CanBookBeIssued AddIssue };
 use C4::Context;
 use C4::Items qw { GetItem };
-use C4::Reserves qw {CanBookBeReserved AddReserve GetReservesFromItemnumber};
+use C4::Reserves
+  qw {CanBookBeReserved AddReserve GetReservesFromItemnumber CancelReserve};
 use C4::Biblio qw {AddBiblio GetMarcFromKohaField};
 use C4::Barcodes::ValueBuilder;
 use C4::Items qw{AddItem};
@@ -140,19 +141,60 @@ sub renew {
 }
 
 sub request {
-    my $self           = shift;
-    my $biblionumber   = shift;
-    my $borrowernumber = shift;
-    if ( CanBookBeReserved( $borrowernumber, $biblionumber ) ) {
+    my $self      = shift;
+    my $carnumber = shift;
+    my $barcode   = shift;
+    my my $borrower = GetMemberDetails( undef, $cardnumber );
+    my $result;
+    unless ($borrower) {
+        $result = { success => 0, messages => { 'BORROWER_NOT_FOUND' => 1 } };
+        return $result;
+    }
+    my $Itemdata = GetItem( undef, $barcode );
+    unless ($itemdata) {
+        $result = { success => 0, messages => {'ITEM_NOT_FOUND'} };
+        return $result;
+    }
+    $self->userenv();
+    if (
+        CanBookBeReserved(
+            $borrower->{borrowernumber},
+            $itemdata->{biblionumber}
+        )
+      )
+    {
+        my $biblioitemnumber = $itemdata->{biblionumber};
+        my $branchcode       = 'AS';
 
         # Add reserve here
-        return ( undef, "Requested" );
+        AddReserve(
+            $branch,                   $borrower->{borrwerborrowernumber},
+            $itemdata->{biblionumber}, 'a',
+            [$biblioitemnumber],       1,
+            undef,                     undef,
+            'Placed By ILL',           '',
+            $itemdata->{'itemnumber'}, undef
+        );
+
+        $result = { success => 1, request_id => 'something' };
+        return $result;
     }
     else {
-        return ( 1, "Book can not be requested" );
+        $result = { success => 0, messages => { CANNOT_REQUEST => 1 } };
+        return $result;
+
     }
 }
 
+sub cancelrequest {
+    my $self      = shift;
+    my $requestid = shift;
+    CancelReserve( { reserve_id => $requestid } );
+
+    my $result = { success => 1 };
+    return $result;
+}
+
 sub acceptitem {
     my $self    = shift || die "Not called as a method, we must bail out";
     my $barcode = shift || die "No barcode passed can not continue";
@@ -167,8 +209,6 @@ sub acceptitem {
     if ($create) {
         my $record;
         my $frameworkcode = 'FA';    # we should get this from config
-        warn "Create yo";
-        warn $iteminfo->{title};
 
         # we must make the item first
         # Autographics workflow is to make the item each time
@@ -217,11 +257,10 @@ sub acceptitem {
 
     # find hold and get branch for that, check in there
     my $itemdata = GetItem( undef, $barcode );
-    warn $itemdata->{'itemnumber'};
 
     my ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $wait ) =
       GetReservesFromItemnumber( $itemdata->{'itemnumber'} );
-    warn "barcode $barcode";
+
     # now we have to check the requested action
     if ( $action =~ /^Hold For Pickup And Notify/ ) {
         unless ($reserve_id) {
@@ -277,7 +316,7 @@ sub acceptitem {
         messages        => $messages,
         iteminformation => $issue,
         borrower        => $borrower,
-        newbarcode         => $barcode
+        newbarcode      => $barcode
     };
 
     return $result;