public async Task <IActionResult> Body(EditDetailsCompositeViewModel viewModel, IFormCollection formCollection) { var customer = await GetCustomerDetails(); var additionalData = GetEditDetailsAdditionalData(formCollection); viewModel.Identity.MarketingPreferences = new MarketingPreferences { OptOutOfMarketing = !additionalData.MarketingOptIn, OptOutOfMarketResearch = !additionalData.MarketResearchOptIn }; var customerDetails = await _dssReader.GetCustomerData(customer.CustomerId.ToString()); if (IsValid(ModelState, viewModel)) { try { var dateOfBirthDay = viewModel.Identity.PersonalDetails.DateOfBirthDay; var dateOfBirthMonth = viewModel.Identity.PersonalDetails.DateOfBirthMonth; var dateOfBirthYear = viewModel.Identity.PersonalDetails.DateOfBirthYear; CultureInfo enGb = new CultureInfo("en-GB"); string dob = string.Empty; if (!string.IsNullOrEmpty(dateOfBirthDay) && !string.IsNullOrEmpty(dateOfBirthMonth) && !string.IsNullOrEmpty(dateOfBirthYear)) { dob = $"{dateOfBirthDay.PadLeft(2, '0')}/{dateOfBirthMonth.PadLeft(2, '0')}/{dateOfBirthYear.PadLeft(4, '0')}"; } if (DateTime.TryParseExact(dob, "dd/MM/yyyy", enGb, DateTimeStyles.AdjustToUniversal, out var dateOfBirth)) { viewModel.Identity.PersonalDetails.DateOfBirth = dateOfBirth; } else { viewModel.Identity.PersonalDetails.DateOfBirth = null; } var updatedDetails = GetUpdatedCustomerDetails(customerDetails, viewModel.Identity); await _dssWriter.UpdateCustomerData(updatedDetails); updatedDetails.Contact.LastModifiedDate = DateTime.UtcNow.AddMinutes(-1); await _dssWriter.UpsertCustomerContactData(updatedDetails); return(new RedirectResult("/your-account/your-details", false)); } catch (EmailAddressAlreadyExistsException) { ModelState.AddModelError("Identity.ContactDetails.ContactEmail", "Email address already in use"); } } ViewModel.Identity = viewModel.Identity; return(await base.Body()); }
public async Task IfCustomerIsNull_ReturnNull() { _dssService = new DssService(Options.Create(new DssSettings() { ApiKey = "9238dfjsjdsidfs83fds", CustomerApiUrl = "https://this.is.anApi.org.uk", AccountsTouchpointId = "9000000001", CustomerApiVersion = "V1" }), _logger); var result = await _dssService.UpdateCustomerData(null); result.Should().BeNull(); }
public async Task IfApiCallIsSuccessful_ReturnCreatedCustomerData() { var result = await _dssService.UpdateCustomerData(new Customer()); result.Should().NotBeNull(); }
public async Task <IActionResult> Body(EditDetailsCompositeViewModel viewModel, IFormCollection formCollection) { var customer = await GetCustomerDetails(); var additionalData = GetEditDetailsAdditionalData(formCollection); viewModel.Identity.MarketingPreferences = new MarketingPreferences { OptOutOfMarketing = !additionalData.MarketingOptIn, OptOutOfMarketResearch = !additionalData.MarketResearchOptIn }; if (!string.IsNullOrWhiteSpace(additionalData.FindAddress)) { ModelState.Clear(); await FindAddress(viewModel); } else if (!string.IsNullOrWhiteSpace(additionalData.SelectAddress)) { ModelState.Clear(); await GetSelectAddress(viewModel, additionalData); } else if (!string.IsNullOrWhiteSpace(additionalData.SaveDetails)) { var customerDetails = await _dssReader.GetCustomerData(customer.CustomerId.ToString()); if (IsValid(ModelState, viewModel)) { try { string dateOfBirthDay = viewModel.Identity.PersonalDetails.DateOfBirthDay; string dateOfBirthMonth = viewModel.Identity.PersonalDetails.DateOfBirthMonth; string dateOfBirthYear = viewModel.Identity.PersonalDetails.DateOfBirthYear; DateTime dateOfBirth = default(DateTime); CultureInfo enGb = new CultureInfo("en-GB"); string dob = string.Empty; if (!string.IsNullOrEmpty(dateOfBirthDay) && !string.IsNullOrEmpty(dateOfBirthMonth) && !string.IsNullOrEmpty(dateOfBirthYear)) { dob = string.Format("{0}/{1}/{2}", dateOfBirthDay.PadLeft(2, '0'), dateOfBirthMonth.PadLeft(2, '0'), dateOfBirthYear.PadLeft(4, '0')); } if (DateTime.TryParseExact(dob, "dd/MM/yyyy", enGb, DateTimeStyles.AdjustToUniversal, out dateOfBirth)) { viewModel.Identity.PersonalDetails.DateOfBirth = dateOfBirth; } else { viewModel.Identity.PersonalDetails.DateOfBirth = null; } var updatedDetails = GetUpdatedCustomerDetails(customerDetails, viewModel.Identity); await _dssWriter.UpdateCustomerData(updatedDetails); var addressToUpdate = string.IsNullOrEmpty(viewModel.Identity.PersonalDetails.AddressId) ? updatedDetails.Addresses.FirstOrDefault(x => string.IsNullOrEmpty(x.AddressId)) : updatedDetails.Addresses.FirstOrDefault(x => x.AddressId == viewModel.Identity.PersonalDetails.AddressId); if (addressToUpdate != null) { //await _dssWriter.UpsertCustomerAddressData(addressToUpdate, updatedDetails.CustomerId); } updatedDetails.Contact.LastModifiedDate = DateTime.UtcNow.AddMinutes(-1); await _dssWriter.UpsertCustomerContactData(updatedDetails); return(new RedirectResult("/your-account/your-details", false)); } catch (EmailAddressAlreadyExistsException ex) { ModelState.AddModelError("Identity.ContactDetails.ContactEmail", "Email address already in use"); } } } ViewModel.Items = viewModel.Items; ViewModel.Identity = viewModel.Identity; return(await base.Body()); }