From d15d62dc0dfa7ad08043eeef9ba445d9838745cb Mon Sep 17 00:00:00 2001 From: Chris Cormack Date: Mon, 13 Jan 2014 14:10:53 +1300 Subject: [PATCH] Start of RequestItem handler --- lib/NCIP/Handler/RequestItem.pm | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/NCIP/Handler/RequestItem.pm diff --git a/lib/NCIP/Handler/RequestItem.pm b/lib/NCIP/Handler/RequestItem.pm new file mode 100644 index 0000000..93dc08e --- /dev/null +++ b/lib/NCIP/Handler/RequestItem.pm @@ -0,0 +1,54 @@ +package NCIP::Handler::RequestItem; + +=head1 + + NCIP::Handler::RequestItem + +=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; + +our @ISA = qw(NCIP::Handler); + +sub handle { + my $self = shift; + my $xmldoc = shift; + if ($xmldoc) { + my $root = $xmldoc->documentElement(); + my $userid = + $root->findnodes('RequestItem/UniqueUserId/UserIdentifierValue'); + my $itemid = + $root->findnodes('RequestItem/UniqueItemId/ItemIdentifierValue'); + my @elements = $root->findnodes('RequestItem/ItemElementType/Value'); + + # checkout the item + my ( $error, $messages ) = $self->ils->request( $userid, $itemid ); + my $vars; + my $output; + my $vars->{'barcode'}=$itemid; + $vars->{'messagetype'} = 'RequestItemResponse'; + if ($error) { + $vars->{'processingerror'} = 1; + $vars->{'processingerrortype'} = $messages; + $vars->{'processingerrorelement'} = 'UniqueItemIdentifier'; + $output = $self->render_output( 'problem.tt', $vars ); + } + else { + $vars->{'elements'} = \@elements; + + $output = $self->render_output( 'response.tt', $vars ); + } + return $output; + } +} + +1; -- 2.11.0