예제 #1
0
        public async Task <ActionResult <PaginatedItemsViewModel <UserInfoDTO> > > ItemsAsync(
            [FromQuery] int pageSize  = 10,
            [FromQuery] int pageIndex = 0,
            [FromQuery] Dictionary <string, string> filter = default,
            [FromQuery] Dictionary <string, int> sorting   = default,
            CancellationToken cancellation = default)
        {
            var filterSpec = GenerateFilter(filter);
            var totalItems = await _userInfoService.CountAsync(filterSpec, cancellation);

            var pagedFilterSpec = GenerateFilter(filter, pageSize, pageIndex);
            var sortingSpec     = GenerateSortingSpec(sorting);
            var items           = await _userInfoService.ListAsync(pagedFilterSpec, sortingSpec, cancellation);

            var model = new PaginatedItemsViewModel <UserInfoDTO>(pageIndex, pageSize, totalItems, items.Select(_mapper.Map <UserInfoDTO>));

            return(Ok(model));
        }