Пример #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);
        }