public bool SavePromotionDrinkSetting(PromotionDrinkSetting setting) { var isExistSetting = _appDbContext.PromotionDrinkSettings.Any(s => s.PromotionId == setting.PromotionId); if (isExistSetting == false) { _appDbContext.PromotionDrinkSettings.Add(setting); } else { if (setting.PromotionDrinks != null) { foreach (var promotionDrink in setting.PromotionDrinks) { if (promotionDrink.IsDeleted == true) { _appDbContext.Remove(promotionDrink); } else if (promotionDrink.Id <= 0) { _appDbContext.Add(promotionDrink); } else { var oldPromotionDrinkToppingIds = _appDbContext.PromotionDrinkToppings.Where(t => t.PromotionDrinkId == promotionDrink.Id).Select(t => t.Id).ToList(); if (promotionDrink.PromotionDrinkToppings != null) { foreach (var promotionDrinkTopping in promotionDrink.PromotionDrinkToppings) { if (promotionDrinkTopping.Id > 0 && promotionDrinkTopping.Quantity == 0) { _appDbContext.Remove(promotionDrinkTopping); } else if (promotionDrinkTopping.Id == 0) { _appDbContext.Add(promotionDrinkTopping); } else if (promotionDrinkTopping.Id > 0) { oldPromotionDrinkToppingIds.Remove(promotionDrinkTopping.Id); _appDbContext.Update(promotionDrinkTopping); } } } //remove all old items oldPromotionDrinkToppingIds.ForEach(id => { _appDbContext.Remove(_appDbContext.PromotionDrinkToppings.Find(id)); }); _appDbContext.Update(promotionDrink); } } } _appDbContext.Update(setting); } _appDbContext.SaveChanges(); return(true); }
public IActionResult EditPromotionDrinkSetting(PromotionDrinkSetting setting) { var success = _promotionRepository.SavePromotionDrinkSetting(setting); return(Json(new { success })); }