Те же самые фиксики у напитков

This commit is contained in:
Алексей Тихоненков 2024-08-27 04:24:13 +04:00
parent fdbf098a6e
commit b05ca974f1
2 changed files with 20 additions and 16 deletions

View File

@ -74,9 +74,10 @@ namespace DiningRoomDatabaseImplement.Implements
{
return null;
}
Drink.Update(model);
Drink.UpdateComponents(context, model);
context.SaveChanges();
Drink.Update(model);
context.SaveChanges();
Drink.UpdateComponents(context, model);
transaction.Commit();
return Drink.GetViewModel;
}

View File

@ -85,29 +85,32 @@ public class Drink : IDrinkModel
public void UpdateComponents(DiningRoomDatabase context, DrinkBindingModel model)
{
var drinkComponents = context.DrinkComponents.Where(rec => rec.DrinkId == model.Id).ToList();
// Удаляем все текущие записи
if (drinkComponents != null && drinkComponents.Count > 0)
{ // удалили те, которых нет в модели
context.DrinkComponents.RemoveRange(drinkComponents.Where(rec => !model.DrinkComponents.ContainsKey(rec.ComponentId)));
context.SaveChanges();
// обновили количество у существующих записей
foreach (var updateComponent in drinkComponents)
{
updateComponent.Count = model.DrinkComponents[updateComponent.ComponentId].Item2;
model.DrinkComponents.Remove(updateComponent.ComponentId);
}
{
context.DrinkComponents.RemoveRange(drinkComponents);
context.SaveChanges();
}
var drink = context.Drinks.First(x => x.Id == Id);
foreach (var pc in model.DrinkComponents)
// Получаем продукт по его Id
var drink = context.Drinks.First(x => x.Id == model.Id);
// Добавляем новые записи ProductComponents из модели
foreach (var dc in model.DrinkComponents)
{
context.DrinkComponents.Add(new DrinkComponent
{
Drink = drink,
Component = context.Components.First(x => x.Id == pc.Key),
Count = pc.Value.Item2
Component = context.Components.First(x => x.Id == dc.Key),
Count = dc.Value.Item2
});
context.SaveChanges();
}
// Сохраняем изменения
context.SaveChanges();
// Сбрасываем кэш связанных компонентов, если требуется
_drinkComponents = null;
}
}