public async Task <ActionResult <PaginatedItemsViewModel <AttachmentDTO> > > ItemsAsync( [FromQuery] int pageSize = 10, [FromQuery] int pageIndex = 0, [FromQuery] Dictionary <string, Dictionary <string, List <string> > > filter = default, [FromQuery] Dictionary <string, int> sorting = default, CancellationToken cancellation = default) { var filterSpec = GenerateFilter(filter); var totalItems = await _attachmentService.CountAsync(filterSpec, cancellation); var pagedFilterSpec = GenerateFilter(filter, pageSize, pageIndex); var sortingSpec = GenerateSortingSpec(sorting); var items = await _attachmentService.ListAsync(pagedFilterSpec, sortingSpec, cancellation); var model = new PaginatedItemsViewModel <AttachmentDTO>(pageIndex, pageSize, totalItems, items.Select(_mapper.Map <AttachmentDTO>)); return(Ok(model)); }