private FilterDefinition <TaskItem> BuildFilter(TaskItemsFilter filter) { var filterBuilder = Builders <TaskItem> .Filter; var itemsFilter = filterBuilder.Empty; if (filter == null) { return(itemsFilter); } if (!filter.GrammarPart.IsNullOrEmpty()) { itemsFilter &= filterBuilder.In(x => x.GrammarPart, filter.GrammarPart); } if (!filter.TaskType.IsNullOrEmpty()) { itemsFilter &= filterBuilder.In(x => x.TaskType, filter.TaskType); } if (!filter.SentType.IsNullOrEmpty()) { itemsFilter &= filterBuilder.In(x => x.SentType, filter.SentType); } if (!filter.EnglishLevel.IsNullOrEmpty()) { itemsFilter &= filterBuilder.In(x => x.EnglishLevel, filter.EnglishLevel); } return(itemsFilter); }
public async Task <IReadOnlyList <TaskItem> > FindAllByFilters(TaskItemsFilter filter) { var itemsFilter = BuildFilter(filter); return(await _collection.Find(itemsFilter).ToListAsync()); }