public async Task <ActionResult> DeleteProductPhoto(int id, int photoId) { var spec = new Products_w_Types_Brands_Spec(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"))); } _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 <ProductToReturnDto> > AddProductPhoto(int id, [FromForm] ProductPhotoDto photoDto) { var spec = new Products_w_Types_Brands_Spec(id); var product = await _unitOfWork.Repository <Product>().GetEntityWithSpec(spec); if (photoDto.Photo.Length > 0) { var photo = await _photoService.SaveToDiskAsync(photoDto.Photo); if (photo != null) { product.AddPhoto(photo.PictureUrl, photo.FileName); _unitOfWork.Repository <Product>().Update(product); var result = await _unitOfWork.Complete(); if (result <= 0) { return(BadRequest(new ApiResponse(400, "Problem adding photo product"))); } } else { return(BadRequest(new ApiResponse(400, "problem saving photo to disk"))); } } return(_mapper.Map <Product, ProductToReturnDto>(product)); }
public async Task <ActionResult <ProductToReturnDto> > GetProduct(int id) { var spec = new Products_w_Types_Brands_Spec(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 <Pagination <ProductToReturnDto> > > GetProducts( [FromQuery] ProductSpecParams productParams) { var spec = new Products_w_Types_Brands_Spec(productParams); var countSpec = new Product_w_FiltersForCountSpec(productParams); var totalItems = await _unitOfWork.Repository <Product>().CountAsync(countSpec); var products = await _unitOfWork.Repository <Product>().ListAllAsync(spec); var data = _mapper .Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDto> >(products); return(Ok(new Pagination <ProductToReturnDto>(productParams.PageIndex, productParams.PageSize, totalItems, data))); }
public async Task <ActionResult <ProductToReturnDto> > SetMainPhoto(int id, int photoId) { var spec = new Products_w_Types_Brands_Spec(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> DeleteProduct(int id) { var spec = new Products_w_Types_Brands_Spec(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()); }