public ActionResult _LiabilityTable() { BusinessLiabilityListCreateViewModel liabilities = (BusinessLiabilityListCreateViewModel)HttpContext.Session["LIABILITIES"]; BusinessLiabilityListViewModel model = new BusinessLiabilityListViewModel(); if (liabilities == null) { liabilities = new BusinessLiabilityListCreateViewModel(); } foreach (var liability in liabilities.Liabilities) { BusinessLiabilityViewModel viewModel = new BusinessLiabilityViewModel(); viewModel.Id = liability.Id; viewModel.Source = liability.Source; viewModel.Value = liability.Value; viewModel.InterestRate = liability.InterestRate / 100; viewModel.InterestRatePerX = Helper.GetInterestTypePerX(liability.InterestRatePerX); viewModel.StartDate = liability.StartDate; viewModel.EndDate = liability.EndDate; viewModel.InterestType = BusinessLiabilityQueries.Helper.GetInterestType(liability.InterestType); viewModel.PaymentPeriod = Helper.CalculateTimePeriod(viewModel.StartDate.Value, viewModel.EndDate.Value); model.Liabilities.Add(viewModel); } return(PartialView(model)); }
public static BusinessSummaryListViewModel GetBusinessSummaryByUser(string username) { Entities entities = new Entities(); BusinessSummaryListViewModel result = new BusinessSummaryListViewModel(); DateTime current = DateTime.Now; var businesss = entities.Assets.Include("Incomes").Include("Liabilities").Where(x => x.Username.Equals(username) && x.AssetType == (int)Constants.Constants.ASSET_TYPE.BUSINESS && !x.DisabledDate.HasValue); foreach (var business in businesss) { BusinessSummaryViewModel businessViewModel = new BusinessSummaryViewModel(); businessViewModel.Name = business.AssetName; businessViewModel.Value = business.Value; if (business.Incomes1.Where(x => !x.DisabledDate.HasValue).Any()) { businessViewModel.Income = business.Incomes1.FirstOrDefault().Value; } else { businessViewModel.Income = 0; } businessViewModel.AnnualIncome = businessViewModel.Income * 12; businessViewModel.RentYield = businessViewModel.Value > 0 ? businessViewModel.AnnualIncome / businessViewModel.Value : 0; foreach (var liability in business.Liabilities.Where(x => !x.DisabledDate.HasValue)) { BusinessLiabilityViewModel liabilityViewModel = BusinessLiabilityQueries.CreateViewModel(liability); if (liabilityViewModel.StartDate <= current && liabilityViewModel.EndDate >= current) { businessViewModel.LiabilityValue += liabilityViewModel.Value.Value; businessViewModel.InterestRate += liabilityViewModel.InterestRate.Value; businessViewModel.OriginalInterestPayment += liabilityViewModel.OriginalInterestPayment; businessViewModel.MonthlyInterestPayment += liabilityViewModel.MonthlyInterestPayment; businessViewModel.MonthlyPayment += liabilityViewModel.TotalMonthlyPayment; businessViewModel.AnnualPayment += liabilityViewModel.TotalPayment; businessViewModel.RemainedValue += liabilityViewModel.RemainedValue; } } result.BusinessSummaries.Add(businessViewModel); } result.TotalIncome = result.BusinessSummaries.Sum(x => x.Income); result.TotalAnnualIncome = result.BusinessSummaries.Sum(x => x.AnnualIncome); result.TotalValue = result.BusinessSummaries.Sum(x => x.Value); result.TotalRentYield = result.TotalValue > 0 ? result.BusinessSummaries.Sum(x => x.AnnualIncome) / result.TotalValue : 0; result.TotalLiabilityValue = result.BusinessSummaries.Sum(x => x.LiabilityValue); result.TotalInterestRate = result.TotalLiabilityValue > 0 ? result.BusinessSummaries.Sum(x => x.OriginalInterestPayment) / result.TotalLiabilityValue * 12 : 0; result.TotalMonthlyPayment = result.BusinessSummaries.Sum(x => x.MonthlyPayment); result.TotalAnnualPayment = result.BusinessSummaries.Sum(x => x.AnnualPayment); result.TotalRemainedValue = result.BusinessSummaries.Sum(x => x.RemainedValue); return(result); }
public static BusinessListViewModel GetBusinessByUser(string username) { Entities entities = new Entities(); BusinessListViewModel result = new BusinessListViewModel(); DateTime current = DateTime.Now; var businesss = entities.Assets.Include("Incomes").Include("Liabilities").Where(x => x.Username.Equals(username) && x.AssetType == (int)Constants.Constants.ASSET_TYPE.BUSINESS && !x.DisabledDate.HasValue); foreach (var business in businesss) { BusinessViewModel businessViewModel = new BusinessViewModel(); businessViewModel.Id = business.Id; businessViewModel.Name = business.AssetName; businessViewModel.Value = business.Value; if (business.Incomes1.Where(x => !x.DisabledDate.HasValue).Any()) { businessViewModel.Income = business.Incomes1.FirstOrDefault().Value; } else { businessViewModel.Income = 0; } businessViewModel.AnnualIncome = businessViewModel.Income * 12; businessViewModel.RentYield = businessViewModel.Value > 0 ? businessViewModel.AnnualIncome / businessViewModel.Value : 0; foreach (var liability in business.Liabilities.Where(x => !x.DisabledDate.HasValue)) { BusinessLiabilityViewModel liabilityViewModel = BusinessLiabilityQueries.CreateViewModel(liability); businessViewModel.Liabilities.Add(liabilityViewModel); } var liabilities = businessViewModel.Liabilities.Where(x => x.StartDate <= current && x.EndDate >= current); businessViewModel.TotalLiabilityValue = liabilities.Select(x => x.Value.Value).DefaultIfEmpty(0).Sum(); businessViewModel.TotalOriginalPayment = liabilities.Select(x => x.MonthlyOriginalPayment).DefaultIfEmpty(0).Sum(); businessViewModel.TotalInterestPayment = liabilities.Select(x => x.MonthlyInterestPayment).DefaultIfEmpty(0).Sum(); businessViewModel.TotalMonthlyPayment = liabilities.Select(x => x.TotalMonthlyPayment).DefaultIfEmpty(0).Sum(); businessViewModel.TotalPayment = liabilities.Select(x => x.TotalPayment).DefaultIfEmpty(0).Sum(); businessViewModel.TotalRemainedValue = liabilities.Select(x => x.RemainedValue).DefaultIfEmpty(0).Sum(); businessViewModel.TotalInterestRate = businessViewModel.TotalLiabilityValue > 0 ? liabilities.Select(x => x.OriginalInterestPayment).DefaultIfEmpty(0).Sum() / businessViewModel.TotalLiabilityValue * 12 : 0; businessViewModel.RowSpan = businessViewModel.Liabilities.Any() ? businessViewModel.Liabilities.Count() + 3 : 2; result.Businesses.Add(businessViewModel); } result.TotalValue = result.Businesses.Select(x => x.Value).DefaultIfEmpty(0).Sum(); result.TotalMonthlyIncome = result.Businesses.Select(x => x.Income).DefaultIfEmpty(0).Sum(); result.TotalAnnualIncome = result.TotalMonthlyIncome * 12; result.TotalRentYield = result.TotalValue > 0 ? result.TotalAnnualIncome / result.TotalValue : 0; result.IsInitialized = UserQueries.IsCompleteInitialized(username); return(result); }
public static BusinessLiabilityViewModel CreateViewModel(Liabilities liability) { DateTime current = DateTime.Now; BusinessLiabilityViewModel liabilityViewModel = new BusinessLiabilityViewModel(); 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); }
public ActionResult _Confirm() { DateTime current = DateTime.Now; BusinessCreateViewModel model = (BusinessCreateViewModel)HttpContext.Session["BUSINESS"]; BusinessViewModel viewModel = new BusinessViewModel(); viewModel.Name = model.Name; viewModel.Value = model.Value.Value; viewModel.Income = model.Income.HasValue ? model.Income.Value : 0; viewModel.AnnualIncome = viewModel.Income * 12; viewModel.RentYield = viewModel.AnnualIncome / viewModel.Value; BusinessLiabilityListCreateViewModel liabilities = (BusinessLiabilityListCreateViewModel)HttpContext.Session["LIABILITIES"]; viewModel.RowSpan = liabilities != null && liabilities.Liabilities.Count > 0 ? liabilities.Liabilities.Count() + 3 : 2; if (liabilities != null && liabilities.Liabilities.Count > 0) { foreach (var liability in liabilities.Liabilities) { BusinessLiabilityViewModel liabilityViewModel = new BusinessLiabilityViewModel(); liabilityViewModel.Source = liability.Source; liabilityViewModel.Value = liability.Value; liabilityViewModel.InterestType = Helper.GetInterestType(liability.InterestType); 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.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.Liabilities.Add(liabilityViewModel); } var liabilitites = viewModel.Liabilities.Where(x => x.StartDate <= current && x.EndDate >= current); viewModel.TotalLiabilityValue = liabilitites.Select(x => x.Value.Value).DefaultIfEmpty(0).Sum(); viewModel.TotalOriginalPayment = liabilitites.Select(x => x.MonthlyOriginalPayment).DefaultIfEmpty(0).Sum(); viewModel.TotalInterestPayment = liabilitites.Select(x => x.MonthlyInterestPayment).DefaultIfEmpty(0).Sum(); viewModel.TotalMonthlyPayment = liabilitites.Select(x => x.TotalMonthlyPayment).DefaultIfEmpty(0).Sum(); viewModel.TotalPayment = liabilitites.Select(x => x.TotalPayment).DefaultIfEmpty(0).Sum(); viewModel.TotalRemainedValue = liabilitites.Select(x => x.RemainedValue).DefaultIfEmpty(0).Sum(); viewModel.TotalInterestRate = viewModel.TotalLiabilityValue > 0 ? liabilitites.Select(x => x.OriginalInterestPayment).DefaultIfEmpty(0).Sum() / viewModel.TotalLiabilityValue * 12 : 0; } return(PartialView(viewModel)); }