my $root = $xmldoc->documentElement();
my @elements =
- $xpc->findnodes( 'ns:LookupUser/UserElementType/Value', $root );
+ $xpc->findnodes( '//ns:LookupUser/UserElementType/Value', $root );
unless ( $elements[0] ) {
- @elements = $xpc->findnodes( 'ns:LookupUser/UserElementType', $root );
+ @elements = $xpc->findnodes( '//ns:UserElementType', $root );
}
return \@elements;
}
+sub get_agencies {
+ my $self = shift;
+ my $xmldoc = shift;
+ my $xpc = XML::LibXML::XPathContext->new;
+ $xpc->registerNs( 'ns', $self->namespace() );
+
+ my $root = $xmldoc->documentElement();
+
+ my @from =
+ $xpc->findnodes( '//ns:InitiationHeader/FromAgencyId/AgencyId', $root );
+ my @to =
+ $xpc->findnodes( '//ns:InitiationHeader/ToAgencyId/AgencyId', $root );
+ return ( $from[0]->textContent, $to[0]->textContent );
+}
+
sub render_output {
my $self = shift;
my $templatename = shift;
my $user = NCIP::User->new( { userid => $user_id, ils => $self->ils } );
$user->initialise();
+ my $vars;
+
+# this bit should be at a lower level
+
+ my ($from,$to) = $self->get_agencies($xmldoc);
+
+ # we switch these for the templates
+ # because we are responding, to becomes from, from becomes to
+ $vars->{'fromagency'} = $to;
+ $vars->{'toagency'} = $from;
# if we have blank user, we need to return that
# and can skip looking for elementtypes
if ( $user->userdata->{'borrowernumber'} eq '' ) {
- my $vars;
$vars->{'messagetype'} = 'LookupUserResponse';
$vars->{'error_detail'} = "Borrower not found";
my $output = $self->render_output( 'problem.tt', $vars );
my $elements = $self->get_user_elements($xmldoc);
#set up the variables for our template
- my $vars;
$vars->{'messagetype'} = 'LookupUserResponse';
$vars->{'elements'} = $elements;
$vars->{'user'} = $user;
<[% messagetype %]>
<ResponseHeader>
<FromAgencyId>
- <UniqueAgencyId>
- <Scheme>[% schemeurl %]</Scheme>
- <Value>[% fromagency %]</Value>
- </UniqueAgencyId>
+ <AgencyId>[% fromagency %]</AgencyId>
</FromAgencyId>
<ToAgencyId>
- <UniqueAgencyId>
- <Scheme>[% schemeurl %]</Scheme>
- <Value>[% toagency %]</Value>
- </UniqueAgencyId>
+ <AgencyId>[% toagency %]</AgencyId>
</ToAgencyId>
</ResponseHeader>
[% myfile = "includes/$messagetype" _ ".inc" %]