Exemplo n.º 1
0
        public void CreateOrder(OrderBindModel model)
        {
            int maxId = 0;

            for (int i = 0; i < source.Orders.Count; ++i)
            {
                if (source.Orders[i].ID > maxId)
                {
                    maxId = source.Customers[i].ID;
                }
            }
            source.Orders.Add(new Order
            {
                ID         = maxId + 1,
                CustomerID = model.CustomerID,
                SushiID    = model.SushiID,
                DateCreate = DateTime.Now,
                Count      = model.Count,
                Sum        = model.Sum,
                Status     = OrderStatus.Принят
            });
        }
Exemplo n.º 2
0
        public void TakeOrderInWork(OrderBindModel model)
        {
            int index = -1;

            for (int i = 0; i < source.Orders.Count; ++i)
            {
                if (source.Orders[i].ID == model.ID)
                {
                    index = i;
                    break;
                }
            }
            if (index == -1)
            {
                throw new Exception("Элемент не найден");
            }
            for (int i = 0; i < source.ElementRequirements.Count; ++i)
            {
                if (source.ElementRequirements[i].SushiID == source.Orders[index].SushiID)
                {
                    int countOnStorages = 0;
                    for (int j = 0; j < source.ElementStorages.Count; ++j)
                    {
                        if (source.ElementStorages[j].ElementID == source.ElementRequirements[i].ElementID)
                        {
                            countOnStorages += source.ElementStorages[j].Count;
                        }
                    }
                    if (countOnStorages < source.ElementRequirements[i].Count * source.Orders[index].Count)
                    {
                        for (int j = 0; j < source.Elements.Count; ++j)
                        {
                            if (source.Elements[j].ID == source.ElementRequirements[i].ElementID)
                            {
                                throw new Exception("Не достаточно компонента " + source.Elements[j].ElementName +
                                                    " требуется " + source.ElementRequirements[i].Count * source.Orders.Count + ", в наличии " + countOnStorages);
                            }
                        }
                    }
                }
            }
            for (int i = 0; i < source.ElementRequirements.Count; ++i)
            {
                if (source.ElementRequirements[i].SushiID == source.Orders[index].SushiID)
                {
                    int countOnStorages = source.ElementRequirements[i].Count * source.Orders[index].Count;
                    for (int j = 0; j < source.ElementStorages.Count; ++j)
                    {
                        if (source.ElementStorages[j].ElementID == source.ElementRequirements[i].ElementID)
                        {
                            if (source.ElementStorages[j].Count >= countOnStorages)
                            {
                                source.ElementStorages[j].Count -= countOnStorages;
                                break;
                            }
                            else
                            {
                                countOnStorages -= source.ElementStorages[j].Count;
                                source.ElementStorages[j].Count = 0;
                            }
                        }
                    }
                }
            }
            source.Orders[index].ExecutorID    = model.ExecutorID;
            source.Orders[index].DateImplement = DateTime.Now;
            source.Orders[index].Status        = OrderStatus.Выполняется;
        }