Exemple #1
0
        private AdaptiveCardInvokeResponse ProcessOrderAction(User user, CardOptions cardOptions)
        {
            if (cardOptions.option != null && (Card)cardOptions.currentCard == Card.Entre)
            {
                user.Lunch.Entre = cardOptions.option;
            }
            else if (cardOptions.option != null && (Card)cardOptions.currentCard == Card.Drink)
            {
                user.Lunch.Drink = cardOptions.option;
            }

            AdaptiveCardInvokeResponse responseBody = null;

            switch ((Card)cardOptions.nextCardToSend)
            {
            case Card.Drink:
                responseBody = DrinkCardResponse();
                break;

            case Card.Entre:
                responseBody = EntreCardResponse();
                break;

            case Card.Review:
                responseBody = ReviewCardResponse(user);
                break;

            case Card.ReviewAll:
                var latestOrders = _lunchRepository.GetLatestOrders();
                // TODO: show all the orders
                break;

            case Card.Confirmation:
                _lunchRepository.UpsertOrder(user);
                responseBody = ConfirmationCardResponse();
                break;

            default:
                throw new NotImplementedException("No card matches that nextCardToSend.");
            }

            return(responseBody);
        }
Exemple #2
0
        private async Task <AdaptiveCardInvokeResponse> ProcessErrAction(User user, CardOptions cardOptions)
        {
            AdaptiveCardInvokeResponse responseBody = null;

            switch ((Card)cardOptions.nextCardToSend)
            {
            case Card.OkWithString:
                responseBody = OkWithMessageResponse();
                break;

            case Card.OkWithCard:
                responseBody = OkWithCardResponse();
                break;

            case Card.LoginRequest:
                responseBody = LoginRequestResponse();
                break;

            case Card.ThrottleWarning:
                responseBody = ThrottleWarningResponse();
                break;

            case Card.Teapot:
                responseBody = TeapotResponse();
                break;

            case Card.Error:
                responseBody = BotErrorResponse();
                break;

            default:
                throw new NotImplementedException("No card matches that nextCardToSend.");
            }

            return(responseBody);
        }
Exemple #3
0
        private async Task <AdaptiveCardInvokeResponse> ProcessOrderAction(User user, CardOptions cardOptions)
        {
            if ((Card)cardOptions.currentCard == Card.Entre)
            {
                if (!string.IsNullOrEmpty(cardOptions.custom))
                {
                    if (!await _cateringRecognizer.ValidateEntre(cardOptions.custom))
                    {
                        return(RedoEntreCardResponse(new Lunch()
                        {
                            Entre = cardOptions.custom
                        }));
                    }
                    cardOptions.option = cardOptions.custom;
                }

                user.Lunch.Entre = cardOptions.option;
            }
            else if ((Card)cardOptions.currentCard == Card.Drink)
            {
                if (!string.IsNullOrEmpty(cardOptions.custom))
                {
                    if (!await _cateringRecognizer.ValidateDrink(cardOptions.custom))
                    {
                        return(RedoDrinkCardResponse(new Lunch()
                        {
                            Drink = cardOptions.custom
                        }));
                    }

                    cardOptions.option = cardOptions.custom;
                }

                user.Lunch.Drink = cardOptions.option;
            }

            AdaptiveCardInvokeResponse responseBody = null;

            switch ((Card)cardOptions.nextCardToSend)
            {
            case Card.Drink:
                responseBody = DrinkCardResponse();
                break;

            case Card.Entre:
                responseBody = EntreCardResponse();
                break;

            case Card.Review:
                responseBody = ReviewCardResponse(user);
                break;

            case Card.ReviewAll:
                var latestOrders = await _cateringDb.GetRecentOrdersAsync();

                responseBody = RecentOrdersCardResponse(latestOrders.Items);
                break;

            case Card.Confirmation:
                await _cateringDb.UpsertOrderAsync(user);

                responseBody = ConfirmationCardResponse();
                break;

            default:
                throw new NotImplementedException("No card matches that nextCardToSend.");
            }

            return(responseBody);
        }