Ejemplo n.º 1
0
        public async Task <IEnumerable <ToDoList> > GetAllAsync(ListQueryDataStructure queryDataStructure)
        {
            var builder = Builders <ToDoListEntity> .Filter;

            var filter = ApplyWhereStatement(builder, queryDataStructure);

            var lists = (await _toDoListMongoRepository.GetWithExpressionAsync(filter)).ToList();

            foreach (var list in lists)
            {
                var tasks = (await _toDoTaskMongoRepository.GetWithExpressionAsync(x => x.ListId == list.Id)).ToList();
                list.InsertTasks(tasks);

                foreach (var task in tasks)
                {
                    var subTasks = (await _toDoSubTaskMongoRepository.GetWithExpressionAsync(x => x.TaskId == task.Id))
                                   .ToList();
                    task.InsertSubTasks(subTasks);
                }
            }

            return(lists);
        }
Ejemplo n.º 2
0
        private FilterDefinition <ToDoListEntity> ApplyWhereStatement(FilterDefinitionBuilder <ToDoListEntity> builder, ListQueryDataStructure queryDataStructure)
        {
            FilterDefinition <ToDoListEntity> filter = builder.Ne(x => x.Status, (int)ToDoListStatus.Archived);

            if (queryDataStructure.Id.HasValue)
            {
                filter = filter & (builder.Eq(x => x.Id, queryDataStructure.Id.Value));
            }

            if (queryDataStructure.UserId.HasValue)
            {
                filter = filter & (builder.Eq(x => x.UserId, queryDataStructure.UserId.Value));
            }

            if (!string.IsNullOrWhiteSpace(queryDataStructure.Name))
            {
                filter = filter & (builder.Regex(x => x.Name, queryDataStructure.Name));
            }

            if (queryDataStructure.Statuses != null && queryDataStructure.Statuses.Any())
            {
                filter = filter & (builder.In(x => x.Status, queryDataStructure.Statuses));
            }

            return(filter);
        }