/// <summary>
 /// 获取数据集合
 /// </summary>
 /// <param name="skipCount">跳过记录数</param>
 /// <param name="getCount">获取记录数</param>
 /// <returns></returns>
 public ReturnValue <valueType[]> Get(int skipCount, int getCount)
 {
     if (getCount > 0 && skipCount >= 0)
     {
         return(ReturnArray <valueType> .Get(ClientDataStructure.Client.QueryAsynchronous(GetNode(skipCount, getCount))));
     }
     return(new ReturnValue <valueType[]> {
         Type = ReturnType.SearchTreeDictionaryIndexOutOfRange
     });
 }
 /// <summary>
 /// 获取逆序数据集合
 /// </summary>
 /// <param name="skipCount">跳过记录数</param>
 /// <param name="getCount">获取记录数</param>
 /// <returns></returns>
 public async Task <ReturnValue <valueType[]> > GetDescTask(int skipCount, int getCount)
 {
     if (getCount > 0 && skipCount >= 0)
     {
         return(ReturnArray <valueType> .Get(await ClientDataStructure.Client.QueryAsynchronousAwaiter(GetNode(skipCount, -getCount))));
     }
     return(new ReturnValue <valueType[]> {
         Type = ReturnType.SearchTreeDictionaryIndexOutOfRange
     });
 }
        /// <summary>
        /// 获取逆序分页数据集合
        /// </summary>
        /// <param name="page">分页号,从 1 开始</param>
        /// <param name="pageSize">分页记录数</param>
        /// <returns></returns>
        public async Task <ReturnValue <valueType[]> > GetPageDescTask(int page, int pageSize)
        {
            long endIndex = (long)page * (long)pageSize;

            if (page > 0 && pageSize > 0 && (ulong)endIndex < (ulong)(uint)int.MaxValue)
            {
                return(ReturnArray <valueType> .Get(await ClientDataStructure.Client.QueryAsynchronousAwaiter(GetNode((int)endIndex - pageSize, -pageSize))));
            }
            return(new ReturnValue <valueType[]> {
                Type = ReturnType.SearchTreeDictionaryIndexOutOfRange
            });
        }
        /// <summary>
        /// 获取分页数据集合
        /// </summary>
        /// <param name="page">分页号,从 1 开始</param>
        /// <param name="pageSize">分页记录数</param>
        /// <returns></returns>
        public ReturnValue <valueType[]> GetPage(int page, int pageSize)
        {
            long endIndex = (long)page * (long)pageSize;

            if (page > 0 && pageSize > 0 && (ulong)endIndex < (ulong)(uint)int.MaxValue)
            {
                return(ReturnArray <valueType> .Get(Client.QueryAsynchronous(GetNode((int)endIndex - pageSize, pageSize))));
            }
            return(new ReturnValue <valueType[]> {
                Type = ReturnType.SearchTreeDictionaryIndexOutOfRange
            });
        }
 public ReturnValue <valueType[]> Query()
 {
     return(ReturnArray <valueType> .Get(ShortPath.Client.QueryAsynchronous(this)));
 }
