public async Task <PaginationMetaModel <TodoItem> > GetAllTodoItemsAsync(GetAllTodoItemRequestModel request) { using (var conn = Connection) { var result = new Dictionary <int, TodoItem>(); using (var reader = await conn.QueryMultipleAsync( "TodoItem_GetAll", new { @page = request.Page, @pageSize = request.PageSize, @filter = request.Filter }, commandType: CommandType.StoredProcedure)) { //read the first query (total) var total = reader.Read <int>().FirstOrDefault(); //read the second query (todoItems) var todoItems = reader.Read <TodoItem>().ToList(); var todoItemMeta = new PaginationMetaModel <TodoItem>() { Total = total, Items = todoItems }; return(todoItemMeta); } } }
public async Task <PaginatedResponseModel <TodoItem> > GetAllTodoItems(GetAllTodoItemRequestModel request) { var response = new PaginatedResponseModel <TodoItem>(); try { if (request.Page <= 0) { response.Status = ResponseCodes.ValidationError; response.Message = "Page must be a number greater than 0"; return(response); } if (request.PageSize <= 0) { response.Status = ResponseCodes.ValidationError; response.Message = "Page size must be a number greater than 0"; return(response); } response.Data = await _todoItemProvider.GetAllTodoItemsAsync(request); response.Status = ResponseCodes.Success; response.Message = "Success"; return(response); } catch (Exception e) { response.Status = ResponseCodes.ProcessError; var logMessage = response.Message = "Failed to get todo items."; _logger.LogError(e, logMessage + " | Request: {@0}", request); return(response); } }
public async Task <PaginatedResponseModel <TodoItem> > GetAllTodoItems([FromQuery] GetAllTodoItemRequestModel request) { return(await _todoItemService.GetAllTodoItems(request)); }