protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            var text = turnContext.Activity.Text.ToLowerInvariant();

            if (text.Contains("recent"))
            {
                var latestOrders = await _cateringDb.GetRecentOrdersAsync();

                var users = latestOrders.Items;
                await SendHttpToTeams(HttpMethod.Post, MessageFactory.Attachment(new CardResource("RecentOrders.json").AsAttachment(
                                                                                     new
                {
                    users = users.Select(u => new
                    {
                        lunch = new
                        {
                            entre          = String.IsNullOrEmpty(u.Lunch.Entre) ? "N/A" : u.Lunch.Entre,
                            drink          = String.IsNullOrEmpty(u.Lunch.Drink) ? "N/A" : u.Lunch.Drink,
                            orderTimestamp = u.Lunch.OrderTimestamp.ToShortTimeString() + " " + u.Lunch.OrderTimestamp.ToShortDateString()
                        }
                    }).ToList()
                })), turnContext.Activity.Conversation.Id);
            }
            else
            {
                await SendHttpToTeams(HttpMethod.Post, MessageFactory.Attachment(new CardResource("EntreOptions.json").AsAttachment()), turnContext.Activity.Conversation.Id);
            }
        }
Exemplo n.º 2
0
        protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            //await _dialog.RunAsync(turnContext, _userState.CreateProperty<DialogState>(nameof(DialogState)), cancellationToken);
            var text = turnContext.Activity.Text.ToLowerInvariant();

            if (text.Contains("recent"))
            {
                var latestOrders = await _cateringDb.GetRecentOrdersAsync();

                var users = latestOrders.Items;
                await SendHttpToTeams(HttpMethod.Post, MessageFactory.Attachment(new CardResource("RecentOrders.json").AsAttachment(
                                                                                     new
                {
                    users = users.Select(u => new
                    {
                        lunch = new
                        {
                            entre          = String.IsNullOrEmpty(u.Lunch.Entre) ? "N/A" : u.Lunch.Entre,
                            drink          = String.IsNullOrEmpty(u.Lunch.Drink) ? "N/A" : u.Lunch.Drink,
                            orderTimestamp = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(u.Lunch.OrderTimestamp, "Pacific Standard Time").ToString("g")
                        }
                    }).ToList()
                })), turnContext.Activity.Conversation.Id);
            }
            else
            {
                await SendHttpToTeams(HttpMethod.Post, MessageFactory.Attachment(new CardResource("EntreOptions.json").AsAttachment()), turnContext.Activity.Conversation.Id);
            }
        }
Exemplo n.º 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);
        }