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);
        }