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"));
 }