using System.Xml.Linq; using CRIF.ACTion.Common; using CRIF.ACTion.Common.Builders; using CRIF.ACTion.Configuration; using Landmark.OLA.Models; using Landmark.OLA.Models.Addresses; using Landmark.OLA.Models.Residences; using static CRIF.ACTion.Common.ContactMechanisms; namespace CRIF.ACTion.Loan.Individuals { public class AddressesSection : CrifRequestSection { public AddressesSection(XNamespace sectionNamespace, CrifSettings settings) : base(sectionNamespace, "addresses", settings) { } public void AddAddress(IAddress address, CrifContactMechanism contactMechanismType) { ModelValidator.Validate(address); var isCurrentAddress = contactMechanismType == CrifContactMechanism.CurrentAddress ? true : false; var addressElement = new XElement(CrifNamespaces.Common + "address", new XAttribute(CrifNamespaces.Common + "id", address.Id), new XAttribute(CrifNamespaces.Common + "street1", BuilderUtils.FormatCrifData(address.Address1)), new XAttribute(CrifNamespaces.Common + "cityName", BuilderUtils.FormatCrifData(address.City)), new XAttribute(CrifNamespaces.Common + "state", address.State), new XAttribute(CrifNamespaces.Common + "postalCode", address.PostalCode), new XAttribute(CrifNamespaces.Common + "country", address.Country)); var addressType = address.GetType(); if (addressType.Equals(typeof(ResidenceAddress)) || addressType.IsSubclassOf(typeof(ResidenceAddress))) { var residence = (ResidenceAddress)address; addressElement.Add( new XAttribute(CrifNamespaces.Common + "isCurrentResFL", isCurrentAddress), new XAttribute(CrifNamespaces.Common + "monthsResided", residence.MonthsResided)); var typeCode = CrifResidenceType.GetCrifResidenceTypeCode(residence.ResidenceType.Value); if (typeCode != null) { var residenceTypeElement = new XElement(CrifNamespaces.Common + "residenceType", new XAttribute(CrifNamespaces.Common + "CD", typeCode)); addressElement.Add(residenceTypeElement); } } if (!string.IsNullOrWhiteSpace(address.Address2)) { addressElement.Add(new XAttribute(CrifNamespaces.Common + "street2", BuilderUtils.FormatCrifData(address.Address2))); } if (!string.IsNullOrWhiteSpace(address.PostalCodeExt)) { addressElement.Add(new XAttribute(CrifNamespaces.Common + "zipExt", address.PostalCodeExt)); } AddContent(addressElement); } } }