示例#1
0
        // [ProducesResponseType(StatusCodes.Status200OK)]
        // [ProducesResponseType(typeof(ApiResponse), StatusCodes.Status404NotFound)]
        public async Task <ActionResult <ProductDto> > GetProductByIdWithSpec(int productId)
        {
            var spec    = new ProductsWithDeptCatProdTypeSpec(productId);
            var product = await _productService.GetProductByIdWithSpec(spec);

            if (product == null)
            {
                return(NotFound(new ApiResponse(AppConstants.NotFound404)));
            }

            _logger.LogInformation("Retrieved { Product } successfully", product.Name);

            return(_mapper.Map <Product, ProductDto>(product));
        }
示例#2
0
        public async Task <PagedList <ProductDto> > GetProductsWithSpec(
            [FromQuery] ProductSpecParams productSpecParams)
        {
            //specifation for product(s) with department, category, and product type
            var spec = new ProductsWithDeptCatProdTypeSpec(productSpecParams);
            //specification for total count of filtered products
            var countSpec = new ProductWithFiltersCountSpec(productSpecParams);

            var totalItems = await _productService.Count(countSpec);

            var products = await _productService.GetProductsWithSpec(spec);

            var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductDto> >(products);

            _logger.LogInformation("Products retreived: {{{ string.Join(", ", data.Name)}}}");

            return(new PagedList <ProductDto>(productSpecParams.PageIndex, productSpecParams.PageSize, totalItems, data));
        }