Exemple #1
0
        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.Принят
            });
        }
Exemple #2
0
        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.Выполняется;
        }