示例#1
0
        public async Task <string> Add(string rawOrder)
        {
            if (string.IsNullOrEmpty(rawOrder))
            {
                return(null);
            }

            string dayTime = GetDayTime(rawOrder);

            if (string.IsNullOrEmpty(dayTime))
            {
                return(null);
            }

            rawOrder = GetCleanOrder(rawOrder);
            if (string.IsNullOrEmpty(rawOrder))
            {
                return(null);
            }

            List <int> orderList = rawOrder.Split().Select(Int32.Parse).ToList();

            orderList.Sort();

            Order order = new Order {
                DayTime = dayTime
            };
            await _orderRepository.Add(order);

            int lastDishType = 0;

            foreach (int dishType in orderList)
            {
                bool haveError = false;

                Dish dish = await _dishRepository.GetByDishType(dayTime, dishType);

                if (dish == null)
                {
                    dish = await _dishRepository.GetByDishType(dayTime, 99);

                    haveError = true;
                }
                else
                if ((lastDishType == dishType) && !dish.OrderMany)
                {
                    dish = await _dishRepository.GetByDishType(dayTime, 99);

                    haveError = true;
                }

                lastDishType = dishType;

                OrderDish orderDish = new OrderDish();
                orderDish.order = order;
                orderDish.dish  = dish;

                await _orderDishRepository.Add(orderDish);

                if (haveError)
                {
                    break;
                }
                ;
            }

            return(await GetRawOrderLine(order));
        }