public async Task <IActionResult> UpdateProduct(Guid productId, ProductForUpdate productToUpdateDto) { var productFormRepo = await _onlineShoppingRepo.GetProduct(productId); _mapper.Map(productToUpdateDto, productFormRepo); if (await _onlineShoppingRepo.SaveChanges()) { return(NoContent()); } throw new Exception($"updaing Product {productId} is failed"); }
public async Task <ActionResult <Product> > UpdateAsync(string id, [FromForm] ProductForUpdate model) { if (id != model.Id) { return(BadRequest(new ErrorResponse(HttpStatusCode.BadRequest, "Id Invalid"))); } if (!ModelState.IsValid) { var errors = ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage).ToList(); return(BadRequest(new ErrorResponse(HttpStatusCode.BadRequest, "Validation error", errors))); } //var keyvalue = Request.Form.ToDictionary(x => x.Key, x => x.Value.ToString())["photos"].ToString(); //model.Photos = JsonConvert.DeserializeObject<ProductPhotoDTO[]>(keyvalue); var result = await _productService.UpdateProductAsync(model); return(result.Succeed ? Ok(result.Value) : BadRequest(new ErrorResponse(HttpStatusCode.BadRequest, "Update fail", result.Errors))); }
public async Task <ProcessResult <ProductDTO> > UpdateProductAsync(ProductForUpdate model) { async Task <ProductDTO> action() { string error = ""; var product = await _repoWrapper.Product.FindProductByIdAsync(model.Id); if (product == null) { throw new InvalidOperationException("Id is not exist"); } _ = _mapper.Map(model, product); product.ModifyBy = CurrentUser.UserName; product.ModifyDate = DateTime.UtcNow; // add image file if (model.Files != null) { var photos = new List <ProductPhoto>(); for (int i = 0; i < model.Files.Length; i++) { var resultUpload = await _cloudDinaryService.AddAsync(model.Files[i]); if (resultUpload.Error != null) { error = resultUpload.Error.Message; break; } photos.Add(new ProductPhoto { Id = Guid.NewGuid(), ProductId = product.Id, PublicId = resultUpload.PublicId, Url = resultUpload.SecureUrl.AbsoluteUri, IsMain = false, CreateBy = CurrentUser.UserName, CreateDate = DateTime.UtcNow }); } if (error.Length > 0) { photos.ForEach(async x => await DeletePhotoFromCloudinary(x.PublicId)); throw new InvalidOperationException(error); } if (product.ProductPhotos.Count() == 0) { photos[0].IsMain = true; product.ProductPhotos = photos; } else { photos.ForEach(item => product.ProductPhotos.Add(item)); } } _repoWrapper.Product.Update(product); return(await _repoWrapper.SaveAsync() > 0 ? _mapper.Map <ProductDTO>(product) : throw new InvalidOperationException("Save fail")); } return(await Process.RunAsync(action)); }