コード例 #1
0
        public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id)
        {
            //return await _repo.GetProductByIdAsync(id);
            //return await _productRepo.GetByIdAsync(id);

            var spec = new ProductsWithTypeAndBrandSpecification(id);
            // return await _productRepo.GetEntityWithSpec(spec);

            var product = await _productRepo.GetEntityWithSpec(spec);

            // return new ProductToReturnDto
            // {
            //     Id = product.Id,
            //     Name = product.Name,
            //     Description = product.Description,
            //     PictureUrl = product.PictureUrl,
            //     Price = product.Price,
            //     ProductBrand = product.ProductBrand.Name,
            //     ProductType = product.ProductType.Name
            // };

            if (product == null)
            {
                return(NotFound(new ApiResponse(404)));
            }

            return(_mapper.Map <Product, ProductToReturnDto>(product));
        }
コード例 #2
0
        // public async Task<ActionResult<IReadOnlyList<ProductToReturnDto>>> GetProducts(
        //     string sort, int? brandId, int? typeId )
        // public async Task<ActionResult<IReadOnlyList<ProductToReturnDto>>> GetProducts(

        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts(
            [FromQuery] ProductSpecParams productParams)
        {
            //var products = await _repo.GetProductsAsync();
            //var products = await _productRepo.ListAllAsync();
            // var spec = new ProductsWithTypeAndBrandSpecification(sort,brandId,typeId);

            var spec = new ProductsWithTypeAndBrandSpecification(productParams);

            var countSpec = new ProductWithFiltersForCountSpecification(productParams);

            var totalItems = await _productRepo.CountAsync(countSpec);

            var products = await _productRepo.ListAsync(spec);

            //return Ok(products);

            // return products.Select(product => new ProductToReturnDto
            // {
            //     Id = product.Id,
            //     Name = product.Name,
            //     Description = product.Description,
            //     PictureUrl = product.PictureUrl,
            //     Price = product.Price,
            //     ProductBrand = product.ProductBrand.Name,
            //     ProductType = product.ProductType.Name
            // }).ToList();

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

            return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data)));
        }
コード例 #3
0
        public async Task <ActionResult <IReadOnlyList <ProductToReturnDto> > > GetProducts()
        {
            //implements IGeneric Class method using on this ends point
            // var products =await _productsRepo.ListAllAsync();
            //caling Product witht type and Brand Class  for pussing This type Working
            var spec = new ProductsWithTypeAndBrandSpecification();

            var products = await _productsRepo.ListAsync(spec);

            //all return data are save in current context at the memory address at [products] then
            //slelect one product and rearange this data with productretundto class finaly retun a list
            // return products.Select(product => new ProductToReturnDto
            // {
            //     Id = product.id,
            //     Name = product.Name,
            //     Description = product.Description,
            //     PictureUrl = product.PictureUrl,
            //     Price = product.Price,
            //     ProductBrand = product.ProductBrand.Name,
            //     ProductType = product.ProductType.Name
            // }).ToList();
            // return Ok(products);

            // in the Map{first part orginal result[db part] , convartede result what we want to see Based on design class}
            return(Ok(_mapper
                      .Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products)));
        }
コード例 #4
0
ファイル: ProductsController.cs プロジェクト: Hedyia/skinet
        public async Task <ActionResult <ProductDto> > GetProduct(int id)
        {
            var spec    = new ProductsWithTypeAndBrandSpecification(id);
            var product = await _unitOfWork.ProductRepository.GetAsync(spec);

            if (product == null)
            {
                return(NotFound(new ApiResponse(404)));
            }
            return(_mapper.Map <Product, ProductDto>(product));
        }
コード例 #5
0
        public async Task <ActionResult <ProductModel> > GetProduct(int id)
        {
            //var product = await this.repository.GetProductByIdAsync(id);
            var spec    = new ProductsWithTypeAndBrandSpecification(id);
            var product = await this.productRepo.GetEntityWithSpec(spec);

            if (product == null)
            {
                return(new NotFoundObjectResult(new ApiResponse(404)));
            }
            return(Ok(mapper.Map <ProductModel>(product)));
        }
