public ActionResult _LiabilityTable() { StockLiabilityListCreateViewModel liabilities = (StockLiabilityListCreateViewModel)HttpContext.Session["LIABILITIES"]; StockLiabilityListViewModel model = new StockLiabilityListViewModel(); if (liabilities == null) { liabilities = new StockLiabilityListCreateViewModel(); } foreach (var liability in liabilities.Liabilities) { StockLiabilityViewModel viewModel = new StockLiabilityViewModel(); viewModel.Id = liability.Id; viewModel.Source = liability.Source; viewModel.Value = liability.Value; viewModel.InterestRate = liability.InterestRate / 100; viewModel.InterestRatePerX = StockLiabilityQueries.Helper.GetInterestTypePerX(liability.InterestRatePerX); viewModel.StartDate = liability.StartDate; viewModel.EndDate = liability.EndDate; viewModel.InterestType = StockLiabilityQueries.Helper.GetInterestType(liability.InterestType); viewModel.PaymentPeriod = StockLiabilityQueries.Helper.CalculateTimePeriod(viewModel.StartDate.Value, viewModel.EndDate.Value); model.Liabilities.Add(viewModel); } return(PartialView(model)); }
public static StockTransactionViewModel CreateViewModel(StockTransactions transaction) { Entities entities = new Entities(); StockTransactionViewModel model = new StockTransactionViewModel(); model.NumberOfStock = transaction.NumberOfShares; model.SpotRice = transaction.SpotPrice; model.StockValue = transaction.Value; model.ExpectedDividend = transaction.ExpectedDividend / 100; var liabilities = entities.Liabilities.Where(x => x.TransactionId == transaction.Id); foreach (var liability in liabilities.Where(x => !x.DisabledDate.HasValue)) { StockLiabilityViewModel liabilityViewModel = StockLiabilityQueries.CreateViewModel(liability); model.Liabilities.Liabilities.Add(liabilityViewModel); } return(model); }
public ActionResult _Confirm() { DateTime current = DateTime.Now; StockCreateViewModel model = (StockCreateViewModel)HttpContext.Session["STOCK"]; StockViewModel viewModel = new StockViewModel(); viewModel.Name = model.Name; viewModel.Note = model.Note; viewModel.Transactions.Transactions.Add(new StockTransactionViewModel { NumberOfStock = model.NumberOfStock, SpotRice = model.SpotRice, StockValue = model.StockValue, ExpectedDividend = model.ExpectedDividend / 100, }); StockLiabilityListCreateViewModel liabilities = (StockLiabilityListCreateViewModel)HttpContext.Session["LIABILITIES"]; if (liabilities != null && liabilities.Liabilities.Count > 0) { foreach (var liability in liabilities.Liabilities) { StockLiabilityViewModel liabilityViewModel = new StockLiabilityViewModel(); liabilityViewModel.Source = liability.Source; liabilityViewModel.Value = liability.Value; liabilityViewModel.InterestType = StockLiabilityQueries.Helper.GetInterestType(liability.InterestType); liabilityViewModel.InterestRatePerX = StockLiabilityQueries.Helper.GetInterestTypePerX(liability.InterestRatePerX); liabilityViewModel.InterestRate = liability.InterestRate / 100; liabilityViewModel.StartDate = liability.StartDate.Value; liabilityViewModel.EndDate = liability.EndDate.Value; liabilityViewModel.PaymentPeriod = StockLiabilityQueries.Helper.CalculateTimePeriod(liabilityViewModel.StartDate.Value, liabilityViewModel.EndDate.Value); if (liabilityViewModel.StartDate <= current && current <= liabilityViewModel.EndDate) { int currentPeriod = Helper.CalculateTimePeriod(liabilityViewModel.StartDate.Value, DateTime.Now); double interestRate = liability.InterestRatePerX == (int)Constants.Constants.INTEREST_RATE_PER.MONTH ? liability.InterestRate.Value / 100 : liability.InterestRate.Value / 1200; liabilityViewModel.OriginalInterestPayment = liabilityViewModel.Value.Value * interestRate; //Fixed interest type if (liability.InterestType == (int)Constants.Constants.INTEREST_TYPE.FIXED) { liabilityViewModel.MonthlyOriginalPayment = liabilityViewModel.Value.Value / liabilityViewModel.PaymentPeriod; liabilityViewModel.MonthlyInterestPayment = liabilityViewModel.Value.Value * interestRate; liabilityViewModel.TotalMonthlyPayment = liabilityViewModel.MonthlyOriginalPayment + liabilityViewModel.MonthlyInterestPayment; liabilityViewModel.TotalPayment = RealEstateLiabilityQueries.Helper.CalculateAnnualPayment(liability); liabilityViewModel.RemainedValue = liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * (currentPeriod + 1); liabilityViewModel.Status = "Đang nợ"; liabilityViewModel.StatusCode = "label-success"; } //Reduced interest type else { liabilityViewModel.MonthlyOriginalPayment = liabilityViewModel.Value.Value / liabilityViewModel.PaymentPeriod; liabilityViewModel.RemainedValue = liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * (currentPeriod + 1); liabilityViewModel.MonthlyInterestPayment = (liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * currentPeriod) * interestRate; liabilityViewModel.TotalMonthlyPayment = liabilityViewModel.MonthlyOriginalPayment + liabilityViewModel.MonthlyInterestPayment; liabilityViewModel.TotalPayment = RealEstateLiabilityQueries.Helper.CalculateAnnualPayment(liability); liabilityViewModel.Status = "Đang nợ"; liabilityViewModel.StatusCode = "label-success"; } } else { liabilityViewModel.MonthlyOriginalPayment = 0; liabilityViewModel.MonthlyInterestPayment = 0; liabilityViewModel.TotalMonthlyPayment = 0; liabilityViewModel.TotalPayment = 0; liabilityViewModel.RemainedValue = 0; } viewModel.Transactions.Transactions.FirstOrDefault().Liabilities.Liabilities.Add(liabilityViewModel); } var lbts = viewModel.Transactions.Transactions.Select(x => x.Liabilities.Liabilities.Where(y => y.StartDate <= current && y.EndDate >= current)); viewModel.TotalLiabilityValue = lbts.Sum(x => x.Sum(y => y.Value.HasValue ? y.Value.Value : 0)); viewModel.TotalOriginalPayment = lbts.Sum(x => x.Sum(y => y.MonthlyOriginalPayment)); viewModel.TotalInterestPayment = lbts.Sum(x => x.Sum(y => y.MonthlyInterestPayment)); viewModel.TotalMonthlyPayment = lbts.Sum(x => x.Sum(y => y.TotalMonthlyPayment)); viewModel.TotalPayment = lbts.Sum(x => x.Sum(y => y.TotalPayment)); viewModel.TotalRemainedValue = lbts.Sum(x => x.Sum(y => y.RemainedValue)); viewModel.TotalInterestRate = viewModel.TotalLiabilityValue > 0 ? lbts.Sum(x => x.Sum(y => y.OriginalInterestPayment)) / viewModel.TotalLiabilityValue * 12 : 0; viewModel.RowSpan = viewModel.Transactions.Transactions.Any() ? viewModel.Transactions.Transactions.Count() + viewModel.Transactions.Transactions.Select(x => x.Liabilities.Liabilities).Count() + 4 : 4; if (viewModel.Transactions.Transactions.Any()) { viewModel.RowSpan = 4; bool flag = false; foreach (var transaction in viewModel.Transactions.Transactions) { if (transaction.Liabilities.Liabilities.Count() > 0) { if (flag == false) { flag = true; } viewModel.RowSpan += transaction.Liabilities.Liabilities.Count(); } } if (flag == true) { viewModel.RowSpan += 1; } } else { viewModel.RowSpan = 4; } } return(PartialView(viewModel)); }
public static StockLiabilityViewModel CreateViewModel(Liabilities liability) { DateTime current = DateTime.Now; StockLiabilityViewModel liabilityViewModel = new StockLiabilityViewModel(); liabilityViewModel.Id = liability.Id; liabilityViewModel.Source = liability.Name; liabilityViewModel.Value = liability.Value; liabilityViewModel.InterestType = Helper.GetInterestType(liability.InterestType.Value); liabilityViewModel.InterestRatePerX = Helper.GetInterestTypePerX(liability.InterestRatePerX); liabilityViewModel.InterestRate = liability.InterestRate / 100; liabilityViewModel.StartDate = liability.StartDate.Value; liabilityViewModel.EndDate = liability.EndDate.Value; liabilityViewModel.PaymentPeriod = Helper.CalculateTimePeriod(liabilityViewModel.StartDate.Value, liabilityViewModel.EndDate.Value); if (liabilityViewModel.StartDate <= current && current <= liabilityViewModel.EndDate) { int currentPeriod = Helper.CalculateTimePeriod(liabilityViewModel.StartDate.Value, DateTime.Now); double interestRate = liability.InterestRatePerX == (int)Constants.Constants.INTEREST_RATE_PER.MONTH ? liability.InterestRate / 100 : liability.InterestRate / 1200; liabilityViewModel.OriginalInterestPayment = liabilityViewModel.Value.Value * interestRate; //Fixed interest type if (liability.InterestType == (int)Constants.Constants.INTEREST_TYPE.FIXED) { liabilityViewModel.MonthlyOriginalPayment = liabilityViewModel.Value.Value / liabilityViewModel.PaymentPeriod; liabilityViewModel.MonthlyInterestPayment = liabilityViewModel.Value.Value * interestRate; liabilityViewModel.TotalMonthlyPayment = liabilityViewModel.MonthlyOriginalPayment + liabilityViewModel.MonthlyInterestPayment; liabilityViewModel.TotalPayment = RealEstateLiabilityQueries.Helper.CalculateAnnualPayment(liability); liabilityViewModel.RemainedValue = liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * (currentPeriod + 1); liabilityViewModel.Status = "Đang nợ"; liabilityViewModel.StatusCode = "label-success"; } //Reduced interest type else { liabilityViewModel.MonthlyOriginalPayment = liabilityViewModel.Value.Value / liabilityViewModel.PaymentPeriod; liabilityViewModel.RemainedValue = liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * (currentPeriod + 1); liabilityViewModel.MonthlyInterestPayment = (liabilityViewModel.Value.Value - liabilityViewModel.MonthlyOriginalPayment * currentPeriod) * interestRate; liabilityViewModel.TotalMonthlyPayment = liabilityViewModel.MonthlyOriginalPayment + liabilityViewModel.MonthlyInterestPayment; liabilityViewModel.TotalPayment = RealEstateLiabilityQueries.Helper.CalculateAnnualPayment(liability); liabilityViewModel.Status = "Đang nợ"; liabilityViewModel.StatusCode = "label-success"; } } else { liabilityViewModel.MonthlyOriginalPayment = 0; liabilityViewModel.MonthlyInterestPayment = 0; liabilityViewModel.TotalMonthlyPayment = 0; liabilityViewModel.TotalPayment = 0; liabilityViewModel.RemainedValue = 0; if (liabilityViewModel.EndDate < current) { liabilityViewModel.StatusCode = "label-warning"; liabilityViewModel.Status = "Đã trả hết nợ"; } else { liabilityViewModel.StatusCode = "label-danger"; liabilityViewModel.Status = "Chưa tới kì hạn"; } } return(liabilityViewModel); }