From c6944110bcc0d25c8cd5743844b772c2fb329cec Mon Sep 17 00:00:00 2001 From: Chris Cormack Date: Wed, 26 Feb 2014 11:50:26 +1300 Subject: [PATCH] Continuing work adding/fixing more handlers --- lib/NCIP/Handler/CheckOutItem.pm | 23 +++++++++++++---------- lib/NCIP/Handler/RequestItem.pm | 15 ++++++++++----- lib/NCIP/ILS/Koha.pm | 15 +++++++++++++++ 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/lib/NCIP/Handler/CheckOutItem.pm b/lib/NCIP/Handler/CheckOutItem.pm index c4d6052..9e141b9 100644 --- a/lib/NCIP/Handler/CheckOutItem.pm +++ b/lib/NCIP/Handler/CheckOutItem.pm @@ -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; diff --git a/lib/NCIP/Handler/RequestItem.pm b/lib/NCIP/Handler/RequestItem.pm index 93dc08e..aa2fa86 100644 --- a/lib/NCIP/Handler/RequestItem.pm +++ b/lib/NCIP/Handler/RequestItem.pm @@ -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 ); } diff --git a/lib/NCIP/ILS/Koha.pm b/lib/NCIP/ILS/Koha.pm index a3f8afa..7137082 100644 --- a/lib/NCIP/ILS/Koha.pm +++ b/lib/NCIP/ILS/Koha.pm @@ -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; -- 2.11.0