コード例 #6
0
        public async Task <IActionResult> GetProduct(int id)
        {
            var spec    = new ProductsWithTypeAndBrandSpecification(id);
            var product = await _productRepo.GetEntityWithSpec(spec);

            if (product == null)
            {
                return(NotFound(new ApiResponse(404)));
            }
            var productToReturn = _mapper.Map <ProductToReturnDto>(product);

            return(Ok(productToReturn));
        }
コード例 #7
0
        public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams productParams)
        {
            var specification = new ProductsWithTypeAndBrandSpecification(productParams);
            var countSpec     = new ProductWithFiltersForCountSpecification(productParams);

            var count = await _productRepo.GetCountAsync(countSpec);

            var products = await _productRepo.ListAllAsync(specification);

            var productsToReturn = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products);

            return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, count, productsToReturn)));
        }
コード例 #8
0
ファイル: ProductsController.cs プロジェクト: Hedyia/skinet
        public async Task <ActionResult <Pagination <ProductDto> > > GetProducts([FromQuery] ProductParamsSpec productParams)
        {
            var spec      = new ProductsWithTypeAndBrandSpecification(productParams);
            var countSpec = new ProductsWithFiltersForCountSpec(productParams);

            var products = await _unitOfWork.ProductRepository.GetListAsync(spec);

            var totalItems = await _unitOfWork.ProductRepository.CountAsync(countSpec);

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

            return(Ok(new Pagination <ProductDto>
                          (pageIndex: productParams.PageIndex, pageSize: productParams.PageSize, count: totalItems, data: data)));
        }
コード例 #9
0
        public async Task <ActionResult <IReadOnlyList <ProductModel> > > GetProducts([FromQuery] ProductSpecParams productParams)
        {
            //var products = await this.repository.GetProductsAsync();
            var spec      = new ProductsWithTypeAndBrandSpecification(productParams);
            var countSpec = new ProductWithFiltersForCountSpecificication(productParams);

            var totalItems = await this.productRepo.CountAsync(countSpec);

            var products = await this.productRepo.ListAsync(spec);

            var data = mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductModel> >(products);

            return(Ok(new Pagination <ProductModel>(productParams.PageIndex, productParams.PageSize, totalItems, data)));
        }
コード例 #10
0
        public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id)
        {
            var specification = new ProductsWithTypeAndBrandSpecification(id);
            var product       = await _productRepo.GetEntityWithSpec(specification);

            var productToReturn = _mapper.Map <Product, ProductToReturnDto>(product);

            if (productToReturn == null)
            {
                return(NotFound());
            }

            return(Ok(productToReturn));
        }
コード例 #11
0
        public async Task <IActionResult> GetProducts([FromQuery] ProductSpecParams productSpecParams)
        {
            var spec      = new ProductsWithTypeAndBrandSpecification(productSpecParams);
            var countSpec = new ProductWithFiltersForCountSpecification(productSpecParams);
            var count     = await _productRepo.CountAsync(countSpec);

            var products = await _productRepo.ListAsync(spec);

            var productToReturnList = _mapper.Map <IReadOnlyList <ProductToReturnDto> >(products);

            return(Ok(new Pagination <ProductToReturnDto> {
                PageIndex = productSpecParams.PageIndex,
                PageSize = productSpecParams.pageSize,
                Count = count,
                Data = productToReturnList
            }));
        }
コード例 #12
0
        //Lecture 40 are goods Descriptions
        public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id)
        {
            var spec = new ProductsWithTypeAndBrandSpecification(id);


            // return await _productsRepo.GetEntitiyWithSpac(spec);
            var product = await _productsRepo.GetEntitiyWithSpac(spec);

            //[peoduct] is mamory and its mapping with helping mapping calss with based on ProductToDoi class
            return(_mapper.Map <Product, ProductToReturnDto>(product));
            // return new ProductToReturnDto
            // {
            //     Id = product.id,
            //     Name = product.Name,
            //     Description = product.Description,
            //     PictureUrl = product.PictureUrl,
            //     Price = product.Price,
            //     ProductBrand = product.ProductBrand.Name,
            //     ProductType = product.ProductType.Name


            // };
        }