/// <summary>
        /// Расчитывать выплаты.
        /// X = (S*p) / (1-(1+p)^(1-m))
        /// X - размер аннуитетного платежа;
        /// S - сумма кредита;
        /// p - 1/12 годовой процентной ставки, выраженная в сотых долях;
        /// ^ - означает в степени;
        /// m - срок кредита, в месяцах.
        /// </summary>
        /// <param name="amount">Объем долга.</param>
        /// <param name="interestRate">Процентная ставка.</param>
        /// <param name="loanTerm">Срок кредита(в месяцах).</param>
        /// <returns>Выплаты по кредиту.</returns>
        public IEnumerable<Payment> Calculate(
            Amount amount,
            InterestRate interestRate,
            LoanTerm loanTerm)
        {
            if (amount == null || interestRate == null || loanTerm == null)
            {
                throw new ArgumentException("Bad params for calculation");
            }

            var payments = new List<Payment>();

            var totalBalanceOwed = amount.Value;

            int number = 0;
            while (totalBalanceOwed > 0)
            {
                var loanPayment = totalBalanceOwed / (loanTerm.Value - number);
                var percentPayment = totalBalanceOwed * interestRate.Value / (100 * 12);
                totalBalanceOwed -= loanPayment;

                var payment = new Payment(number, percentPayment, loanPayment, totalBalanceOwed);
                payments.Add(payment);

                number++;
            }

            return payments;
        }
 /// <summary>
 /// Конструктор класса.
 /// </summary>
 /// <param name="payment">Данные об оплате.</param>
 public PaymentViewModel(Payment payment)
 {
     this.payment = payment;
 }