示例#1
0
        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);
        }
示例#5
0
        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));
        }