public async Task <IActionResult> Get(int projectId, [FromQuery] WorkItemQueryParameters parameters) { if (parameters.AssigneeId == null) { parameters.AssigneeId = int.Parse(User.Identity.Name); } var workItem = await _workItemService.Paginate(projectId, parameters); if (workItem == null) { return(NotFound()); } return(Ok(workItem)); }
public async Task <BasePaginatedResponse <WorkItemDto> > Paginate(int projectId, WorkItemQueryParameters parameters) { Expression <Func <WorkItem, bool> > exp = w => w.ProjectId == projectId; if (parameters.AssigneeId.HasValue) { exp = exp.AndAlso(w => w.AssigneeId == parameters.AssigneeId.Value); } if (!string.IsNullOrWhiteSpace(parameters.Search)) { exp = exp.AndAlso(w => w.Title.Contains(parameters.Search)); } var workItemList = await _workItemRepository.PaginateFiltered( exp, offset : (parameters.Page - 1) *parameters.ItemsPerPage, itemsCount : parameters.ItemsPerPage ); var workItemDtoList = _mapper.Map <IEnumerable <WorkItem>, IEnumerable <WorkItemDto> >(workItemList); var rowsCount = await _workItemRepository.GetFilteredDataCountAsync(exp); var pagesCount = (int)Math.Ceiling((decimal)rowsCount / parameters.ItemsPerPage); return(new BasePaginatedResponse <WorkItemDto> { EntityList = workItemDtoList, PagesCount = pagesCount }); }