public IActionResult NewProductImage(int productId) { SaveProductImageDto saveProductImageResource = new SaveProductImageDto(); saveProductImageResource.ProductId = productId; return(View(saveProductImageResource)); }
public async Task <IActionResult> NewProductImage(SaveProductImageDto saveProductImageResource, int productId) { if (ModelState.IsValid && saveProductImageResource.ProductImageFile != null) { var errors = ModelState.Where(x => x.Value.Errors.Any()).Select(x => new KeyValuePair <string, string>(x.Key, x.Value.Errors.FirstOrDefault().ErrorMessage)).ToList(); var uploadedFileExtension = Path.GetExtension(saveProductImageResource.ProductImageFile.FileName).ToLower(); var acceptedFileExtensions = new List <string>() { ".png", ".jpg", ".bmp", ".jpeg" }; //if it is not in defined file types if (!acceptedFileExtensions.Contains(uploadedFileExtension)) { errors.Add(new KeyValuePair <string, string>("FilePath", "Please select jpg, png or bmp file format")); return(RedirectToAction("ProductDetail", new { Id = productId })); } var product = await _productService.GetProductById(saveProductImageResource.ProductId); if (product != null) { var productImageList = await _productService.GetProductImageListByProductIdIncludeDeleted(product.Id); var imageNumber = productImageList.Count() + 1; var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "ProductImages", (product.Title) + "." + (imageNumber) + saveProductImageResource.ProductImageFile.FileName.Replace(" ", "_") + ""); using (var stream = new FileStream(path, FileMode.Create)) { saveProductImageResource.ProductImageFile.CopyTo(stream); } saveProductImageResource.ImageUrl = path; saveProductImageResource.FileName = (product.Title) + "." + (imageNumber) + saveProductImageResource.ProductImageFile.FileName.Replace(" ", "_") + ""; var productImage = _mapper.Map <SaveProductImageDto, ProductImage>(saveProductImageResource); var checkErrors = await _productService.AddProductImage(productImage, saveProductImageResource.ProductId); if (checkErrors != null) { return(RedirectToAction("ProductDetail", new { Id = productId })); //return Json(new { status= true, message = "Image was successfully added!", url = Url.Action("ProductDetail", new { Id = productId }) }); } else { return(RedirectToAction("ProductDetail", new { Id = productId })); //return Json(new { status = false, message = "Image couldn't be added!", url = Url.Action("ProductDetail", new { Id = productId }) }); } } } return(RedirectToAction("ProductDetail", new { Id = productId })); //return Json(new { status = false, message = "Image couldn't be added!", url = Url.Action("ProductDetail", new { Id = productId }) }); }