Exemplo n.º 6
0
        private void GetAmortizationSchedule(string debtDesc, double balance, double annualInterest, double monthlyRepayment)
        {
            double initBal         = balance;
            double monthlyInterest = Math.Pow((1 + (annualInterest / 100)), ((double)1 / 12)) - 1;
            double additional      = otherMonthlyRepayments * ((double)balance / totalBalance);
            double totalInterest   = 0.0;
            double repayment       = 0;
            var    dateObj         = DateTime.Now;
            var    i = 0;

            if (debtDesc == "Credit Card")
            {
                creditCardData = new List <ReturnArray>();
            }
            else if (debtDesc == "Personal Loans")
            {
                personalLoanData = new List <ReturnArray>();
            }
            else if (debtDesc == "Car Finances")
            {
                carFinanceData = new List <ReturnArray>();
            }
            else if (debtDesc == "Bonds")
            {
                bondsData = new List <ReturnArray>();
            }

            while (balance > 0)
            {
                var      date     = dateObj;
                DateTime date_fmt = date.Date;
                balance = new[] { 0, balance - repayment }.Max();

                double interest = balance * monthlyInterest;
                repayment = new[] { balance + interest, monthlyRepayment + additional }.Min();

                var returnArrayData = new ReturnArray
                {
                    date          = date.ToShortDateString(),
                    date_fmt      = date.ToShortDateString(),
                    balance       = balance,
                    balance_fmt   = balance,
                    interest      = interest,
                    interest_fmt  = interest,
                    repayment     = repayment,
                    repayment_fmt = repayment,
                };

                switch (debtDesc)
                {
                case "Credit Card":
                    creditCardData.Add(returnArrayData);
                    break;

                case "Personal Loans":
                    personalLoanData.Add(returnArrayData);
                    break;

                case "Car Finances":
                    carFinanceData.Add(returnArrayData);
                    break;

                case "Bonds":
                    bondsData.Add(returnArrayData);
                    break;
                }

                dateObj        = dateObj.AddMonths(1);
                totalInterest += interest;
                i++;
            }
            var debtSummaryData = new DebtSummary
            {
                debtDesc                = debtDesc,
                monthlyInterest         = monthlyInterest,
                outstandingAmount       = initBal,
                outstandingAmount_fmt   = initBal,
                remainingTerms          = i,
                adjustedTerms           = "_ months",
                totalRepayment          = initBal + totalInterest,
                totalRepayment_fmt      = initBal + totalInterest,
                adjustedTotalRepayments = "",
                interestSavings         = ""
            };

            debtSummary.Add(debtSummaryData);
        }
