public TotalAccountListModel FilterListData(TotalAccountListEnum elementNumber, string searchExpression, IEnumerable <long> idMasterAccounts, IEnumerable <long> idTradeAccounts) { var tradeAccounts = _tradeRepository.TradeAccountsQuery().Where(s => s.IsClientInfo == true); if (TradeUtils.IsSortingByTradeAccounts(idTradeAccounts.ToArray())) { tradeAccounts = tradeAccounts.Where(fee => idTradeAccounts.Contains(fee.Id)); } else if (TradeUtils.IsSortingByMasterAccounts(idMasterAccounts.ToArray())) { tradeAccounts = tradeAccounts.Where(fee => idMasterAccounts.Contains(fee.MasterAccount.Id)); } var listModel = RetriveListData(tradeAccounts, elementNumber); listModel.AccountTotalList = string.IsNullOrEmpty(searchExpression) ? listModel.AccountTotalList : listModel.AccountTotalList.Where(s => s.Key.ToLower().Contains(searchExpression.ToLower())).ToList(); return(listModel); }
private TotalAccountListModel RetriveListData(IQueryable <TradeAccount> tradeAccounts, TotalAccountListEnum elementNumber) { var list = new List <KeyValuePair <string, long> >(); switch (elementNumber) { case TotalAccountListEnum.CityList: list = tradeAccounts.Where(s => !string.IsNullOrEmpty(s.CityResidentialAddress)).GroupBy(s => s.CityResidentialAddress).Where(g => g.Count() > 1) .ToDictionary(s => s.Key, g => (long)g.Count()).ToList(); return(new TotalAccountListModel { Enum = elementNumber, AccountTotalList = list }); case TotalAccountListEnum.CountryList: list = tradeAccounts.Where(s => !string.IsNullOrEmpty(s.StateResidentialAddress)).GroupBy(s => s.StateResidentialAddress).Where(g => g.Count() > 1) .ToDictionary(s => s.Key, g => (long)g.Count()).ToList(); return(new TotalAccountListModel { Enum = elementNumber, AccountTotalList = list }); case TotalAccountListEnum.AccountCapabilitiesList: list = tradeAccounts.Where(s => !string.IsNullOrEmpty(s.AccountCapabilities)).GroupBy(s => s.AccountCapabilities).Where(g => g.Count() > 1) .ToDictionary(s => s.Key, g => (long)g.Count()).ToList(); return(new TotalAccountListModel { Enum = elementNumber, AccountTotalList = list }); case TotalAccountListEnum.AccountTypeList: list = tradeAccounts.Where(s => !string.IsNullOrEmpty(s.AccountType)).GroupBy(s => s.AccountType).Where(g => g.Count() > 1) .ToDictionary(s => s.Key, g => (long)g.Count()).ToList(); return(new TotalAccountListModel { Enum = elementNumber, AccountTotalList = list }); case TotalAccountListEnum.IbEntityList: list = tradeAccounts.Where(s => !string.IsNullOrEmpty(s.IbEntity)).GroupBy(s => s.IbEntity).Where(g => g.Count() > 1) .ToDictionary(s => s.Key, g => (long)g.Count()).ToList(); return(new TotalAccountListModel { Enum = elementNumber, AccountTotalList = list }); case TotalAccountListEnum.BaseCurrencyList: list = tradeAccounts.Where(s => !string.IsNullOrEmpty(s.Currency)).GroupBy(s => s.Currency).Where(g => g.Count() > 1) .ToDictionary(s => s.Key, g => (long)g.Count()).ToList(); return(new TotalAccountListModel { Enum = elementNumber, AccountTotalList = list }); default: return(new TotalAccountListModel { Enum = elementNumber, AccountTotalList = list }); } }