Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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
            });
        }