Exemplo n.º 7
0
        public ActionResult GetDebtCalculationsData(DebtData debt)
        {
            hasCreditCard              = debt.hasCreditCard;
            settleCreditCardMonthly    = debt.settleCreditCardMonthly;
            creditCardInterest         = debt.creditCardInterest;
            outstandingCreditCard      = debt.outstandingCreditCard;
            monthlyCreditCardRepayment = debt.monthlyCreditCardRepayment;

            hasPersonalLoan      = debt.hasPersonalLoan;
            settleLoanMonthly    = debt.settleLoanMonthly;
            loanInterestRate     = debt.loanInterestRate;
            outstandingLoan      = debt.outstandingLoan;
            monthlyLoanRepayment = debt.monthlyLoanRepayment;

            isCarFinanced              = debt.isCarFinanced;
            settleCarFinanceMonthly    = debt.settleCarFinanceMonthly;
            carFinanceInterest         = debt.carFinanceInterest;
            outstandingCarFinance      = debt.outstandingCarFinance;
            monthlyCarFinanceRepayment = debt.monthlyCarFinanceRepayment;

            hasBond                = debt.hasBond;
            bondPaymentFixed       = debt.bondPaymentFixed;
            bondInterest           = debt.bondInterest;
            outstandingBond        = debt.outstandingBond;
            monthlyBondRepayment   = debt.monthlyBondRepayment;
            otherMonthlyRepayments = debt.otherMonthlyRepayments;

            totalBalance = outstandingCreditCard + outstandingLoan + outstandingCarFinance + outstandingBond;

            if (hasCreditCard == "yes")
            {
                GetAmortizationSchedule("Credit Card", outstandingCreditCard, creditCardInterest, monthlyCreditCardRepayment);
            }

            if (hasPersonalLoan == "yes")
            {
                GetAmortizationSchedule("Personal Loans", outstandingLoan, loanInterestRate, monthlyLoanRepayment);
            }

            if (isCarFinanced == "yes")
            {
                GetAmortizationSchedule("Car Finances", outstandingCarFinance, carFinanceInterest, monthlyCarFinanceRepayment);
            }

            if (hasBond == "yes")
            {
                GetAmortizationSchedule("Bonds", outstandingBond, bondInterest, monthlyBondRepayment);
            }

            List <List <ReturnArray> > arrayList = new List <List <ReturnArray> >()
            {
                creditCardData, personalLoanData, carFinanceData, bondsData
            };

            List <string> dateArr = new List <string>();

            bool emptyList = false;

            for (var j = 0; j < arrayList.Count; j++)
            {
                if (arrayList.ElementAt(j) != null)
                {
                    emptyList = false;
                    break;
                }
                emptyList = true;
            }

            if (emptyList == false)
            {
                var largestArr = arrayList.ElementAt(0); //Assumptions that the array selected was creditCard, may break if reversed


                for (var i = 0; i < arrayList.Count(); i++)
                {
                    if (arrayList.ElementAt(i) != null)
                    {
                        largestArr = arrayList.ElementAt(i);
                    }
                    else
                    {
                        var returnArrayData = new ReturnArray
                        {
                            date          = DateTime.Now.ToString(),
                            date_fmt      = DateTime.Now.ToShortDateString(),
                            balance       = 0,
                            balance_fmt   = 0,
                            interest      = 0,
                            interest_fmt  = 0,
                            repayment     = 0,
                            repayment_fmt = 0,
                        };
                        if (i == 0)
                        {
                            creditCardData = new List <ReturnArray>();
                            creditCardData.Add(returnArrayData);
                        }
                        if (i == 1)
                        {
                            personalLoanData = new List <ReturnArray>();
                            personalLoanData.Add(returnArrayData);
                        }
                        if (i == 2)
                        {
                            carFinanceData = new List <ReturnArray>();
                            carFinanceData.Add(returnArrayData);
                        }
                        if (i == 3)
                        {
                            bondsData = new List <ReturnArray>();
                            bondsData.Add(returnArrayData);
                        }
                    }
                }

                foreach (var obj in largestArr)
                {
                    dateArr.Add(obj.date_fmt);
                }
            }
            else
            {
                creditCardData   = new List <ReturnArray>();
                personalLoanData = new List <ReturnArray>();
                carFinanceData   = new List <ReturnArray>();
                bondsData        = new List <ReturnArray>();
                var returnArrayData = new ReturnArray
                {
                    date          = DateTime.Now.ToShortDateString(),
                    date_fmt      = DateTime.Now.ToShortDateString(),
                    balance       = 0,
                    balance_fmt   = 0,
                    interest      = 0,
                    interest_fmt  = 0,
                    repayment     = 0,
                    repayment_fmt = 0,
                };
                creditCardData.Add(returnArrayData);
                personalLoanData.Add(returnArrayData);
                carFinanceData.Add(returnArrayData);
                bondsData.Add(returnArrayData);
                for (var i = 1; i < arrayList.Count(); i++)
                {
                    dateArr.Add(DateTime.Now.ToString("dd/MM/yyyy"));
                }
            }

            var maxDuration    = 0;
            var totalBal       = 0.0;
            var totalRepayment = 0.0;

            for (var i = 0; i < debtSummary.Count(); i++)
            {
                if (debtSummary.ElementAt(i).remainingTerms > maxDuration)
                {
                    maxDuration = debtSummary.ElementAt(i).remainingTerms;
                }

                totalBal       += debtSummary.ElementAt(i).outstandingAmount;
                totalRepayment += debtSummary.ElementAt(i).totalRepayment;
            }

            var debtSummaryData = new DebtSummary
            {
                debtDesc                = "Total",
                monthlyInterest         = 0,
                outstandingAmount       = totalBal,
                outstandingAmount_fmt   = totalBal,
                remainingTerms          = maxDuration,
                adjustedTerms           = "_ months",
                totalRepayment          = totalRepayment,
                totalRepayment_fmt      = totalRepayment,
                adjustedTotalRepayments = "",
                interestSavings         = ""
            };

            debtSummary.Add(debtSummaryData);
            var data = new
            {
                debtSummary   = debtSummary,
                dateArr       = dateArr,
                creditCard    = creditCardData,
                personalLoans = personalLoanData,
                carFinance    = carFinanceData,
                bonds         = bondsData
            };

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 8
0
 /// <summary>
 /// 查询数据
 /// </summary>
 /// <returns></returns>
 public async Task <ReturnValue <valueType[]> > QueryTask()
 {
     return(ReturnArray <valueType> .Get(await ShortPath.Client.QueryAsynchronousAwaiter(this)));
 }
 /// <summary>
 /// 查询数据
 /// </summary>
 /// <returns></returns>
 public async Task <ReturnValue <valueType[]> > QueryTask()
 {
     return(ReturnArray <valueType> .Get(await Parent.ClientDataStructure.Client.QueryAsynchronousAwaiter(this)));
 }
 public ReturnValue <valueType[]> Query()
 {
     return(ReturnArray <valueType> .Get(Parent.ClientDataStructure.Client.QueryAsynchronous(this)));
 }