public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams specParams) { ProductsWithTypesAndBrandsSpecification spec = new ProductsWithTypesAndBrandsSpecification(specParams); ProductsWithFiltersForCountSpecification countSpec = new ProductsWithFiltersForCountSpecification(specParams); var totalItems = await _productRepo.CountAsync(countSpec); IReadOnlyList <Product> products = await _productRepo.ListAsync(spec); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); Pagination <ProductToReturnDto> pagination = new Pagination <ProductToReturnDto> { PageIndex = specParams.PageIndex, PageSize = specParams.PageSize, Count = totalItems, Data = data }; return(Ok(pagination)); }
public async Task <ActionResult> DeleteProductPhoto(int id, int photoId) { var spec = new ProductsWithTypesAndBrandsSpecification(id); var product = await _unitOfWork.Repository <Product>().GetEntityWithSpec(spec); var photo = product.Photos.SingleOrDefault(x => x.Id == photoId); if (photo != null) { if (photo.IsMain) { return(BadRequest(new ApiResponse(400, "You cannot delete the main photo."))); } // so we dont delete seeded photo if (photo.Id > 18) { _photoService.DeleteFromDisk(photo); } } else { return(BadRequest(new ApiResponse(400, "Photo does not exist"))); } product.RemovePhoto(photoId); _unitOfWork.Repository <Product>().Update(product); var result = await _unitOfWork.Complete(); if (result <= 0) { return(BadRequest(new ApiResponse(400, "Problem adding photo product"))); } return(Ok()); }
//public async Task<ActionResult<List<Product>>> GetProducts() public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts( [FromQuery] ProductSpecParams productParams) { //var products = await _context.Products.ToListAsync(); //var products = await _repo.GetProductsAsync(); //var products = await _productsRepo.ListAllAsync(); var spec = new ProductsWithTypesAndBrandsSpecification( productParams); var countSpec = new ProductWithFiltersForCountSpecification(productParams); var totalItems = await _productsRepo.CountAsync(countSpec); var products = await _productsRepo.ListAsync(spec); var data = _mapper .Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(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(); ////return Ok(products); //return Ok(_mapper.Map<IReadOnlyList<Product>, // IReadOnlyList<ProductToReturnDto>>(products)); return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data))); }
public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id) { //1- return await _context.Products.FindAsync(id);// After Interfaces made //2- return await _repo.GetProductByIdAsync(id); //3- return await _productsRepo.GetByIdAsync(id); /* 4- * var spec = new ProductsWithTypesAndBrandsSpecification(id); * * return await _productsRepo.GetEntityWithSpec(spec); */ var spec = new ProductsWithTypesAndBrandsSpecification(id); var product = await _unitOfWork.Repository <Product>().GetEntityWithSpec(spec); if (product == null) { return(NotFound(new ApiResponse(404))); } return(_mapper.Map <Product, ProductToReturnDto>(product)); }
public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id) { //return Ok ( await _productsRepo.GetByIdAsync(id)); var spec = new ProductsWithTypesAndBrandsSpecification(id); //var product = await _productsRepo.ListAsync(spec); var product = await _productsRepo.GetEntityWithSpec(spec); //return Ok( product ); // return new ProductToReturnDto // { // Id = product.Id, // Name = product.Name, // Description = product.Description, // Price = product.Price // }; if (product == null) { return(NotFound(new ApiResponse(404))); } return(_mapper.Map <Product, ProductToReturnDto>(product)); }
public async Task <ActionResult <ProductToReturnDTO> > GetProduct(int id) { var spec = new ProductsWithTypesAndBrandsSpecification(id); var product = await this.productRepo.GetEntityWithSpec(spec); if (product == null) { return(NotFound(new ApiResponse(404))); } return(this.mapper.Map <Product, ProductToReturnDTO>(product)); // return new ProductToReturnDTO() // { // Id = product.Id, // Name = product.Name, // Description = product.Description, // Price = product.Price, // PictureUrl = product.PictureUrl, // ProductBrand = product.ProductBrand.Name, // ProductType = product.ProductType.Name // }; }
[HttpGet] // Pagination v 65 public async Task <ActionResult <Pagination <ProductToReturnDto> > > GetProducts([FromQuery] ProductSpecParams productParams) // if class check for body but we sent as query for get so used "fromQuery"// v 64 { var spec = new ProductsWithTypesAndBrandsSpecification(productParams); // sort v 59 var countSpec = new ProductWithFiltersForCountSpecification(productParams); //v 65 var totalItems = await _productsRepo.CountAsync(countSpec); // 65 var products = await _productsRepo.ListAsync(spec); var data = _mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.Pagesize, totalItems, data))); // 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(); }
public async Task <ActionResult <ProductToReturnDto> > SetMainPhoto(int id, int photoId) { var spec = new ProductsWithTypesAndBrandsSpecification(id); var product = await _unitOfWork.Repository <Product>().GetEntityWithSpec(spec); if (product.Photos.All(x => x.Id != photoId)) { return(NotFound()); } product.SetMainPhoto(photoId); _unitOfWork.Repository <Product>().Update(product); var result = await _unitOfWork.Complete(); if (result <= 0) { return(BadRequest(new ApiResponse(400, "Problem adding photo product"))); } return(_mapper.Map <Product, ProductToReturnDto>(product)); }
public async Task <ActionResult <ProductToReturnDtos> > GetProductById(int id) { //return await _productRepo.GetByIdAsync(id); var spec = new ProductsWithTypesAndBrandsSpecification(id); var product = await _productRepo.GetEntityWithSpec(spec); if (product == null) { return(NotFound(new ApiResponse(404))); } //DTO // return new ProductToReturnDtos // { // Id = product.Id, // Name = product.Name, // Description = product.Description, // Price = product.Price, // PictureUrl = product.PictureUrl, // ProductType = product.ProductType.Name, // ProductBrand = product.ProductBrand.Name // }; return(_mapper.Map <Product, ProductToReturnDtos>(product)); // map from product to productToReturnDtos }
public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id) { var spec = new ProductsWithTypesAndBrandsSpecification(id); var product = await _productsRepo.GetEntityWithSpec(spec); if (product == null) { return(NotFound(new ApiResponse(404))); } return(_mapper.Map <Product, ProductToReturnDto>(product)); /* return new ProductToReturnDto * { * Id = product.Id, * Name = product.Name, * Description = product.Description, * PictureUrl = product.PictureUrl, * Price = product.Price, * ProductType = product.ProductType.Name, * ProductBrand = product.ProductBrand.Name * };*/ }
public async Task <ActionResult <Pagination <ProductToReturnDTO> > > GetProducts([FromQuery] ProductSpecsParams productParams) { var spec = new ProductsWithTypesAndBrandsSpecification(productParams); var countSpec = new ProductWithFilterForCountSpecification(productParams); var totalItems = await this.productRepo.CountAsync(countSpec); var products = await this.productRepo.ListAsync(spec); var data = this.mapper.Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDTO> >(products); return(Ok(new Pagination <ProductToReturnDTO>(productParams.PageIndex, productParams.PageSize, totalItems, data))); // return products.Select(p => new ProductToReturnDTO() // { // Id = p.Id, // Name = p.Name, // Description = p.Description, // Price = p.Price, // PictureUrl = p.PictureUrl, // ProductBrand = p.ProductBrand.Name, // ProductType = p.ProductType.Name // }).ToList(); }
public async Task <ActionResult <ProductToReturnDto> > GetProducts( [FromQuery] ProductSpecParams productParams) { var spec = new ProductsWithTypesAndBrandsSpecification(productParams); var results = await _dataAccess.GetProductByAsync( productParams.PageIndex, productParams.PageSize, productParams.Sort, productParams.BrandId, productParams.TypeId, productParams.Search); var totalItems = results.TotalCount; var products = results.Items; var data = _mapper.Map <IEnumerable <Product>, IEnumerable <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data))); }
public async Task <ActionResult> DeleteProduct(int id) { var spec = new ProductsWithTypesAndBrandsSpecification(id); var product = await _unitOfWork.Repository <Product>().GetEntityWithSpec(spec); foreach (var photo in product.Photos) { if (photo.Id > 18) { _photoService.DeleteFromDisk(photo); } } _unitOfWork.Repository <Product>().Delete(product); var result = await _unitOfWork.Complete(); if (result <= 0) { return(BadRequest(new ApiResponse(400, "Problem deleting product"))); } return(Ok()); }
public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id) { var spec = new ProductsWithTypesAndBrandsSpecification(id); Product product = await _genericProductRepo.GetEntityWithSpec(spec); if (product == null) { // Usa el objeto ApiResponse como response, se envia serializado. return(NotFound(new ApiResponse(404))); } return(_mapper.Map <Product, ProductToReturnDto>(product)); /* return new ProductToReturnDto() * { * Id = product.Id, * Name = product.Name, * Description = product.Description, * Price = product.Price, * PictureUrl = product.PictureUrl, * ProductBrand = product.ProductBrand.Name, * ProductType = product.ProductType.Name * }; */ }
public async Task <IActionResult> GetProduct(int id) { var spec = new ProductsWithTypesAndBrandsSpecification(id); return(Ok(await _productRepository.GetEntityWithSpec(spec))); }
public async Task <IActionResult> GetProducts([FromQuery] ProductParams productParams) { var spec = new ProductsWithTypesAndBrandsSpecification(productParams); return(Ok(await _productRepository.ListAsync(spec))); }
public async Task <ActionResult <Product> > GetProduct(int id) { var spec = new ProductsWithTypesAndBrandsSpecification(id); return(await _productsRepo.GetEntityWithSpec(spec)); }