public async Task <IActionResult> Items(
            int?catalogTypeId,
            [FromQuery] int pageIndex = 0,
            [FromQuery] int pageSize  = 6
            )
        {
            var query = (IQueryable <CatalogItem>)_context.CatalogItems;

            if (catalogTypeId.HasValue)
            {
                query = query.Where(c => c.CatalogTypeId == catalogTypeId);
            }
            var itemsCount = await query.LongCountAsync();

            var items = await query
                        .OrderBy(c => c.Name)
                        .Skip(pageIndex * pageSize)
                        .Take(pageSize)
                        .ToListAsync();

            items = ChangePictureUrl(items);

            var model = new ViewModels.PaginatedItemsViewModel <CatalogItem>
            {
                PageIndex = pageIndex,
                PageSize  = items.Count,
                Count     = itemsCount,
                Data      = items
            };

            return(Ok(model));
        }
        public async Task <IActionResult> Items(
            [FromQuery] int pageIndex = 0,
            [FromQuery] int pageSize  = 6)
        //async needs to be wrapped with Task
        {
            var itemsCount = await _context.CatalogItems.LongCountAsync();

            var items = await _context.CatalogItems
                        .OrderBy(c => c.Name)
                        .Skip(pageIndex * pageSize)
                        .Take(pageSize)
                        .ToListAsync();

            items = ChangePictureUrl(items);

            var model = new ViewModels.PaginatedItemsViewModel <CatalogItem>
            {
                PageIndex = pageIndex,
                PageSize  = items.Count,
                Count     = itemsCount,
                Data      = items
            };

            return(Ok(model));
        }