public void CreateChoice(ChoiceBindingModel model) { int maxId = 0; for (int i = 0; i < source.Choices.Count; ++i) { if (source.Choices[i].Id > maxId) { maxId = source.Customers[i].Id; } } source.Choices.Add(new Choice { Id = maxId + 1, CustomerId = model.CustomerId, MenuId = model.MenuId, DateCreate = DateTime.Now, Count = model.Count, Sum = model.Sum, Status = ChoiceStatus.Принят }); }
public void TakeChoiceInWork(ChoiceBindingModel model) { int index = -1; for (int i = 0; i < source.Choices.Count; ++i) { if (source.Choices[i].Id == model.Id) { index = i; break; } } if (index == -1) { throw new Exception("Элемент не найден"); } // смотрим по количеству компонентов на складах for (int i = 0; i < source.MenuDishs.Count; ++i) { if (source.MenuDishs[i].MenuId == source.Choices[index].MenuId) { int countOnKitchens = 0; for (int j = 0; j < source.KitchenDishs.Count; ++j) { if (source.KitchenDishs[j].DishId == source.MenuDishs[i].DishId) { countOnKitchens += source.KitchenDishs[j].Count; } } if (countOnKitchens < source.MenuDishs[i].Count) { for (int j = 0; j < source.Dishs.Count; ++j) { if (source.Dishs[j].Id == source.MenuDishs[i].DishId) { throw new Exception("Не достаточно компонента " + source.Dishs[j].DishName + " требуется " + source.MenuDishs[i].Count + ", в наличии " + countOnKitchens); } } } } } // списываем for (int i = 0; i < source.MenuDishs.Count; ++i) { if (source.MenuDishs[i].MenuId == source.Choices[index].MenuId) { int countOnKitchens = source.MenuDishs[i].Count; for (int j = 0; j < source.KitchenDishs.Count; ++j) { if (source.KitchenDishs[j].DishId == source.KitchenDishs[i].DishId) { // компонентов на одном слкаде может не хватать if (source.KitchenDishs[j].Count >= countOnKitchens) { source.KitchenDishs[j].Count -= countOnKitchens; break; } else { countOnKitchens -= source.KitchenDishs[j].Count; source.KitchenDishs[j].Count = 0; } } } } } source.Choices[index].ChefId = model.ChefId; source.Choices[index].DateImplement = DateTime.Now; source.Choices[index].Status = ChoiceStatus.Готовится; }