public async Task <PagedResultModel <TodoItemModel> > SearchAsync(TodoItemSearchModel model)
        {
            using (var session = factory.OpenSession()) {
                var result = new PagedResultModel <TodoItemModel>();
                var query  = session.Query <TodoItem>();
                // add custom query here;
                if (model.Completed.HasValue)
                {
                    var val = model.Completed.Value;
                    query = query.Where(x => x.Completed == val);
                }
                if (!string.IsNullOrEmpty(model.UserId))
                {
                    query = query.Where(x => x.User.Id == model.UserId);
                }
                //
                result.Total = await query.LongCountAsync();

                result.Data = await query.ProjectTo <TodoItemModel>(mapper.ConfigurationProvider)
                              .Skip(model.Skip)
                              .Take(model.Take)
                              .ToListAsync();

                result.Skip = model.Skip;
                result.Take = model.Take;
                return(result);
            }
        }
Exemple #2
0
        public async Task <ActionResult <PagedResultModel <TodoItemModel> > > Search(
            TodoItemSearchModel model
            )
        {
            try {
                var result = await repo.SearchAsync(model);

                return(result);
            }
            catch (Exception ex) {
                logger.LogError(ex, "Can not search todo items.");
                return(StatusCode(500));
            }
        }