Add UserOptionalFields to more templates.
authorJason Stephenson <jason@sigio.com>
Sun, 5 Oct 2014 14:56:38 +0000 (10:56 -0400)
committerJason Stephenson <jason@sigio.com>
Sun, 5 Oct 2014 14:56:38 +0000 (10:56 -0400)
Also add checks for it in more messages for NCIP::ILS::Evergreen.

Signed-off-by: Jason Stephenson <jason@sigio.com>
lib/NCIP/ILS/Evergreen.pm
templates/includes/AcceptItemResponse.inc
templates/includes/CancelRequestItemResponse.inc
templates/includes/CheckInItemResponse.inc
templates/includes/LookupUserResponse.inc
templates/includes/RequestItemResponse.inc
templates/includes/UserOptionalFields.inc [new file with mode: 0644]

index c859df5..8abd8b9 100644 (file)
@@ -470,6 +470,14 @@ sub checkinitem {
             )
         };
 
+        # Look for UserElements requested and add it to the response:
+        my $elements = $request->{$message_type}->{UserElementType};
+        if ($elements) {
+            $elements = [$elements] unless (ref $elements eq 'ARRAY');
+            my $optionalfields = $self->handle_user_elements($circ_user, $elements);
+            $data->{UserOptionalFields} = $optionalfields;
+        }
+
         $response->data($data);
 
         # At some point in the future, we should probably check if
@@ -659,6 +667,14 @@ sub renewitem {
         $due->set_time_zone('UTC');
         $data->{DateDue} = $due->iso8601();
 
+        # Look for UserElements requested and add it to the response:
+        my $elements = $request->{$message_type}->{UserElementType};
+        if ($elements) {
+            $elements = [$elements] unless (ref $elements eq 'ARRAY');
+            my $optionalfields = $self->handle_user_elements($user, $elements);
+            $data->{UserOptionalFields} = $optionalfields;
+        }
+
         $response->data($data);
     }
 
@@ -818,6 +834,14 @@ sub checkoutitem {
         $due->set_time_zone('UTC');
         $data->{DateDue} = $due->iso8601();
 
+        # Look for UserElements requested and add it to the response:
+        my $elements = $request->{$message_type}->{UserElementType};
+        if ($elements) {
+            $elements = [$elements] unless (ref $elements eq 'ARRAY');
+            my $optionalfields = $self->handle_user_elements($user, $elements);
+            $data->{UserOptionalFields} = $optionalfields;
+        }
+
         $response->data($data);
     }
 
@@ -969,6 +993,14 @@ sub requestitem {
             RequestType => $request->{$message}->{RequestType},
             RequestScopeType => ($hold->hold_type() eq 'V') ? "item" : "bibliographic item"
         };
+        # Look for UserElements requested and add it to the response:
+        my $elements = $request->{$message_type}->{UserElementType};
+        if ($elements) {
+            $elements = [$elements] unless (ref $elements eq 'ARRAY');
+            my $optionalfields = $self->handle_user_elements($user, $elements);
+            $data->{UserOptionalFields} = $optionalfields;
+        }
+
         $response->data($data);
     }
 
