コード例 #1
0
        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);
        }
コード例 #2
0
        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}");
        }