]> git.evergreen-ils.org Git - working/NCIPServer.git/blob - lib/NCIP/Handler/AcceptItem.pm
Continuing with the CheckInItem handler
[working/NCIPServer.git] / lib / NCIP / Handler / AcceptItem.pm
1 package NCIP::Handler::AcceptItem;
2
3 =head1
4
5   NCIP::Handler::AcceptItem
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  = $self->xpc();
28         my $itemid = $xpc->findnodes( '//ns:ItemId', $root );
29
30         # checkin the item
31         my $accepted = $self->ils->acceptitem($itemid);
32         my $output;
33         my $vars;
34         my ( $from, $to ) = $self->get_agencies($xmldoc);
35
36         # we switch these for the templates
37         # because we are responding, to becomes from, from becomes to
38         $vars->{'fromagency'} = $to;
39         $vars->{'toagency'}   = $from;
40
41         $vars->{'messagetype'} = 'AcceptItemResponse';
42         $vars->{'barcode'}     = $itemid;
43         if ( !$accepted->{success} ) {
44             $vars->{'processingerror'}        = 1;
45             $vars->{'processingerrortype'}    = $accepted->{'messages'};
46             $vars->{'processingerrorelement'} = 'UniqueItemIdentifier';
47             $output = $self->render_output( 'problem.tt', $vars );
48         }
49         else {
50             my $elements = $self->get_user_elements($xmldoc);
51             $vars->{'elements'} = $elements;
52             $vars->{'accept'}   = $accepted;
53             $output = $self->render_output( 'response.tt', $vars );
54         }
55         return $output;
56     }
57 }
58
59 1;