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); }
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); }
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); }