public async Task <IActionResult> EditFilters(int id, [Bind("Id, FilterAddititons")] ProductExtViewModel product) { if (id != product.Id) { return(NotFound()); } List <Value> oldFilterValues = await _context.Values.Where(p => p.ProductId == id).ToListAsync(); if (oldFilterValues.Count != 0) { foreach (var item in product.FilterAddititons) { if (item.IsChecked) { if (oldFilterValues.FirstOrDefault(fv => fv.FilterAddId == item.Id && fv.ProductId == product.Id) == null) { _context.Update(new Value { FilterAddId = item.Id, ProductId = product.Id }); } } else { if (oldFilterValues.FirstOrDefault(fv => fv.FilterAddId == item.Id && fv.ProductId == product.Id) != null) { _context.Remove(oldFilterValues.First(fv => fv.FilterAddId == item.Id && fv.ProductId == product.Id)); } } } } else { foreach (var item in product.FilterAddititons) { if (item.IsChecked) { _context.Update(new Value { FilterAddId = item.Id, ProductId = product.Id }); } } } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
//привязка доп фильтров к продукту public async Task <IActionResult> EditFilters(int?id) { if (id == null) { return(NotFound()); } var productsModel = await _context.Products.FindAsync(id); List <Filter> filters = await _context.Filters.ToListAsync(); List <FilterAddititon> filterAddititons = await _context.FilterAddititons.ToListAsync(); List <Value> filterValues = await _context.Values.Where(p => p.ProductId == id).ToListAsync(); if (filterValues.Count != 0) { foreach (FilterAddititon fa in filterAddititons) { if (filterValues.FirstOrDefault(fv => fv.FilterAddId == fa.Id) != null) { fa.IsChecked = true; } fa.Filter = filters.Find(f => f.Id == fa.FilterId); } } filterAddititons = filterAddititons.OrderBy(f => f.FilterId).ToList(); ProductExtViewModel tour = new ProductExtViewModel { Id = productsModel.Id, Title = productsModel.Title, FilterAddititons = filterAddititons }; if (productsModel == null) { return(NotFound()); } return(View(tour)); }