Start of RequestItem handler
authorChris Cormack <chrisc@catalyst.net.nz>
Mon, 13 Jan 2014 01:10:53 +0000 (14:10 +1300)
committerChris Cormack <chrisc@catalyst.net.nz>
Mon, 13 Jan 2014 01:10:53 +0000 (14:10 +1300)
lib/NCIP/Handler/RequestItem.pm [new file with mode: 0644]

diff --git a/lib/NCIP/Handler/RequestItem.pm b/lib/NCIP/Handler/RequestItem.pm
new file mode 100644 (file)
index 0000000..93dc08e
--- /dev/null
@@ -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;