Пример #1
0
        public static RealEstateSummaryListViewModel GetRealEstateSummaryByUser(string username)
        {
            Entities entities = new Entities();
            RealEstateSummaryListViewModel result = new RealEstateSummaryListViewModel();
            DateTime current = DateTime.Now;

            var realEstates = entities.Assets.Include("Incomes").Include("Liabilities").Where(x => x.Username.Equals(username) &&
                                                                                              x.AssetType == (int)Constants.Constants.ASSET_TYPE.REAL_ESTATE &&
                                                                                              !x.DisabledDate.HasValue);

            foreach (var realEstate in realEstates)
            {
                RealEstateSummaryViewModel realEstateViewModel = new RealEstateSummaryViewModel();
                realEstateViewModel.Name  = realEstate.AssetName;
                realEstateViewModel.Value = realEstate.Value;
                if (realEstate.Incomes1.Where(x => !x.DisabledDate.HasValue).Any())
                {
                    realEstateViewModel.Income = realEstate.Incomes1.FirstOrDefault().Value;
                }
                else
                {
                    realEstateViewModel.Income = 0;
                }
                realEstateViewModel.AnnualIncome = realEstateViewModel.Income * 12;
                realEstateViewModel.RentYield    = realEstateViewModel.Value > 0 ? realEstateViewModel.AnnualIncome / realEstateViewModel.Value : 0;

                foreach (var liability in realEstate.Liabilities.Where(x => !x.DisabledDate.HasValue))
                {
                    RealEstateLiabilityViewModel liabilityViewModel = RealEstateLiabilityQueries.CreateViewModel(liability);
                    if (liabilityViewModel.StartDate <= current && liabilityViewModel.EndDate >= current)
                    {
                        realEstateViewModel.LiabilityValue          += liabilityViewModel.Value.Value;
                        realEstateViewModel.OriginalInterestPayment += liabilityViewModel.OriginalInterestPayment;
                        realEstateViewModel.MonthlyInterestPayment  += liabilityViewModel.MonthlyInterestPayment;
                        realEstateViewModel.MonthlyPayment          += liabilityViewModel.TotalMonthlyPayment;
                        realEstateViewModel.AnnualPayment           += liabilityViewModel.TotalPayment;
                        realEstateViewModel.RemainedValue           += liabilityViewModel.RemainedValue;
                    }
                }
                realEstateViewModel.InterestRate = realEstateViewModel.LiabilityValue > 0 ? realEstateViewModel.OriginalInterestPayment / realEstateViewModel.LiabilityValue * 12 : 0;
                result.RealEstateSummaries.Add(realEstateViewModel);
            }

            result.TotalIncome         = result.RealEstateSummaries.Sum(x => x.Income);
            result.TotalAnnualIncome   = result.RealEstateSummaries.Sum(x => x.AnnualIncome);
            result.TotalValue          = result.RealEstateSummaries.Sum(x => x.Value);
            result.TotalRentYield      = result.TotalValue > 0 ? result.RealEstateSummaries.Sum(x => x.AnnualIncome) / result.TotalValue : 0;
            result.TotalLiabilityValue = result.RealEstateSummaries.Sum(x => x.LiabilityValue);
            result.TotalInterestRate   = result.TotalLiabilityValue > 0 ? result.RealEstateSummaries.Sum(x => x.OriginalInterestPayment) / result.TotalLiabilityValue * 12 : 0;
            result.TotalMonthlyPayment = result.RealEstateSummaries.Sum(x => x.MonthlyPayment);
            result.TotalAnnualPayment  = result.RealEstateSummaries.Sum(x => x.AnnualPayment);
            result.TotalRemainedValue  = result.RealEstateSummaries.Sum(x => x.RemainedValue);

            return(result);
        }
Пример #2
0
        public static RealEstateListViewModel GetRealEstateByUser(string username)
        {
            Entities entities = new Entities();
            RealEstateListViewModel result = new RealEstateListViewModel();
            DateTime current = DateTime.Now;

            var realEstates = entities.Assets.Include("Incomes").Include("Liabilities").Where(x => x.Username.Equals(username) &&
                                                                                              x.AssetType == (int)Constants.Constants.ASSET_TYPE.REAL_ESTATE &&
                                                                                              !x.DisabledDate.HasValue);

            foreach (var realEstate in realEstates)
            {
                RealEstateViewModel realEstateViewModel = new RealEstateViewModel();
                realEstateViewModel.Id    = realEstate.Id;
                realEstateViewModel.Name  = realEstate.AssetName;
                realEstateViewModel.Value = realEstate.Value;
                if (realEstate.Incomes1.Where(x => !x.DisabledDate.HasValue).Any())
                {
                    realEstateViewModel.Income = realEstate.Incomes1.FirstOrDefault().Value;
                }
                else
                {
                    realEstateViewModel.Income = 0;
                }
                realEstateViewModel.AnnualIncome = realEstateViewModel.Income * 12;
                realEstateViewModel.RentYield    = realEstateViewModel.Value > 0 ? realEstateViewModel.AnnualIncome / realEstateViewModel.Value : 0;

                foreach (var liability in realEstate.Liabilities.Where(x => !x.DisabledDate.HasValue))
                {
                    RealEstateLiabilityViewModel liabilityViewModel = RealEstateLiabilityQueries.CreateViewModel(liability);
                    realEstateViewModel.Liabilities.Add(liabilityViewModel);
                }

                var liabilities = realEstateViewModel.Liabilities.Where(x => x.StartDate <= current && x.EndDate >= current);
                realEstateViewModel.TotalLiabilityValue  = liabilities.Select(x => x.Value.Value).DefaultIfEmpty(0).Sum();
                realEstateViewModel.TotalOriginalPayment = liabilities.Select(x => x.MonthlyOriginalPayment).DefaultIfEmpty(0).Sum();
                realEstateViewModel.TotalInterestPayment = liabilities.Select(x => x.MonthlyInterestPayment).DefaultIfEmpty(0).Sum();
                realEstateViewModel.TotalMonthlyPayment  = liabilities.Select(x => x.TotalMonthlyPayment).DefaultIfEmpty(0).Sum();
                realEstateViewModel.TotalPayment         = liabilities.Select(x => x.TotalPayment).DefaultIfEmpty(0).Sum();
                realEstateViewModel.TotalRemainedValue   = liabilities.Select(x => x.RemainedValue).DefaultIfEmpty(0).Sum();
                realEstateViewModel.TotalInterestRate    = realEstateViewModel.TotalLiabilityValue > 0 ? liabilities.Select(x => x.OriginalInterestPayment).DefaultIfEmpty(0).Sum() / realEstateViewModel.TotalLiabilityValue * 12 : 0;
                realEstateViewModel.RowSpan = realEstateViewModel.Liabilities.Any() ? realEstateViewModel.Liabilities.Count() + 3 : 2;

                result.RealEstates.Add(realEstateViewModel);
            }

            result.TotalValue         = result.RealEstates.Select(x => x.Value).DefaultIfEmpty(0).Sum();
            result.TotalMonthlyIncome = result.RealEstates.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);
        }