@@ -1115,17 +1147,23 @@ sub cancelrequestitem {
                 )
             } else {
                 $self->cancel_hold($hold);
-                $response->data(
-                    {
-                        RequestId => $requestid,
-                        UserId => NCIP::User::Id->new(
-                            {
-                                UserIdentifierType => 'Barcode Id',
-                                UserIdentifierValue => $user->card->barcode()
-                            }
-                        )
-                    }
-                )
+                my $data = {
+                    RequestId => $requestid,
+                    UserId => NCIP::User::Id->new(
+                        {
+                            UserIdentifierType => 'Barcode Id',
+                            UserIdentifierValue => $user->card->barcode()
+                        }
+                    )
+                };
+                # Look for UserElements requested and add it to the response:
+                my $elements = $request->{$message_type}->{UserElementType};
+                if ($elements) {
+                    $elements = [$elements] unless (ref $elements eq 'ARRAY');
+                    my $optionalfields = $self->handle_user_elements($user, $elements);
+                    $data->{UserOptionalFields} = $optionalfields;
+                }
+                $response->data($data);
             }
         } else {
             # Report a problem that the hold is not for this user.
index a011d8e..5f91712 100644 (file)
@@ -18,3 +18,4 @@
 <ItemIdentifierValue>[% data.ItemId.ItemIdentifierValue | xml %]</ItemIdentifierValue>
 </ItemId>
 [% END -%]
+[% INCLUDE "includes/UserOptionalFields.inc" -%]
index 483e63b..d912704 100644 (file)
@@ -16,3 +16,4 @@
 <UserIdentifierType>[% data.UserId.UserIdentifierType | xml %]</UserIdentiferiType>
 [% END -%]
 </UserId>
+[% INCLUDE "includes/UserOptionalFields.inc" -%]
index ad36025..5a27e1e 100644 (file)
@@ -18,3 +18,4 @@
 <UserIdentifierValue>[% data.UserId.UserIdentifierValue | xml %]</UserIdentifierValue>
 </UserId>
 [% END -%]
+[% INCLUDE "includes/UserOptionalFields.inc" -%]
index c2512f6..4a66689 100644 (file)
 [% END -%]
 </UserId>
 [% END -%]
-[% IF data.UserOptionalFields -%]
-<UserOptionalFields>
-[% IF data.UserOptionalFields.NameInformation -%]
-<NameInformation>
-<PersonalNameInformation>
-<StructuredPersonalUserName>
-[% IF data.UserOptionalFields.NameInformation.GivenName -%]
-<GivenName>[% data.UserOptionalFields.NameInformation.GivenName | xml %]</GivenName>
-[% END -%]
-<Surname>[% data.UserOptionalFields.NameInformation.Surname | xml %]</Surname>
-[% IF data.UserOptionalFields.NameInformation.Prefix -%]
-<Prefix>[% data.UserOptionalFields.NameInformation.Prefix %]</Prefix>
-[% END -%]
-[% IF data.UserOptionalFields.NameInformation.Suffix -%]
-<Suffix>[% data.UserOptionalFields.NameInformation.Suffix %]</Suffix>
-[% END -%]
-[% IF data.UserOptionalFields.NameInformation.Initials -%]
-<Initials>[% data.UserOptionalFields.NameInformation.Initials %]</Initials>
-[% END -%]
-</StructuredPersonalUserName>
-</PersonalNameInformation>
-</NameInformation>
-[% END -%]
-[% IF data.UserOptionalFields.UserAddressInformation -%]
-[% FOREACH element IN data.UserOptionalFields.UserAddressInformation -%]
-<UserAddressInformation>
-<UserAddressRoleType>[% element.UserAddressRoleType | xml %]</UserAddressRoleType>
-[% IF element.PhysicalAddress -%]
-<PhysicalAddress>
-<StructuredAddress>
-<Line1>[% element.PhysicalAddress.Line1 | xml %]</Line1>
-[% IF element.PhysicalAddress.Line2 -%]
-<Line2>[% element.PhysicalAddress.Line2 | xml %]</Line2>
-[% END -%]
-[% IF element.PhysicalAddress.Locality -%]
-<Locality>[% element.PhysicalAddress.Locality | xml %]</Locality>
-[% END -%]
-[% IF element.PhysicalAddress.Region -%]
-<Region>[% element.PhysicalAddress.Region | xml %]</Region>
-[% END -%]
-[% IF element.PhysicalAddress.PostalCode -%]
-<PostalCode>[% element.PhysicalAddress.PostalCode | xml %]</PostalCode>
-[% END -%]
-[% IF element.PhysicalAddress.Country -%]
-<Country>[% element.PhysicalAddress.Country | xml %]</Country>
-[% END -%]
-</StructuredAddress>
-</PhysicalAddress>
-[% ELSIF element.ElectronicAddress -%]
-<ElectronicAddress>
-<ElectronicAddressType>[% element.ElectronicAddress.Type | xml %]</ElectronicAddressType>
-<ElectronicAddressData>[% element.ElectronicAddress.Data | xml %]</ElectronicAddressData>
-</ElectronicAddress>
-[% END -%]
-</UserAddressInformation>
-[% END -%]
-[% END -%]
-[% IF data.UserOptionalFields.UserPrivilege -%]
-[% FOREACH privilege IN data.UserOptionalFields.UserPrivilege -%]
-<UserPrivilege>
-<AgencyId>[% privilege.AgencyId | xml -%]</AgencyId>
-<AgencyUserPrivilegeType>[% privilege.AgencyUserPrivilegeType | xml %]</AgencyUserPrivilegeType>
-[% IF privilege.ValidFromDate -%]
-<ValidFromDate>[% privilege.ValidFromDate | xml %]</ValidFromDate>
-[% END -%]
-[% IF privilege.ValidToDate -%]
-<ValidToDate>[% privilege.ValidToDate | xml %]</ValidToDate>
-[% END -%]
-[% IF privilege.UserPrivilegeDescription -%]
-<UserPrivilegeDescription>[% privilege.UserPrivilegeDescription | xml %]</UserPrivilegeDescription>
-[% END -%]
-[% IF privilege.UserPrivilegeStatus -%]
-<UserPrivilegeStatus>
-<UserPrivilegeStatusType>
-[% privilege.UserPrivilegeStatus.UserPrivilegeStatusType | xml %]
-</UserPrivilegeStatusType>
-[% IF privilege.UserPrivilegeStatus.DateOfUserPrivilegeStatus -%]
-<DateOfUserPrivilegeStatus>
-[% privilege.UserPrivilegeStatus.DateOfUserPrivilegeStatus | xml %]
-</DateOfUserPrivilegeStatus>
-[% END -%]
-</UserPrivilegeStatus>
-[% END -%]
-</UserPrivilege>
-[% END -%]
-[% END -%]
-[% IF data.UserOptionalFields.UserLanguage -%]
-[% FOREACH language IN data.UserOptionalFields.UserLanguage -%]
-<UserLanguage>[% language | xml %]</UserLanguage>
-[% END -%]
-[% END -%]
-[% IF data.UserOptionalFields.BlockOrTrap -%]
-[% FOREACH block IN data.UserOptionalFields.BlockOrTrap -%]
-<BlockOrTrap>
-<AgencyId>[% block.AgencyId | xml %]</AgencyId>
-<BlockOrTrapType>[% block.BlockOrTrapType | xml %]</BlockOrTrapType>
-[% IF block.ValidFromDate -%]
-<ValidFromDate>[% block.ValidFromDate %]</ValidFromDate>
-[% END -%]
-[% IF block.ValidToDate -%]
-<ValidToDate>[% block.ValidToDate %]</ValidToDate>
-[% END %]
-</BlockOrTrap>
-[% END -%]
-[% END -%]
-</UserOptionalFields>
-[% END -%]
+[% INCLUDE "includes/UserOptionalFields.inc" -%]
index a75e5d2..5f0ef28 100644 (file)
@@ -18,3 +18,4 @@
 </UserId>
 <RequestType>[% data.RequestType | xml %]</RequestType>
 <RequestScopeType>[% data.RequestScopeType | xml %]</RequestScopeType>
+[% INCLUDE "includes/UserOptionalFields.inc" -%]
diff --git a/templates/includes/UserOptionalFields.inc b/templates/includes/UserOptionalFields.inc
new file mode 100644 (file)
index 0000000..9e68adc
--- /dev/null
@@ -0,0 +1,107 @@
+[% IF data.UserOptionalFields -%]
+<UserOptionalFields>
+[% IF data.UserOptionalFields.NameInformation -%]
+<NameInformation>
+<PersonalNameInformation>
+<StructuredPersonalUserName>
+[% IF data.UserOptionalFields.NameInformation.GivenName -%]
+<GivenName>[% data.UserOptionalFields.NameInformation.GivenName | xml %]</GivenName>
+[% END -%]
+<Surname>[% data.UserOptionalFields.NameInformation.Surname | xml %]</Surname>
+[% IF data.UserOptionalFields.NameInformation.Prefix -%]
+<Prefix>[% data.UserOptionalFields.NameInformation.Prefix %]</Prefix>
+[% END -%]
+[% IF data.UserOptionalFields.NameInformation.Suffix -%]
+<Suffix>[% data.UserOptionalFields.NameInformation.Suffix %]</Suffix>
+[% END -%]
+[% IF data.UserOptionalFields.NameInformation.Initials -%]
+<Initials>[% data.UserOptionalFields.NameInformation.Initials %]</Initials>
+[% END -%]
+</StructuredPersonalUserName>
+</PersonalNameInformation>
+</NameInformation>
+[% END -%]
+[% IF data.UserOptionalFields.UserAddressInformation -%]
+[% FOREACH element IN data.UserOptionalFields.UserAddressInformation -%]
+<UserAddressInformation>
+<UserAddressRoleType>[% element.UserAddressRoleType | xml %]</UserAddressRoleType>
+[% IF element.PhysicalAddress -%]
+<PhysicalAddress>
+<StructuredAddress>
+<Line1>[% element.PhysicalAddress.Line1 | xml %]</Line1>
+[% IF element.PhysicalAddress.Line2 -%]
+<Line2>[% element.PhysicalAddress.Line2 | xml %]</Line2>
+[% END -%]
+[% IF element.PhysicalAddress.Locality -%]
+<Locality>[% element.PhysicalAddress.Locality | xml %]</Locality>
+[% END -%]
+[% IF element.PhysicalAddress.Region -%]
+<Region>[% element.PhysicalAddress.Region | xml %]</Region>
+[% END -%]
+[% IF element.PhysicalAddress.PostalCode -%]
+<PostalCode>[% element.PhysicalAddress.PostalCode | xml %]</PostalCode>
+[% END -%]
+[% IF element.PhysicalAddress.Country -%]
+<Country>[% element.PhysicalAddress.Country | xml %]</Country>
+[% END -%]
+</StructuredAddress>
+</PhysicalAddress>
+[% ELSIF element.ElectronicAddress -%]
+<ElectronicAddress>
+<ElectronicAddressType>[% element.ElectronicAddress.Type | xml %]</ElectronicAddressType>
+<ElectronicAddressData>[% element.ElectronicAddress.Data | xml %]</ElectronicAddressData>
+</ElectronicAddress>
+[% END -%]
+</UserAddressInformation>
+[% END -%]
+[% END -%]
+[% IF data.UserOptionalFields.UserPrivilege -%]
+[% FOREACH privilege IN data.UserOptionalFields.UserPrivilege -%]
+<UserPrivilege>
+<AgencyId>[% privilege.AgencyId | xml -%]</AgencyId>
+<AgencyUserPrivilegeType>[% privilege.AgencyUserPrivilegeType | xml %]</AgencyUserPrivilegeType>
+[% IF privilege.ValidFromDate -%]
+<ValidFromDate>[% privilege.ValidFromDate | xml %]</ValidFromDate>
+[% END -%]
+[% IF privilege.ValidToDate -%]
+<ValidToDate>[% privilege.ValidToDate | xml %]</ValidToDate>
+[% END -%]
+[% IF privilege.UserPrivilegeDescription -%]
+<UserPrivilegeDescription>[% privilege.UserPrivilegeDescription | xml %]</UserPrivilegeDescription>
+[% END -%]
+[% IF privilege.UserPrivilegeStatus -%]
+<UserPrivilegeStatus>
+<UserPrivilegeStatusType>
+[% privilege.UserPrivilegeStatus.UserPrivilegeStatusType | xml %]
+</UserPrivilegeStatusType>
+[% IF privilege.UserPrivilegeStatus.DateOfUserPrivilegeStatus -%]
+<DateOfUserPrivilegeStatus>
+[% privilege.UserPrivilegeStatus.DateOfUserPrivilegeStatus | xml %]
+</DateOfUserPrivilegeStatus>
+[% END -%]
+</UserPrivilegeStatus>
+[% END -%]
+</UserPrivilege>
+[% END -%]
+[% END -%]
+[% IF data.UserOptionalFields.UserLanguage -%]
+[% FOREACH language IN data.UserOptionalFields.UserLanguage -%]
+<UserLanguage>[% language | xml %]</UserLanguage>
+[% END -%]
+[% END -%]
+[% IF data.UserOptionalFields.BlockOrTrap -%]
+[% FOREACH block IN data.UserOptionalFields.BlockOrTrap -%]
+<BlockOrTrap>
+<AgencyId>[% block.AgencyId | xml %]</AgencyId>
+<BlockOrTrapType>[% block.BlockOrTrapType | xml %]</BlockOrTrapType>
+[% IF block.ValidFromDate -%]
+<ValidFromDate>[% block.ValidFromDate %]</ValidFromDate>
+[% END -%]
+[% IF block.ValidToDate -%]
+<ValidToDate>[% block.ValidToDate %]</ValidToDate>
+[% END %]
+</BlockOrTrap>
+[% END -%]
+[% END -%]
+</UserOptionalFields>
+[% END -%]