public void MapToReferenceDetails_ShouldReturnCompleteReferenceDetails() { //Arrange var entity = new CaseBuilder() .WithIntegrationFormField("prfpostcode", "SK1 3XE") .WithIntegrationFormField("prfaddress", "Address line 1|Address line 2|Town") .WithIntegrationFormField("prfplaceref", "1234") .WithIntegrationFormField("prffirstname", "name") .WithIntegrationFormField("prflastname", "lastname") .WithIntegrationFormField("prfrelation", "relation") .WithIntegrationFormField("prfyears", "years") .WithIntegrationFormField("prfemail", "email") .WithIntegrationFormField("prfcontact", "contact") .Build(); //Act var result = ReferenceDetailsMapper.MapToReferenceDetails(entity.IntegrationFormFields, "prffirstname", "prflastname", "prfrelation", "prfyears", "prfemail", "prfcontact", "prfaddress", "prfplaceref", "prfpostcode"); //Assert Assert.Equal(string.Empty, result.Address.AddressLine1); Assert.Equal(string.Empty, result.Address.AddressLine2); Assert.Equal(string.Empty, result.Address.Town); Assert.Equal("SK1 3XE", result.Address.Postcode); Assert.Equal("1234", result.Address.PlaceRef); Assert.Equal("name", result.FirstName); Assert.Equal("lastname", result.LastName); Assert.Equal("relation", result.RelationshipToYou); Assert.Equal("years", result.NumberOfYearsKnown); Assert.Equal("email", result.EmailAddress); Assert.Equal("contact", result.PhoneNumber); }
public void MapToReferenceDetails_ShouldReturnEmptyReferenceDetails() { //Arrange var integrationFormFields = new List <CustomField>(); //Act var result = ReferenceDetailsMapper.MapToReferenceDetails(integrationFormFields, "prffirstname", "prflastname", "prfrelation", "prfyears", "prfemail", "prfcontact", "prfaddress", "prfplaceref", "prfpostcode"); //Assert Assert.Equal(string.Empty, result.Address.AddressLine1); Assert.Equal(string.Empty, result.Address.AddressLine2); Assert.Equal(string.Empty, result.Address.Town); Assert.Equal(string.Empty, result.Address.Postcode); Assert.Equal(string.Empty, result.Address.PlaceRef); Assert.Null(result.FirstName); Assert.Null(result.LastName); Assert.Null(result.RelationshipToYou); Assert.Null(result.NumberOfYearsKnown); Assert.Null(result.EmailAddress); Assert.Null(result.PhoneNumber); }
// TODO: replace all nullable boolean parsing to use ParseVerintBoolean method public async Task <FosteringCase> GetCase(string caseId) { var response = await _verintServiceGateway.GetCase(caseId); if (response.StatusCode != HttpStatusCode.OK) { _logger.LogWarning($"FosteringService GetCase an exception has occured while getting case from verint service, statuscode: {response.StatusCode}"); throw new Exception($"Fostering service exception. Verint service gateway failed to respond with OK. Response: {response}"); } var integrationFormFields = response.ResponseContent.IntegrationFormFields; var hasSecondApplicant = integrationFormFields.FirstOrDefault(_ => _.Name == "withpartner")?.Value == "Yes" && integrationFormFields.FirstOrDefault(_ => _.Name == "firstname_2")?.Value != null; var fosteringCase = new FosteringCase { Statuses = new FosteringCaseStatuses { TellUsAboutYourselfStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "tellusaboutyourselfstatus")?.Value), ChildrenLivingAwayFromYourHomeStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "childrenlivingawayfromyourhomestatus")?.Value), LanguageSpokenInYourHomeStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "languagespokeninyourhomestatus")?.Value), TellUsAboutYourInterestInFosteringStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "tellusaboutyourinterestinfosteringstatus")?.Value), YourEmploymentDetailsStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "youremploymentdetailsstatus")?.Value), YourFosteringHistoryStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "yourfosteringhistorystatus")?.Value), YourHealthStatus = GetTaskStatus(integrationFormFields.FirstOrDefault(_ => _.Name == "yourhealthstatus")?.Value), YourHouseholdStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "yourhouseholdstatus")?.Value), YourPartnershipStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "yourpartnershipstatus")?.Value), ReferencesStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "yourreferencesstatus")?.Value), GpDetailsStatus = GetTaskStatus(integrationFormFields.FirstOrDefault(_ => _.Name == "gpdetailsstatus")?.Value), CouncillorsOrEmployeesStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "councillorsoremployeesstatus")?.Value), AddressHistoryStatus = GetTaskStatus(integrationFormFields .FirstOrDefault(_ => _.Name == "addresshistorystatus")?.Value) }, FirstApplicant = new FosteringApplicant { FirstName = integrationFormFields.First(_ => _.Name == "firstname").Value, LastName = integrationFormFields.First(_ => _.Name == "surname").Value, AnotherName = integrationFormFields.FirstOrDefault(_ => _.Name == "previousname")?.Value ?? string.Empty, Nationality = integrationFormFields.FirstOrDefault(_ => _.Name == "nationality")?.Value ?? string.Empty, Ethnicity = integrationFormFields.FirstOrDefault(_ => _.Name == "ethnicity")?.Value ?? string.Empty, Gender = integrationFormFields.FirstOrDefault(_ => _.Name == "gender")?.Value ?? string.Empty, Religion = integrationFormFields.FirstOrDefault(_ => _.Name == "religionorfaithgroup")?.Value ?? string.Empty, PlaceOfBirth = integrationFormFields.FirstOrDefault(_ => _.Name == "placeofbirth")?.Value ?? string.Empty, CurrentEmployer = integrationFormFields.FirstOrDefault(_ => _.Name == "currentemployer")?.Value ?? string.Empty, JobTitle = integrationFormFields.FirstOrDefault(_ => _.Name == "jobtitle")?.Value ?? string.Empty, ChildrenUnderSixteenLivingAwayFromHome = CreateOtherPersonList( ConfigurationModels.FirstApplicantUnderSixteenConfigurationModel, integrationFormFields, 4), ChildrenOverSixteenLivingAwayFromHome = CreateOtherPersonList( ConfigurationModels.FirstApplicantOverSixteenConfigurationModel, integrationFormFields, 4), NameOfGp = integrationFormFields.FirstOrDefault(_ => _.Name == "nameofgp")?.Value, NameOfGpPractice = integrationFormFields.FirstOrDefault(_ => _.Name == "nameofpractice")?.Value, GpPhoneNumber = integrationFormFields.FirstOrDefault(_ => _.Name == "gpphonenumber")?.Value, GpAddress = AddressMapper.MapToFosteringAddress(integrationFormFields, "addressofpractice", "placerefofpractice", "postcodeofpractice").Validate(), HasContactWithCouncillor = ParseVerintBoolean(integrationFormFields .FirstOrDefault(_ => _.Name == "contactwithcouncillor1")?.Value), CouncillorRelationshipDetails = CreateCouncillorRelationshipDetailsList(integrationFormFields), AddressHistory = _caseHelper.CreateAddressHistoryList(integrationFormFields) }, WithPartner = integrationFormFields.FirstOrDefault(_ => _.Name == "withpartner")?.Value ?? "yes", PrimaryLanguage = integrationFormFields.FirstOrDefault(_ => _.Name == "primarylanguage")?.Value ?? string.Empty, OtherLanguages = integrationFormFields.FirstOrDefault(_ => _.Name == "otherlanguages")?.Value ?? string.Empty, TypesOfFostering = new List <string>(), ReasonsForFostering = integrationFormFields.FirstOrDefault(_ => _.Name == "reasonsforfosteringapplicant1")?.Value ?? string.Empty, OtherPeopleInYourHousehold = CreateOtherPersonList(ConfigurationModels.HouseholdConfigurationModel, integrationFormFields), PetsInformation = integrationFormFields.FirstOrDefault(_ => _.Name == "listofpetsandanimals")?.Value ?? string.Empty, EnableAdditionalInformationSection = string.Equals(response.ResponseContent.EnquirySubject, "Fostering", StringComparison.CurrentCultureIgnoreCase) && string.Equals(response.ResponseContent.EnquiryReason, "Fostering Application", StringComparison.CurrentCultureIgnoreCase) && string.Equals( response.ResponseContent.EnquiryType, "3. Application", StringComparison .CurrentCultureIgnoreCase), IsApplicationCompleted = String.Equals( response.ResponseContent.EnquiryType, "4. Application Complete", StringComparison.CurrentCultureIgnoreCase) }; fosteringCase.FamilyReference = ReferenceDetailsMapper.MapToReferenceDetails(integrationFormFields, "prffirstname", "prflastname", "prfrelation", "prfyears", "prfemail", "prfcontact", "prfaddress", "prfplaceref", "prfpostcode"); fosteringCase.FirstPersonalReference = ReferenceDetailsMapper.MapToReferenceDetails(integrationFormFields, "prf11firstname", "prf1lastname", "prf1relation", "prf1years", "prf1email", "prf1contact", "prf1address", "prf1placeref", "prf1postcode"); fosteringCase.SecondPersonalReference = ReferenceDetailsMapper.MapToReferenceDetails(integrationFormFields, "prf2firstname", "prf2lastname", "prf2relation", "prf2years", "prf2email", "prf2contact", "prf2address", "prf2placeref", "prf2postcode"); var anyOtherPeopleInYourHousehold = integrationFormFields.FirstOrDefault(_ => _.Name == "otherpeopleinyourhousehold")?.Value; if (!string.IsNullOrEmpty(anyOtherPeopleInYourHousehold)) { fosteringCase.AnyOtherPeopleInYourHousehold = anyOtherPeopleInYourHousehold.ToLower() == "yes"; } var HomeVisitDate = integrationFormFields.FirstOrDefault(_ => _.Name == "dateofthehomevisit")?.Value; var HomeVisitTime = integrationFormFields.FirstOrDefault(_ => _.Name == "timeofhomevisit")?.Value; if (!string.IsNullOrEmpty(HomeVisitDate + HomeVisitTime)) { fosteringCase.HomeVisitDateTime = DateTime.Parse($"{HomeVisitDate} {HomeVisitTime}"); } var doYouHaveAnyPets = integrationFormFields.FirstOrDefault(_ => _.Name == "doyouhaveanypets")?.Value; if (!string.IsNullOrEmpty(doYouHaveAnyPets)) { fosteringCase.DoYouHaveAnyPets = doYouHaveAnyPets.ToLower() == "yes"; } var firstApplicantAnyChildrenUnderSixteen = integrationFormFields.FirstOrDefault(_ => _.Name == "haschildrenundersixteen1")?.Value; if (!string.IsNullOrEmpty(firstApplicantAnyChildrenUnderSixteen)) { fosteringCase.FirstApplicant.AnyChildrenUnderSixteen = firstApplicantAnyChildrenUnderSixteen.ToLower() == "yes"; } var firstApplicantAnyChildrenOverSixteen = integrationFormFields.FirstOrDefault(_ => _.Name == "haschildrenoversixteen1")?.Value; if (!string.IsNullOrEmpty(firstApplicantAnyChildrenOverSixteen)) { fosteringCase.FirstApplicant.AnyChildrenOverSixteen = firstApplicantAnyChildrenOverSixteen.ToLower() == "yes"; } var marriedOrInACivilPartnership = integrationFormFields.FirstOrDefault(_ => _.Name == "marriedorinacivilpartnership")?.Value; if (!string.IsNullOrEmpty(marriedOrInACivilPartnership)) { fosteringCase.MarriedOrInACivilPartnership = marriedOrInACivilPartnership.ToLower() == "yes"; } var marriageDate = integrationFormFields.FirstOrDefault(_ => _.Name == "dateofreg")?.Value; if (!string.IsNullOrEmpty(marriageDate)) { fosteringCase.DateOfMarriage = DateTime.Parse(marriageDate); } var movedInTogetherDate = integrationFormFields.FirstOrDefault(_ => _.Name == "datesetuphousehold")?.Value; if (!string.IsNullOrEmpty(movedInTogetherDate)) { fosteringCase.DateMovedInTogether = DateTime.Parse(movedInTogetherDate); } var hasAnotherNameApplicant1 = integrationFormFields.FirstOrDefault(_ => _.Name == "hasanothername")?.Value; if (!string.IsNullOrEmpty(hasAnotherNameApplicant1)) { fosteringCase.FirstApplicant.EverBeenKnownByAnotherName = hasAnotherNameApplicant1.ToLower() == "true"; } if (!string.IsNullOrEmpty(integrationFormFields.FirstOrDefault(_ => _.Name == "employed")?.Value)) { fosteringCase.FirstApplicant.AreYouEmployed = integrationFormFields.FirstOrDefault(_ => _.Name == "employed")?.Value.ToLower() == "yes"; } if (!string.IsNullOrEmpty(integrationFormFields.FirstOrDefault(_ => _.Name == "hoursofwork")?.Value)) { fosteringCase.FirstApplicant.CurrentHoursOfWork = (EHoursOfWork)Enum.Parse(typeof(EHoursOfWork), integrationFormFields.FirstOrDefault(_ => _.Name == "hoursofwork")?.Value, true); } var hasPreviouslyApplied = integrationFormFields.FirstOrDefault(_ => _.Name == "previouslyappliedapplicant1")?.Value; if (!string.IsNullOrWhiteSpace(hasPreviouslyApplied)) { fosteringCase.FirstApplicant.PreviouslyApplied = hasPreviouslyApplied.ToLower() == "yes"; } if (integrationFormFields.Exists(_ => _.Name == "fiichildrenwithdisability")) { fosteringCase.TypesOfFostering.Add("childrenWithDisability"); } if (integrationFormFields.Exists(_ => _.Name == "fiirespite")) { fosteringCase.TypesOfFostering.Add("respite"); } if (integrationFormFields.Exists(_ => _.Name == "fiishortterm")) { fosteringCase.TypesOfFostering.Add("shortTerm"); } if (integrationFormFields.Exists(_ => _.Name == "fiilongterm")) { fosteringCase.TypesOfFostering.Add("longTerm"); } if (integrationFormFields.Exists(_ => _.Name == "fiiunsure")) { fosteringCase.TypesOfFostering.Add("unsure"); } if (integrationFormFields.Exists(_ => _.Name == "fiishortbreaks")) { fosteringCase.TypesOfFostering.Add("shortBreaks"); } if (integrationFormFields.Exists(_ => _.Name == "registereddisabled")) { fosteringCase.FirstApplicant.RegisteredDisabled = integrationFormFields.FirstOrDefault(_ => _.Name == "registereddisabled")?.Value.ToLower() == "yes"; } if (integrationFormFields.Exists(_ => _.Name == "practitioner")) { fosteringCase.FirstApplicant.Practitioner = integrationFormFields.FirstOrDefault(_ => _.Name == "practitioner")?.Value.ToLower() == "yes"; } if (hasSecondApplicant) { fosteringCase.SecondApplicant = new FosteringApplicant { FirstName = integrationFormFields.First(_ => _.Name == "firstname_2").Value, LastName = integrationFormFields.First(_ => _.Name == "surname_2").Value, AnotherName = integrationFormFields.FirstOrDefault(_ => _.Name == "previousname_2")?.Value ?? string.Empty, Nationality = integrationFormFields.FirstOrDefault(_ => _.Name == "nationality2")?.Value ?? string.Empty, Ethnicity = integrationFormFields.FirstOrDefault(_ => _.Name == "ethnicity2")?.Value ?? string.Empty, Gender = integrationFormFields.FirstOrDefault(_ => _.Name == "gender2")?.Value ?? string.Empty, Religion = integrationFormFields.FirstOrDefault(_ => _.Name == "religionorfaithgroup2")?.Value ?? string.Empty, PlaceOfBirth = integrationFormFields.FirstOrDefault(_ => _.Name == "placeofbirth_2")?.Value ?? string.Empty, CurrentEmployer = integrationFormFields.FirstOrDefault(_ => _.Name == "currentemployer2")?.Value ?? string.Empty, JobTitle = integrationFormFields.FirstOrDefault(_ => _.Name == "jobtitle2")?.Value ?? string.Empty, ChildrenUnderSixteenLivingAwayFromHome = CreateOtherPersonList(ConfigurationModels.SecondApplicantUnderSixteenConfigurationModel, integrationFormFields, 4), ChildrenOverSixteenLivingAwayFromHome = CreateOtherPersonList(ConfigurationModels.SecondApplicantOverSixteenConfigurationModel, integrationFormFields, 4), NameOfGp = integrationFormFields.FirstOrDefault(_ => _.Name == "nameofgp2")?.Value, NameOfGpPractice = integrationFormFields.FirstOrDefault(_ => _.Name == "nameofpractice2")?.Value, GpPhoneNumber = integrationFormFields.FirstOrDefault(_ => _.Name == "gpphonenumber2")?.Value, GpAddress = AddressMapper.MapToFosteringAddress(integrationFormFields, "addressofpractice2", "placerefofpractice2", "postcodeofpractice2").Validate(), HasContactWithCouncillor = ParseVerintBoolean(integrationFormFields.FirstOrDefault(_ => _.Name == "contactwithcouncillor2")?.Value), CouncillorRelationshipDetails = CreateCouncillorRelationshipDetailsList(integrationFormFields, true), AddressHistory = _caseHelper.CreateAddressHistoryList(integrationFormFields, true) }; var hasAnotherNameApplicant2 = integrationFormFields.FirstOrDefault(_ => _.Name == "hasanothername2")?.Value; if (!string.IsNullOrEmpty(hasAnotherNameApplicant2)) { fosteringCase.SecondApplicant.EverBeenKnownByAnotherName = hasAnotherNameApplicant2.ToLower() == "true"; } if (!string.IsNullOrWhiteSpace(integrationFormFields.FirstOrDefault(_ => _.Name == "employed2")?.Value)) { fosteringCase.SecondApplicant.AreYouEmployed = integrationFormFields.FirstOrDefault(_ => _.Name == "employed2")?.Value.ToLower() == "yes"; } if (!string.IsNullOrEmpty(integrationFormFields.FirstOrDefault(_ => _.Name == "hoursofwork2")?.Value)) { fosteringCase.SecondApplicant.CurrentHoursOfWork = (EHoursOfWork)Enum.Parse(typeof(EHoursOfWork), integrationFormFields.FirstOrDefault(_ => _.Name == "hoursofwork2")?.Value, true); } var hasPreviouslyAppliedApplicant2 = integrationFormFields.FirstOrDefault(_ => _.Name == "previouslyappliedapplicant2")?.Value; if (!string.IsNullOrWhiteSpace(hasPreviouslyAppliedApplicant2)) { fosteringCase.SecondApplicant.PreviouslyApplied = hasPreviouslyAppliedApplicant2.ToLower() == "yes"; } var registereddisabled2 = integrationFormFields.FirstOrDefault(_ => _.Name == "registereddisabled2")?.Value; if (!string.IsNullOrEmpty(registereddisabled2)) { fosteringCase.SecondApplicant.RegisteredDisabled = registereddisabled2.ToLower() == "yes"; } var practitioner2 = integrationFormFields.FirstOrDefault(_ => _.Name == "practitioner2")?.Value; if (!string.IsNullOrEmpty(practitioner2)) { fosteringCase.SecondApplicant.Practitioner = practitioner2.ToLower() == "yes"; } var secondApplicantAnyChildrenUnderSixteen = integrationFormFields.FirstOrDefault(_ => _.Name == "haschildrenundersixteen2")?.Value; if (!string.IsNullOrEmpty(secondApplicantAnyChildrenUnderSixteen)) { fosteringCase.SecondApplicant.AnyChildrenUnderSixteen = secondApplicantAnyChildrenUnderSixteen.ToLower() == "yes"; } var secondApplicantAnyChildrenOverSixteen = integrationFormFields.FirstOrDefault(_ => _.Name == "haschildrenoversixteen2")?.Value; if (!string.IsNullOrEmpty(secondApplicantAnyChildrenOverSixteen)) { fosteringCase.SecondApplicant.AnyChildrenOverSixteen = secondApplicantAnyChildrenOverSixteen.ToLower() == "yes"; } } return(fosteringCase); }