Change ILS->find_barcode to ILS->find_user_barcode.
authorJason Stephenson <jason@sigio.com>
Sun, 24 Aug 2014 14:11:03 +0000 (10:11 -0400)
committerJason Stephenson <jason@sigio.com>
Sun, 24 Aug 2014 14:11:03 +0000 (10:11 -0400)
I anticipate that we'll need a separate method to find an item
barcode.

Also, we return the tag of the field where the barcode was in
list context. We still return only the barcode in scalar context.

Signed-off-by: Jason Stephenson <jason@sigio.com>
lib/NCIP/ILS.pm
lib/NCIP/ILS/Evergreen.pm

index e835573..a64414b 100644 (file)
@@ -301,19 +301,23 @@ sub parse_request_type {
 
 =head2 find_barcode
 
 
 =head2 find_barcode
 
-C<my $barcode = $ils-E<gt>find_barcode($request);>
+C<my $barcode = $ils-E<gt>find_user_barcode($request);>
 
 
-If you have a request type that includes a barcode identifier value,
-this routine will find it. It presently works only on LookupUser
-requests.
+If you have a request type that includes a user barcode identifier
+value, this routine will find it. It presently works only on
+LookupUser requests.
+
+It will return the barcode in scalar context, or the barcode and the
+tag of the field where the barcode was found in list context.
 
 =cut
 
 
 =cut
 
-sub find_barcode {
+sub find_user_barcode {
     my $self = shift;
     my $request = shift;
 
     my $barcode;
     my $self = shift;
     my $request = shift;
 
     my $barcode;
+    my $field;
     my $message = $self->parse_request_type($request);
     return unless($message);
     if ($message eq 'LookupUser') {
     my $message = $self->parse_request_type($request);
     return unless($message);
     if ($message eq 'LookupUser') {
@@ -326,6 +330,7 @@ sub find_barcode {
             foreach my $input (@$authinput) {
                 if ($input->{AuthenticationInputType} =~ /barcode/i) {
                     $barcode = $input->{AuthenticationInputData};
             foreach my $input (@$authinput) {
                 if ($input->{AuthenticationInputType} =~ /barcode/i) {
                     $barcode = $input->{AuthenticationInputData};
+                    $field = 'AuthenticationInputData';
                     last;
                 }
             }
                     last;
                 }
             }
@@ -338,13 +343,14 @@ sub find_barcode {
             foreach my $input (@$authinput) {
                 if ($input->{UserIdentifierType} =~ /barcode/i) {
                     $barcode = $input->{UserIdentifierValue};
             foreach my $input (@$authinput) {
                 if ($input->{UserIdentifierType} =~ /barcode/i) {
                     $barcode = $input->{UserIdentifierValue};
+                    $field = 'UserIdentifierValue';
                     last;
                 }
             }
         }
     }
 
                     last;
                 }
             }
         }
     }
 
-    return $barcode;
+    return (wantarray) ? ($barcode, $field) : $barcode;
 }
 
 1;
 }
 
 1;
index 4fb15e8..a0a772d 100644 (file)
@@ -109,7 +109,7 @@ sub lookupuser {
 
     # Need to parse the request object to get the barcode and other
     # data out.
 
     # Need to parse the request object to get the barcode and other
     # data out.
-    my $barcode = $self->find_barcode($request);
+    my ($barcode, $idfield) = $self->find_user_barcode($request);
 
     # If we can't find a barcode, report a problem.
     unless ($barcode) {
 
     # If we can't find a barcode, report a problem.
     unless ($barcode) {
@@ -140,7 +140,7 @@ sub lookupuser {
         my $problem = NCIP::Problem->new();
         $problem->ProblemType('Unknown User');
         $problem->ProblemDetail("User with barcode $barcode unknown");
         my $problem = NCIP::Problem->new();
         $problem->ProblemType('Unknown User');
         $problem->ProblemDetail("User with barcode $barcode unknown");
-        $problem->ProblemElement('AuthenticationInputData');
+        $problem->ProblemElement($idfield);
         $problem->ProblemValue($barcode);
         $response->problem($problem);
         return $response;
         $problem->ProblemValue($barcode);
         $response->problem($problem);
         return $response;