public void Given_Amend_Application_ToPsvString_concatenates_data_into_pipe_separated_string() { const string expected = "DW5T8V|ABC123|Bob Martin|[email protected]|3000.00|Michelle Brown|[email protected]|2020-08-01T12:20:21|Samar Ali|[email protected]|2020-08-03T15:20:21|Daniel Davies|[email protected]|2020-09-30T01:23:45|apps=2|Vendor Name"; var sut = new ApplicationInformationForExternalVerificationModel { HashedLegalEntityId = "DW5T8V", IncentiveAmount = 3000, SubmittedByFullName = "Bob Martin", SubmittedByEmailAddress = "*****@*****.**", NumberOfApprenticeships = 2, VendorId = "ABC123", IsNew = false, LegalEntityName = "Vendor Name", SignedAgreements = new List <SignedAgreementModel> { new SignedAgreementModel { SignedByName = "Michelle Brown", SignedByEmail = "*****@*****.**", SignedDate = DateTime.Parse("01-08-2020 12:20:21", new CultureInfo("en-GB")) }, new SignedAgreementModel { SignedByName = "Samar Ali", SignedByEmail = "*****@*****.**", SignedDate = DateTime.Parse("03-08-2020 15:20:21", new CultureInfo("en-GB")) }, new SignedAgreementModel { SignedByName = "Daniel Davies", SignedByEmail = "*****@*****.**", SignedDate = DateTime.Parse("30-09-2020 01:23:45", new CultureInfo("en-GB")) }, } }; var actual = sut.ToPsvString(); actual.Should().Be(expected); }
public async Task <string> BuildAchieveServiceUrl(string hashedAccountId, string hashedAccountLegalEntityId, Guid applicationId, string returnUrl, bool amendBankDetails = false) { var accountId = _hashingService.DecodeValue(hashedAccountId); var bankingDetails = await _bankingDetailsService.GetBankingDetails(accountId, applicationId, hashedAccountId); if (bankingDetails == null) { throw new ArgumentException("Requested banking details records cannot be found"); } if (bankingDetails.SignedAgreements == null || !bankingDetails.SignedAgreements.Any()) { throw new ArgumentException("Requested application records are invalid"); } var legalEntity = await _legalEntitiesService.Get(hashedAccountId, hashedAccountLegalEntityId); var data = new ApplicationInformationForExternalVerificationModel { ApplicationId = applicationId, LegalEntityName = legalEntity.Name, IsNew = !amendBankDetails, HashedAccountId = hashedAccountId, HashedLegalEntityId = legalEntity.HashedLegalEntityId, IncentiveAmount = bankingDetails.ApplicationValue, VendorId = bankingDetails.VendorCode, SubmittedByFullName = bankingDetails.SubmittedByName, SubmittedByEmailAddress = bankingDetails.SubmittedByEmail, NumberOfApprenticeships = bankingDetails.NumberOfApprenticeships, SignedAgreements = bankingDetails.SignedAgreements?.Select(x => new SignedAgreementModel { SignedByEmail = x.SignedByEmail, SignedByName = x.SignedByName, SignedDate = x.SignedDate }) }; if (amendBankDetails) { data.VendorId = legalEntity.VrfVendorId; data.LegalEntityName = legalEntity.Name; } var encryptedData = _dataEncryptionService.Encrypt(data.ToPsvString()).ToUrlString(); var journeyType = "new"; if (amendBankDetails) { journeyType = "amend"; } return($"{_configuration.AchieveServiceBaseUrl}?journey={journeyType}&return={returnUrl.ToUrlString()}&data={encryptedData}"); }