public MortgageInvestmentGeneralInfo GenerateGeneralInfo(List<LiabilityBase> liabilities) { double marketValue = 0; double outstandingLoans = 0; double propertyGearingRatio = 0; double monthlyRepayment = 0; foreach (var mah in liabilities.OfType<MortgageAndHomeLiability>()) { mah.GetActivitiesSync().OfType<FinancialActivity>().ToList().ForEach(a => monthlyRepayment += a.Expenses.Sum(e => e.Amount)); marketValue += mah.Property.GetTotalMarketValue(); propertyGearingRatio += mah.CurrentPropertyGearingRatio; outstandingLoans += mah.CurrentBalance; } MortgageInvestmentGeneralInfo info = new MortgageInvestmentGeneralInfo { marketValue = marketValue, propertyGearingRatio = propertyGearingRatio, outstandingLoans = outstandingLoans, monthlyRepayment = monthlyRepayment }; return info; }
public MortgageInvestmentGeneralInfo GetGeneralInfo_Client() { Client client = edisRepo.GetClientSync(User.Identity.GetUserId(), DateTime.Now); ClientGroup clientGroup = edisRepo.GetClientGroupSync(client.ClientGroupId, DateTime.Now); if (clientGroup.MainClientId == client.Id) { List<GroupAccount> groupAccounts = edisRepo.GetAccountsForClientGroupSync(clientGroup.ClientGroupNumber, DateTime.Now); List<ClientAccount> clientAccounts = edisRepo.GetAccountsForClientSync(client.ClientNumber, DateTime.Now); List<LiabilityBase> liabilities = new List<LiabilityBase>(); double marketValue = 0; double outstandingLoans = 0; double propertyGearingRatio = 0; double monthlyRepayment = 0; foreach (var account in groupAccounts) { liabilities.AddRange(account.GetLiabilitiesSync()); } foreach (var account in clientAccounts) { liabilities.AddRange(account.GetLiabilitiesSync()); } var mahs = liabilities.OfType<MortgageAndHomeLiability>(); foreach (var mah in mahs) { foreach (var activity in mah.GetActivitiesSync().OfType<FinancialActivity>()) { monthlyRepayment += activity.Incomes.Sum(i => i.Amount); } marketValue += mah.Property.GetTotalMarketValue(); propertyGearingRatio += mah.CurrentPropertyGearingRatio; outstandingLoans += mah.CurrentBalance; } MortgageInvestmentGeneralInfo info = new MortgageInvestmentGeneralInfo { marketValue = marketValue, propertyGearingRatio = propertyGearingRatio, outstandingLoans = outstandingLoans, monthlyRepayment = monthlyRepayment }; return info; } else { List<ClientAccount> accounts = edisRepo.GetAccountsForClientSync(client.ClientNumber, DateTime.Now); List<LiabilityBase> liabilities = new List<LiabilityBase>(); double marketValue = 0; double outstandingLoans = 0; double propertyGearingRatio = 0; double monthlyRepayment = 0; foreach (var account in accounts) { liabilities.AddRange(account.GetLiabilitiesSync()); } var mahs = liabilities.OfType<MortgageAndHomeLiability>(); foreach (var mah in mahs) { foreach (var activity in mah.GetActivitiesSync().OfType<FinancialActivity>()) { monthlyRepayment += activity.Incomes.Sum(i => i.Amount); } marketValue += mah.Property.GetTotalMarketValue(); propertyGearingRatio += mah.CurrentPropertyGearingRatio; outstandingLoans += mah.CurrentBalance; } MortgageInvestmentGeneralInfo info = new MortgageInvestmentGeneralInfo { marketValue = marketValue, propertyGearingRatio = propertyGearingRatio, outstandingLoans = outstandingLoans, monthlyRepayment = monthlyRepayment }; return info; } }