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 }) });
        }