public DirectDebitPlanOverviewVm Build(PaymentOptionsVm accountVm, DirectDebitDetailsVm directDebitDetailsVm) { // Should never be null, as validated with Fluent Debug.Assert(accountVm.DirectDebitAmount != null, "accountVm.DirectDebitPayment.Amount != null"); int totalMonths = _directDebitTermCalculator.CalculateTermInMonths( accountVm.FullPaymentAmountDerived, accountVm.DirectDebitAmount.Value, accountVm.DirectDebitSelectedFrequency); int years = totalMonths / 12; int months = totalMonths % 12; DirectDebitPlanOverviewVm directDebitPlanOverview = new DirectDebitPlanOverviewVm() { SortCode = directDebitDetailsVm.SortCode, AccountNumber = directDebitDetailsVm.AccountNumber, AccountHoldersName = directDebitDetailsVm.AccountHoldersName, ClientName = accountVm.ClientName, LowellReference = accountVm.LowellReference, PaymentAmount = accountVm.DirectDebitAmount.Value, PaymentType = AccountMessages.DirectDebit, StartDate = accountVm.DirectDebitSelectedStartDate, Frequency = _directDebitFrequencyTranslator.TranslateClientScriptCompatibleValueToDescription( accountVm.DirectDebitSelectedFrequency), GuaranteeRead = directDebitDetailsVm.AcceptDirectDebitGuarantee, PlanTotal = accountVm.DiscountedBalancePreviouslyAccepted ? accountVm.DiscountedBalance : accountVm.OutstandingBalance, DiscountAccepted = accountVm.DiscountAccepted, DiscountAmount = accountVm.DiscountAmount, EmailAddress = accountVm.DirectDebitEmailAddress, DiscountAvailable = directDebitDetailsVm.DiscountAvailable, PaymentFrequency = directDebitDetailsVm.PaymentFrequency, TermYears = years, TermMonths = months, SelectedPlanSetupOption = directDebitDetailsVm.SelectedPlanSetupOption }; return(directDebitPlanOverview); }
public void CalculateTermInMonthsTest_Monthly() { Assert.AreEqual(10, _directDebitTermCalculator.CalculateTermInMonths(100, 10, "Monthly")); }