Continuing work adding/fixing more handlers
authorChris Cormack <chrisc@catalyst.net.nz>
Tue, 25 Feb 2014 22:50:26 +0000 (11:50 +1300)
committerChris Cormack <chrisc@catalyst.net.nz>
Tue, 25 Feb 2014 22:50:26 +0000 (11:50 +1300)
lib/NCIP/Handler/CheckOutItem.pm
lib/NCIP/Handler/RequestItem.pm
lib/NCIP/ILS/Koha.pm

index c4d6052..9e141b9 100644 (file)
@@ -24,30 +24,33 @@ sub handle {
     my $xmldoc = shift;
     if ($xmldoc) {
         my $root = $xmldoc->documentElement();
+        my $xpc  = XML::LibXML::XPathContext->new;
+        $xpc->registerNs( 'ns', $self->namespace() );
+
         my $userid =
-          $root->findnodes('CheckOutItem/UniqueUserId/UserIdentifierValue');
+          $xpc->findnodes( 'ns:CheckOutItem/UniqueUserId/UserIdentifierValue',
+            $root );
         my $itemid =
-          $root->findnodes('CheckOutItem/UniqueItemId/ItemIdentifierValue');
-        my @elements = $root->findnodes('CheckOutItem/ItemElementType/Value');
+          $xpc->findnodes( 'ns:CheckOutItem/UniqueItemId/ItemIdentifierValue',
+            $root );
 
         # checkout the item
-        my ( $error, $messages, $datedue ) = $self->ils->checkout( $userid, $itemid );
+        my ( $error, $messages, $datedue ) =
+          $self->ils->checkout( $userid, $itemid );
         my $vars;
         my $output;
-        $vars->{'barcode'}=$itemid;
+        $vars->{'barcode'}     = $itemid;
         $vars->{'messagetype'} = 'CheckOutItemResponse';
         if ($error) {
-            warn "Error!!!";
             $vars->{'processingerror'}        = 1;
-            use Data::Dumper;
-            warn Dumper $messages;
             $vars->{'processingerrortype'}    = $messages;
             $vars->{'processingerrorelement'} = 'UniqueItemIdentifier';
             $output = $self->render_output( 'problem.tt', $vars );
         }
         else {
-            $vars->{'elements'} = \@elements;
-            $vars->{'datedue'} = $datedue;
+            my $elements = $self->get_user_elements($xmldoc);
+            $vars->{'elements'} = $elements;
+            $vars->{'datedue'}  = $datedue;
             $output = $self->render_output( 'response.tt', $vars );
         }
         return $output;
index 93dc08e..aa2fa86 100644 (file)
@@ -24,17 +24,21 @@ sub handle {
     my $xmldoc = shift;
     if ($xmldoc) {
         my $root = $xmldoc->documentElement();
+        my $xpc  = XML::LibXML::XPathContext->new;
+        $xpc->registerNs( 'ns', $self->namespace() );
+
         my $userid =
-          $root->findnodes('RequestItem/UniqueUserId/UserIdentifierValue');
+          $xpc->findnodes( 'ns:RequestItem/UniqueUserId/UserIdentifierValue',
+            $root );
         my $itemid =
-          $root->findnodes('RequestItem/UniqueItemId/ItemIdentifierValue');
-        my @elements = $root->findnodes('RequestItem/ItemElementType/Value');
+          $xpc->findnodes( 'ns:RequestItem/UniqueItemId/ItemIdentifierValue',
+            $root );
 
         # checkout the item
         my ( $error, $messages ) = $self->ils->request( $userid, $itemid );
         my $vars;
         my $output;
-        my $vars->{'barcode'}=$itemid;
+        my $vars->{'barcode'} = $itemid;
         $vars->{'messagetype'} = 'RequestItemResponse';
         if ($error) {
             $vars->{'processingerror'}        = 1;
@@ -43,7 +47,8 @@ sub handle {
             $output = $self->render_output( 'problem.tt', $vars );
         }
         else {
-            $vars->{'elements'} = \@elements;
+            my $elements = $self->get_user_elements($xmldoc);
+            $vars->{'elements'} = $elements;
 
             $output = $self->render_output( 'response.tt', $vars );
         }
index a3f8afa..7137082 100644 (file)
@@ -23,6 +23,7 @@ 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 };
 
 sub itemdata {
     my $self     = shift;
@@ -124,4 +125,18 @@ sub renew {
         #handle stuff here
     }
 }
+
+sub request {
+    my $self           = shift;
+    my $biblionumber   = shift;
+    my $borrowernumber = shift;
+    if ( CanBookBeReserved( $borrowernumber, $biblionumber ) ) {
+
+        # Add reserve here
+        return ( undef, "Requested" );
+    }
+    else {
+        return ( 1, "Book can not be requested" );
+    }
+}
 1;