1 package NCIP::Handler::RequestItem;
5 NCIP::Handler::RequestItem
9 Not to be called directly, NCIP::Handler will pick the appropriate Handler
10 object, given a message type
20 our @ISA = qw(NCIP::Handler);
26 my $root = $xmldoc->documentElement();
27 my $xpc = XML::LibXML::XPathContext->new;
28 $xpc->registerNs( 'ns', $self->namespace() );
30 my ($userid) = $xpc->findnodes( '//ns:UserIdentifierValue', $root );
31 $userid = $userid->textContent() if $userid;
33 my ($itemid) = $xpc->findnodes( '//ns:ItemIdentifierValue', $root );
34 $itemid = $itemid->textContent() if $itemid;
36 $xpc->findnodes( '//ns:BibliographicRecordIdentifier', $root );
37 $biblionumber = $biblionumber->textContent() if $biblionumber;
40 my $result = $self->ils->request( $userid, $itemid, $biblionumber );
43 $vars->{'barcode'} = $itemid;
44 $vars->{'messagetype'} = 'RequestItemResponse';
45 if ( !$result->{'success'} ) {
46 $vars->{'processingerror'} = 1;
47 $vars->{'processingerrortype'} = $result->{messages};
48 $vars->{'processingerrorelement'} = 'UniqueItemIdentifier';
49 $output = $self->render_output( 'problem.tt', $vars );
52 my $elements = $self->get_user_elements($xmldoc);
53 $vars->{'elements'} = $elements;
55 $vars->{'messages'} = $result->{messages};
56 $output = $self->render_output( 'response.tt', $vars );