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); } }
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)); } }