private IQueryable <ExpenseMDO> GetExpenseQuery(int userId, DateTime expenseDate, IList <IExpenseType> expenseTypes = null) { IQueryable <ExpenseMDO> expenseCollection = new MongoDBManager().GetAll <ExpenseMDO>(EXPENSES); IQueryable <ExpenseMDO> expenseFilteredCollection = (from i in expenseCollection.Where(x => x.UserId == userId) select i); if (!expenseDate.IsDefault()) { expenseFilteredCollection = expenseFilteredCollection.Where <ExpenseMDO>(x => x.ExpenseDate == expenseDate); if ((expenseTypes != null && expenseTypes.Any())) { List <int> expenseTypeIds = expenseTypes.Select(t => t.TypeId).ToList <int>(); expenseFilteredCollection = expenseFilteredCollection.Where <ExpenseMDO>(x => x.ExpenseType.TypeId.In(expenseTypeIds)); } } else if ((expenseTypes != null && expenseTypes.Any())) { List <int> expenseTypeIds = expenseTypes.Select(t => t.TypeId).ToList <int>(); expenseFilteredCollection = expenseFilteredCollection.Where <ExpenseMDO>(x => x.ExpenseType.TypeId.In(expenseTypeIds)); } return(expenseFilteredCollection.OrderByDescending(x => x.ExpenseDate)); // Order by desc by expense date (not considering Modified Date) }
private IQueryable <IncomeMDO> GetIncomeQuery(int userId, DateTime incomeDate, List <IIncomeType> incomeTypes = null) { IQueryable <IncomeMDO> incomeCollection = new MongoDBManager().GetAll <IncomeMDO>("Incomes"); IQueryable <IncomeMDO> incomeFilteredCollection = (from i in incomeCollection.Where(x => x.UserId == userId) //orderby i.RowNumber ascending select i); if (!incomeDate.IsDefault()) { incomeFilteredCollection = incomeFilteredCollection.Where <IncomeMDO>(x => x.IncomeDate == incomeDate); if ((incomeTypes != null && incomeTypes.Any())) { List <int> incomeTypeIds = incomeTypes.Select(t => t.TypeId).ToList <int>(); incomeFilteredCollection = incomeFilteredCollection.Where <IncomeMDO>(x => x.IncomeType.TypeId.In(incomeTypeIds)); } } else if ((incomeTypes != null && incomeTypes.Any())) { List <int> incomeTypeIds = incomeTypes.Select(t => t.TypeId).ToList <int>(); incomeFilteredCollection = incomeFilteredCollection.Where <IncomeMDO>(x => x.IncomeType.TypeId.In(incomeTypeIds)); } return(incomeFilteredCollection); }