public void CreateOrder(BindingBooking model) { int maxId = 0; for (int i = 0; i < source.Bookings.Count; ++i) { if (source.Bookings[i].Id > maxId) { maxId = source.Consumer[i].Id; } } source.Bookings.Add(new Booking { Id = maxId + 1, ConsumerId = model.ConsumerId, CommodityId = model.CommodityId, DateCreate = DateTime.Now, Count = model.Count, SumPrice = model.Sum, Status = BookingStatus.Принят }); }
public void TakeOrderInWork(BindingBooking model) { int index = -1; for (int i = 0; i < source.Bookings.Count; ++i) { if (source.Bookings[i].Id == model.Id) { index = i; break; } } if (index == -1) { throw new Exception("Элемент не найден"); } // смотрим по количеству компонентов на складах for (int i = 0; i < source.CommodityIngridients.Count; ++i) { if (source.CommodityIngridients[i].CommodityId == source.Bookings[index].CommodityId) { int countOnStocks = 0; for (int j = 0; j < source.StorageIngridients.Count; ++j) { if (source.StorageIngridients[j].IngridientId == source.CommodityIngridients[i].IngridientId) { countOnStocks += source.StorageIngridients[j].Count; } } if (countOnStocks < source.CommodityIngridients[i].Count * source.Bookings[index].Count) { for (int j = 0; j < source.Ingridients.Count; ++j) { if (source.Ingridients[j].Id == source.CommodityIngridients[i].IngridientId) { throw new Exception("Не достаточно компонента " + source.Ingridients[j].IngredientName + " требуется " + source.CommodityIngridients[i].Count + ", в наличии " + countOnStocks); } } } } } // списываем for (int i = 0; i < source.CommodityIngridients.Count; ++i) { if (source.CommodityIngridients[i].CommodityId == source.Bookings[index].CommodityId) { int countOnStocks = source.CommodityIngridients[i].Count * source.Bookings[index].Count; for (int j = 0; j < source.StorageIngridients.Count; ++j) { if (source.StorageIngridients[j].IngridientId == source.CommodityIngridients[i].IngridientId) { // компонентов на одном слкаде может не хватать if (source.StorageIngridients[j].Count >= countOnStocks) { source.StorageIngridients[j].Count -= countOnStocks; break; } else { countOnStocks -= source.StorageIngridients[j].Count; source.StorageIngridients[j].Count = 0; } } } } } source.Bookings[index].WorkerId = model.WorkerId; source.Bookings[index].DateWork = DateTime.Now; source.Bookings[index].Status = BookingStatus.Выполняется; }