]> git.evergreen-ils.org Git - working/NCIPServer.git/blob - lib/NCIP/Handler/CheckOutItem.pm
9e141b96a7109de29d544325ebb930a6c73970f3
[working/NCIPServer.git] / lib / NCIP / Handler / CheckOutItem.pm
1 package NCIP::Handler::CheckOutItem;
2
3 =head1
4
5   NCIP::Handler::CheckOutItem
6
7 =head1 SYNOPSIS
8
9     Not to be called directly, NCIP::Handler will pick the appropriate Handler 
10     object, given a message type
11
12 =head1 FUNCTIONS
13
14 =cut
15
16 use Modern::Perl;
17
18 use NCIP::Handler;
19
20 our @ISA = qw(NCIP::Handler);
21
22 sub handle {
23     my $self   = shift;
24     my $xmldoc = shift;
25     if ($xmldoc) {
26         my $root = $xmldoc->documentElement();
27         my $xpc  = XML::LibXML::XPathContext->new;
28         $xpc->registerNs( 'ns', $self->namespace() );
29
30         my $userid =
31           $xpc->findnodes( 'ns:CheckOutItem/UniqueUserId/UserIdentifierValue',
32             $root );
33         my $itemid =
34           $xpc->findnodes( 'ns:CheckOutItem/UniqueItemId/ItemIdentifierValue',
35             $root );
36
37         # checkout the item
38         my ( $error, $messages, $datedue ) =
39           $self->ils->checkout( $userid, $itemid );
40         my $vars;
41         my $output;
42         $vars->{'barcode'}     = $itemid;
43         $vars->{'messagetype'} = 'CheckOutItemResponse';
44         if ($error) {
45             $vars->{'processingerror'}        = 1;
46             $vars->{'processingerrortype'}    = $messages;
47             $vars->{'processingerrorelement'} = 'UniqueItemIdentifier';
48             $output = $self->render_output( 'problem.tt', $vars );
49         }
50         else {
51             my $elements = $self->get_user_elements($xmldoc);
52             $vars->{'elements'} = $elements;
53             $vars->{'datedue'}  = $datedue;
54             $output = $self->render_output( 'response.tt', $vars );
55         }
56         return $output;
57     }
58 }
59
60 1;