public JsonResult FillQuantity(int sizeId, int id) { ProductSizeCount productSizeCount = db.ProductSizeCounts.Where(psc => psc.ProductId == id && psc.SizeId == sizeId).FirstOrDefault(); if (productSizeCount == null) { return(Json(new { status = 404 })); } int count = productSizeCount.Count; return(Json(new { status = 200, data = count })); }
public IActionResult Add(ProductModel model) { if (ModelState.IsValid) { if (model.SubCategoryId != 0 && model.CategoryId != 0) { #region Product Static Properties Add Product product = new Product(); product.CreatedDate = DateTime.Now; product.DiscountPercent = Convert.ToInt32(model.DiscountPercent); product.Price = Math.Ceiling(Convert.ToDecimal(model.Price)); product.SubcategoryId = model.SubCategoryId; for (int i = 0; i < model.Count.Count; i++) { product.Quantity += Convert.ToInt32(model.Count[i]); } //product.Quantity = Convert.ToInt32(model.Quantity); db.Products.Add(product); #endregion List <Language> languages = db.Languages.ToList(); if (Checker.CheckList(model.Names) && Checker.CheckList(model.Sizes) && Checker.CheckList(model.Count) && Checker.CheckList(model.Descriptions) && Checker.CheckList(model.Photos)) { #region Product Language Add for (int i = 0; i < languages.Count; i++) { ProductLanguage productLanguage = new ProductLanguage(); productLanguage.LanguageId = languages[i].Id; productLanguage.Name = model.Names[i]; productLanguage.ProductId = product.Id; productLanguage.Description = model.Descriptions[i]; db.ProductLanguages.Add(productLanguage); } #endregion #region Product Size Add for (int i = 0; i < model.Sizes.Count; i++) { ProductSizeCount productSizeCount = new ProductSizeCount(); productSizeCount.ProductId = product.Id; productSizeCount.SizeId = model.Sizes[i]; productSizeCount.Count = Convert.ToInt32(model.Count[i]); db.ProductSizeCounts.Add(productSizeCount); } #endregion //#region Product Color Add //for (int i = 0; i < model.Colors.Count; i++) //{ // ProductColor productColor = new ProductColor(); // productColor.ProductId = product.Id; // productColor.ColorId = model.Colors[i]; // db.ProductColors.Add(productColor); //} //#endregion #region Product Photo Add for (int i = 0; i < model.Photos.Count; i++) { ProductPhoto productPhoto = new ProductPhoto(); productPhoto.Product = product; productPhoto.PhotoPath = model.Photos[i]; db.ProductPhotos.Add(productPhoto); } #endregion db.SaveChanges(); HttpContext.Session.SetString("productId", product.Id.ToString()); return(RedirectToAction(nameof(Index))); } else { ModelState.AddModelError("", "Category or Subcategory not selected"); return(RedirectToAction(nameof(Add))); } } else { ModelState.AddModelError("", "Make sure that you fill all required blanks!"); return(RedirectToAction(nameof(Add))); } } else { ModelState.AddModelError("", "Make sure that you fill all required blanks!"); return(RedirectToAction(nameof(Add))); } }
public async Task <IActionResult> Edit(ProductModel model) { if (ModelState.IsValid) { if (model.SubCategoryId != 0 && model.CategoryId != 0) { #region Product Static Properties Edit Product product = db.Products.Where(p => p.Id == model.ProductId).FirstOrDefault(); product.Price = Math.Ceiling(Convert.ToDecimal(model.Price)); product.SubcategoryId = model.SubCategoryId; product.Quantity = 0; product.DiscountPercent = Convert.ToInt32(model.DiscountPercent); #endregion List <ProductLanguage> productLanguages = await db.ProductLanguages .Where(pl => pl.ProductId == product.Id) .ToListAsync(); List <ProductSizeCount> productSizeCounts = await db.ProductSizeCounts .Where(ps => ps.ProductId == product.Id) .Include(ps => ps.Size) .ToListAsync(); List <ProductColor> productColors = await db.ProductColors .Where(pc => pc.ProductId == product.Id) .Include(pc => pc.Color) .ToListAsync(); List <ProductPhoto> productPhotos = await db.ProductPhotos.Where(pp => pp.Product == product).ToListAsync(); if (Checker.CheckList(model.Names) && Checker.CheckList(model.Sizes) && Checker.CheckList(model.Count) && Checker.CheckList(model.Descriptions)) { #region Product Language Edit //Product Language Edit for (int i = 0; i < productLanguages.Count; i++) { productLanguages[i].Name = model.Names[i]; productLanguages[i].Description = model.Descriptions[i]; } #endregion #region Product Size Edit //Product Size Edit if (model.Sizes.Count > productSizeCounts.Count) { for (int i = 0; i < model.Sizes.Count; i++) { if (i + 1 > productSizeCounts.Count) { ProductSizeCount productSizeCount = new ProductSizeCount(); productSizeCount.ProductId = product.Id; productSizeCount.SizeId = model.Sizes[i]; productSizeCount.Count = Convert.ToInt32(model.Count[i]); product.Quantity += Convert.ToInt32(model.Count[i]); db.ProductSizeCounts.Add(productSizeCount); } else { productSizeCounts[i].SizeId = model.Sizes[i]; } } } else if (model.Sizes.Count == productSizeCounts.Count) { for (int i = 0; i < model.Sizes.Count; i++) { productSizeCounts[i].SizeId = model.Sizes[i]; productSizeCounts[i].Count = Convert.ToInt32(model.Count[i]); product.Quantity += Convert.ToInt32(model.Count[i]); } } else { for (int i = 0; i < productSizeCounts.Count; i++) { if (i + 1 <= model.Sizes.Count) { productSizeCounts[i].SizeId = model.Sizes[i]; productSizeCounts[i].Count = Convert.ToInt32(model.Count[i]); product.Quantity += Convert.ToInt32(model.Count[i]); } else { ProductSizeCount productSizeCount = db.ProductSizeCounts .Where(ps => ps.SizeId == productSizeCounts[i].SizeId) .FirstOrDefault(); db.ProductSizeCounts.Remove(productSizeCount); } } } #endregion #region Photo Edit if (model.DeletePhotos != null) { //then we have to delete old photos foreach (var deletePhoto in model.DeletePhotos) { ProductPhoto productPhoto = await db.ProductPhotos .Where(pp => pp.Product == product && pp.PhotoPath == deletePhoto) .FirstOrDefaultAsync(); if (productPhoto != null) { db.ProductPhotos.Remove(productPhoto); } } } if (model.Photos != null) { //then we have to add new photos foreach (var photo in model.Photos) { if (photo != null) { if (!productPhotos.Select(p => p.PhotoPath).Contains(photo)) { ProductPhoto productPhoto = new ProductPhoto(); productPhoto.Product = product; productPhoto.PhotoPath = photo; db.ProductPhotos.Add(productPhoto); } } } } #endregion await db.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } else { ModelState.AddModelError("", "Make Sure that you fill al required blanks!"); return(RedirectToAction(nameof(Edit))); } } else { ModelState.AddModelError("", "Category or Subcategory not selected"); return(RedirectToAction(nameof(Edit))); } } else { ModelState.AddModelError("", "Make Sure that you fill al required blanks!"); return(RedirectToAction(nameof(Edit))); } }