public void PopulateSelectedCategoriesList(Bostan_Miruna_ProiectContext context, Product product)
        {
            var allCategories     = context.Category;
            var productCategories = new HashSet <int>(
                product.ProductCategories.Select(c => c.ProductID));

            SelectedCategoriesList = new List <SelectedCategory>();

            foreach (var category in allCategories)
            {
                SelectedCategoriesList.Add(new SelectedCategory
                {
                    CategoryID = category.ID,
                    Name       = category.CategoryName,
                    Selected   = productCategories.Contains(category.ID)
                });
            }
        }
        public void UpdatePrductCategories(Bostan_Miruna_ProiectContext context, string[] selectedCategories, Product product)
        {
            if (selectedCategories == null)
            {
                product.ProductCategories = new List <ProductCategory>();
                return;
            }

            var selectedCategoriesSet = new HashSet <string>(selectedCategories);
            var productCategories     = new HashSet <int>(
                product.ProductCategories.Select(c => c.Category.ID));

            foreach (var category in context.Category)
            {
                if (selectedCategoriesSet.Contains(category.ID.ToString()))
                {
                    if (!productCategories.Contains(category.ID))
                    {
                        product.ProductCategories.Add(
                            new ProductCategory
                        {
                            ProductID  = product.ID,
                            CategoryID = category.ID
                        }
                            );
                    }
                }
                else
                {
                    if (productCategories.Contains(category.ID))
                    {
                        ProductCategory toRemove = product.ProductCategories.SingleOrDefault(i => i.CategoryID == category.ID);
                        context.Remove(toRemove);
                    }
                }
            }
        }