// collecting needed parameters and calling DLL-method to receive and return the table
        private DataTable GetLoanParamsAndReceiveTable()
        {
            bool   isPaymentSchemeAnnuity = (cbxScheme.SelectedItem.ToString() == "Annuity");
            double loanSize = GetDoubleFromString(txtLoanAmount.Text, "Invalid loan amount value.");

            CheckNoZero(loanSize, "Loan amount must be greater than zero");
            double interestRatePerYear               = GetDoubleFromString(mtbxInterestRate.Text, "Invalid interest rate value.");
            double downPayment                       = GetDoubleFromString(txtDownPayment.Text, "Invalid down payment value.");
            bool   isDownPaymentPct                  = rbtnPercentDownPayment.Checked;
            double oneTimeCommission                 = GetDoubleFromString(txtOneTimeCommission.Text, "Invalid one-time commission value.");
            bool   isOneTimeCommissionPct            = rbtnPercentOneTimeCommission.Checked;
            double monthlyCommissionFixed            = GetDoubleFromString(txtMonthlyCommissionFixed.Text, "Invalid fixed monthly commission value.");
            bool   isMonthlyCommissionFixedPctOfLoan = rbtnPercentMonthlyCommissionFixed.Checked;
            double monthlyCommissionInPctOfBalance   = GetDoubleFromString(mtbxMonthlyCommissionVarying.Text, "Invalid varying monthly commission value.");
            int    term = GetIntFromString(mtbxTerm.Text, "Invalid term value.");

            CheckNoZero(term, "Term must be greater than zero");
            if (rbtnYears.Checked)
            {
                term *= 12;
            }

            DataTable table = LoanAndDeposit.GetLoanDataTable(isPaymentSchemeAnnuity, loanSize, interestRatePerYear, downPayment, isDownPaymentPct, oneTimeCommission, isOneTimeCommissionPct, monthlyCommissionFixed, isMonthlyCommissionFixedPctOfLoan, monthlyCommissionInPctOfBalance, term);

            return(table);
        }
        private DataTable GetDepositParamsAndReceiveTable()
        {
            double depositAmount = GetDoubleFromString(txtDepositAmount.Text, "Invalid deposit amount value.");

            CheckNoZero(depositAmount, "Deposit amount must be greater than zero");
            int termInMonths = GetIntFromString(mtbxDepositTerm.Text, "Invalid term value.");

            CheckNoZero(termInMonths, "Term must be greater than zero");
            if (rbtnYearsDeposit.Checked)
            {
                termInMonths *= 12;
            }
            double annualInterestPct = GetDoubleFromString(txtAnnualInterestRate.Text, "Invalid interest rate value.");
            int    capitalizationPeriodInMonths;

            // turn capitalization period in months number
            switch (cbxCapitalization.SelectedItem.ToString())
            {
            case "None":
                capitalizationPeriodInMonths = 0;
                break;

            case "Monthly":
                capitalizationPeriodInMonths = 1;
                break;

            case "Quarterly":
                capitalizationPeriodInMonths = 3;
                break;

            case "Half yearly":
                capitalizationPeriodInMonths = 6;
                break;

            case "Yearly":
                capitalizationPeriodInMonths = 12;
                break;

            default:
                capitalizationPeriodInMonths = 0;
                break;
            }
            int replenishmentAmount = GetIntFromString(txtReplenishment.Text, "Invalid replenishment value.");
            int replenishmentPeriodInMonths;

            // turn replenishment period in months number
            switch (cbxReplenishmentPeriod.SelectedItem.ToString())
            {
            case "None":
                replenishmentPeriodInMonths = 0;
                break;

            case "Month":
                replenishmentPeriodInMonths = 1;
                break;

            case "Quarter":
                replenishmentPeriodInMonths = 3;
                break;

            case "Half year":
                replenishmentPeriodInMonths = 6;
                break;

            case "Year":
                replenishmentPeriodInMonths = 12;
                break;

            default:
                replenishmentPeriodInMonths = 0;
                break;
            }
            double    taxes = GetDoubleFromString(txtTaxes.Text, "Invalid taxes value.\nSet zero if none.");
            DataTable table = LoanAndDeposit.GetDepositDataTable(depositAmount, annualInterestPct, termInMonths,
                                                                 capitalizationPeriodInMonths, replenishmentAmount, replenishmentPeriodInMonths, taxes);

            return(table);
        }