public async Task <ActionResult <IEnumerable <TaskItem> > > GetItems( [FromQuery(Name = "sortorder")] string sortOrder, [FromQuery(Name = "projectid")] int[] projectId, [FromQuery(Name = "datefrom")] DateTime?dateFrom, [FromQuery(Name = "dateto")] DateTime?dateTo, [FromQuery(Name = "status")] TaskItem.TaskStatus[] status, [FromQuery(Name = "priority")] TaskItem.TaskPriority[] priority, [FromQuery(Name = "page")] int page = DEFAULT_PDAGE_NUMBER, [FromQuery(Name = "pagesize")][Range(MIN_PAGE_SIZE, MAX_PAGE_SIZE)] int pageSize = DEFAULT_PAGE_SIZE ) { try { var command = new GetTasksCommand { Priority = priority, PageSize = pageSize, Status = status, Page = page, DateFrom = dateFrom, DateTo = dateTo, ProjectId = projectId, SortOrder = sortOrder }; return(await _taskRepository.GetTasks(command)); } catch (Exception e) { //Logger.Log(e); return(BadRequest()); } }
public async Task <List <TaskItem> > GetTasks(GetTasksCommand command) { IEnumerable <TaskItem> items = _context.TaskItems; switch (command.SortOrder) { case "priority": items = items.OrderBy(x => x.Priority); break; case "created": items = items.OrderBy(x => x.Created); break; } if (command.ProjectId?.Length != 0) { items = items.Where(x => command.ProjectId.Contains(x.ProjectID)); } if (command.Status?.Length != 0) { items = items.Where(x => command.Status.Contains(x.Status)); } if (command.Priority?.Length != 0) { items = items.Where(x => command.Priority.Contains(x.Priority)); } if (command.DateFrom != null) { items = items.Where(x => x.Created >= command.DateFrom); } if (command.DateTo != null) { items = items.Where(x => x.Created <= command.DateTo); } //используется пакет X.PagedList.Mvc.Core var itemsPagedList = await items.ToPagedListAsync(command.Page, command.PageSize); return(await itemsPagedList.ToListAsync()); }