public async Task <IActionResult> NewPost(ProductsModel productsModel) { string AccountID = _sessionManager.LoginAccountId; //Set ViewBags data for form return data ViewBag.CurrencyList = functions.GetCurrencyList(); ViewBag.CategoryList = functions.GetCategoryList(); ViewBag.StoresList = functions.GetStoresList(_sessionManager.LoginAccountId); if (ModelState.IsValid) { try { //Set other product data productsModel.ProductID = functions.GetUinqueId(); productsModel.AccountID = _sessionManager.LoginAccountId; productsModel.UniqueProductName = functions.GenerateUniqueProductName(productsModel.ProductName); productsModel.FeaturedPost = (string.IsNullOrEmpty(HttpContext.Request.Form["FeaturedPost"])) ? 0 : functions.Int32Parse(HttpContext.Request.Form["FeaturedPost"]); productsModel.ApproveStatus = _systemConfiguration.defaultProductApproveStatus; productsModel.UpdatedBy = _sessionManager.LoginUsername; productsModel.UpdateDate = DateTime.Now; productsModel.DateAdded = DateTime.Now; if (!string.IsNullOrEmpty(HttpContext.Request.Form["EditPost"]) && HttpContext.Request.Form["EditPost"] == "True") { //update post productsModel.ID = functions.Int32Parse(HttpContext.Request.Form["ID"]); productsModel.ProductID = HttpContext.Request.Form["ProductID"]; _context.Update(productsModel); await _context.SaveChangesAsync(); //remove current post images functions.DeleteProductImages(AccountID, productsModel.ProductID); functions.DeleteTableData("ProductImages", "ProductID", productsModel.ProductID, _systemConfiguration.connectionString); } else { //add post _context.Add(productsModel); await _context.SaveChangesAsync(); //add product stock functions.AddTableData("ProductStock", "ProductID", _systemConfiguration.defaultProductStock.ToString(), _systemConfiguration.connectionString); } //Image watermark from config file string TextWaterMark = _systemConfiguration.textWaterMark; string ImageWaterMark = _systemConfiguration.imageWatermark; int ImageHeight = _systemConfiguration.uploadImageDefaultHeight; int ImageWidth = _systemConfiguration.uploadImageDefaultWidth; //Get account directory name var DirectoryName = functions.GetAccountData(_sessionManager.LoginAccountId, "DirectoryName"); var SavePath = @"wwwroot\\files\\" + DirectoryName + "\\products"; int TotalUploads = 0; //Loop through files and upload foreach (var file in Request.Form.Files) { if (file.Length > 0) { using (var stream = file.OpenReadStream()) { using (var img = Image.FromStream(stream)) { string NewFileName = functions.RandomString(4) + "-" + file.FileName; if (!string.IsNullOrEmpty(ImageWaterMark)) { img.ScaleAndCrop(ImageWidth, ImageHeight) .AddImageWatermark(@"wwwroot\files\images\" + ImageWaterMark) .AddTextWatermark(TextWaterMark) .SaveAs(SavePath + "\\" + NewFileName); } else { try { img.ScaleAndCrop(ImageWidth, ImageHeight) .AddTextWatermark(TextWaterMark) .SaveAs(SavePath + "\\" + NewFileName); } catch (Exception) { //exclude watermark img.ScaleAndCrop(ImageWidth, ImageHeight) .SaveAs(SavePath + "\\" + NewFileName); } } //Add image to ProductImages table functions.AddProductImages(productsModel.ProductID, NewFileName, null); TotalUploads++; } } } } //Add product video (if added) var ProductVideo = Request.Form["ProductVideo"]; if (!string.IsNullOrEmpty(ProductVideo.ToString())) { string NewFileName = functions.RandomString(4) + "-" + ProductVideo; //Add to ProductVideo table functions.AddProductVideo(productsModel.ProductID, NewFileName, null); } TempData["SuccessMessage"] = @$ "Product added successfully. {TotalUploads} images uploaded. <br/> Add product details here: <a href='/Account/AddProductColors/{productsModel.ProductID}' class='mr-2'>Product Colors</a> <a href='/Account/AddProductSizes/{productsModel.ProductID}'>Product Sizes</a>"; return(RedirectToAction("ManagePosts", "Account")); }