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