Пример #1
0
        private string BuildResultOrderMessage(string[] dishesTypesOrderIds, TimeOfDay timeOfDayOrder)
        {
            MenuItem availableMenuItem = null;
            Dish     dish         = null;
            string   resultOrder  = "";
            string   errorMessage = "";

            var dishesTypesOrderIdsGroup = dishesTypesOrderIds.OrderBy(x => x).GroupBy(x => x);

            foreach (var dishTypeOrderIdGroupItem in dishesTypesOrderIdsGroup)
            {
                DishType?currentDishType = OrderingInputConverter.GetToDishType(dishTypeOrderIdGroupItem.Key);
                availableMenuItem = menu.GetMenuItem(timeOfDayOrder, currentDishType.Value);

                int dishRepetition = dishTypeOrderIdGroupItem.Count();

                if (!IsValidDishType(currentDishType))
                {
                    errorMessage = GetErrorMessage();
                    break;
                }

                if (!IsMenuItemAvailable(availableMenuItem))
                {
                    errorMessage = GetErrorMessage();
                    break;
                }
                dish = availableMenuItem.Dish;

                if (dishRepetition == 1)
                {
                    resultOrder += GetValidMessage(dish.DishTypeTitle);
                    continue;
                }
                else
                {
                    if (availableMenuItem.AllowMultipleOrders)
                    {
                        resultOrder += GetValidMessage(dish.DishTypeTitle, dishRepetition);
                    }
                    else
                    {
                        errorMessage = GetErrorMessage();
                        break;
                    }
                }
            }
            resultOrder = resultOrder + errorMessage;
            resultOrder = resultOrder.Trim().TrimEnd(DISHES_CHAR_SEPARATOR);
            return(resultOrder);
        }
Пример #2
0
        public string Order(string orderInput)
        {
            string[] inputArray = orderInput.Split(',').ToArray();

            string    timeOfDay      = inputArray[0];
            TimeOfDay?timeOfDayOrder = OrderingInputConverter.GetTimeOfDay(timeOfDay);

            if (timeOfDayOrder == null)
            {
                return(GetErrorMessage().Trim().TrimEnd(DISHES_CHAR_SEPARATOR));
            }

            string[] dishesTypesOrderIds = GetOnlyDishesTypes(inputArray);

            string resultOrder = BuildResultOrderMessage(dishesTypesOrderIds, timeOfDayOrder.Value);

            return(resultOrder);
        }