public MortgageInvestmentStatModel GenerateStatsModel(List<LiabilityBase> liabilities) {
            MortgageInvestmentStatModel model = new MortgageInvestmentStatModel {
                Combination = 0,
                Fixed = 0,
                NotSpecified = 0,
                Variable = 0
            };

            var mortgageGroups = liabilities.OfType<MortgageAndHomeLiability>().GroupBy(l => l.TypeOfMortgageRates);
            foreach (var mortgageGroup in mortgageGroups) {
                var mortgage = mortgageGroup.FirstOrDefault();
                switch (mortgageGroup.Key) {
                    case TypeOfMortgageRates.Combination:
                        model.Combination += mortgage.Property.GetTotalMarketValue();
                        break;
                    case TypeOfMortgageRates.Fixed:
                        model.Fixed += mortgage.Property.GetTotalMarketValue();
                        break;
                    case TypeOfMortgageRates.NotSpecified:
                        model.NotSpecified += mortgage.Property.GetTotalMarketValue();
                        break;
                    case TypeOfMortgageRates.Variable:
                        model.Variable += mortgage.Property.GetTotalMarketValue();
                        break;
                }
            }
            return model;
        }
        public MortgageInvestmentStatModel GetStats_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>();
                foreach (var account in groupAccounts)
                {
                    liabilities.AddRange(account.GetLiabilitiesSync());
                }
                foreach (var account in clientAccounts)
                {
                    liabilities.AddRange(account.GetLiabilitiesSync());
                }

                MortgageInvestmentStatModel model = new MortgageInvestmentStatModel
                {
                    Combination = 0,
                    Fixed = 0,
                    NotSpecified = 0,
                    Variable = 0
                };

                var mortgageGroups = liabilities.OfType<MortgageAndHomeLiability>().GroupBy(l => l.TypeOfMortgageRates);
                foreach (var mortgageGroup in mortgageGroups)
                {
                    var mortgage = mortgageGroup.FirstOrDefault();
                    switch (mortgageGroup.Key)
                    {
                        case TypeOfMortgageRates.Combination:
                            model.Combination += mortgage.Property.GetTotalMarketValue();
                            break;
                        case TypeOfMortgageRates.Fixed:
                            model.Fixed += mortgage.Property.GetTotalMarketValue();
                            break;
                        case TypeOfMortgageRates.NotSpecified:
                            model.NotSpecified += mortgage.Property.GetTotalMarketValue();
                            break;
                        case TypeOfMortgageRates.Variable:
                            model.Variable += mortgage.Property.GetTotalMarketValue();
                            break;
                    }
                }
                return model;
            }
            else
            {
                List<ClientAccount> accounts = edisRepo.GetAccountsForClientSync(client.ClientNumber, DateTime.Now);

                List<LiabilityBase> liabilities = new List<LiabilityBase>();
                foreach (var account in accounts)
                {
                    liabilities.AddRange(account.GetLiabilitiesSync());
                }

                MortgageInvestmentStatModel model = new MortgageInvestmentStatModel
                {
                    Combination = 0,
                    Fixed = 0,
                    NotSpecified = 0,
                    Variable = 0
                };

                var mortgageGroups = liabilities.OfType<MortgageAndHomeLiability>().GroupBy(l => l.TypeOfMortgageRates);
                foreach (var mortgageGroup in mortgageGroups)
                {
                    var mortgage = mortgageGroup.FirstOrDefault();
                    switch (mortgageGroup.Key)
                    {
                        case TypeOfMortgageRates.Combination:
                            model.Combination += mortgage.Property.GetTotalMarketValue();
                            break;
                        case TypeOfMortgageRates.Fixed:
                            model.Fixed += mortgage.Property.GetTotalMarketValue();
                            break;
                        case TypeOfMortgageRates.NotSpecified:
                            model.NotSpecified += mortgage.Property.GetTotalMarketValue();
                            break;
                        case TypeOfMortgageRates.Variable:
                            model.Variable += mortgage.Property.GetTotalMarketValue();
                            break;
                    }
                }

                return model;
            }
        }