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
            }));
        }
Exemple #2
0
        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)));
            }
        }
Exemple #3
0
        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)));
            }
        }