private async Task <DialogTurnResult> MetricPhase2Async(WaterfallStepContext stepContext, CancellationToken cancellationToken) { var createIdeaOptions = (CreateIdeaOptions)stepContext.Options; if (createIdeaOptions.Metric != null) { return(await stepContext.NextAsync(createIdeaOptions.Metric, cancellationToken)); } var tokenResponse = (TokenResponse)stepContext.Result; if (tokenResponse?.Token == null) { await stepContext.Context.SendActivityAsync(MessageFactory.Text("Login was not successful please try again."), cancellationToken); return(await stepContext.ReplaceDialogAsync(nameof(WaterfallDialog), createIdeaOptions, cancellationToken)); } var userProfile = await UserProfileAccessor.GetAsync(stepContext.Context); var service = new MetricsService(tokenResponse.Token, Configuration["BaseSPSiteUrl"]); var metrics = (await service.GetActiveMetricsAsync(userProfile.SelectedTeam.Id)).ToList(); metrics.Add(new Metric { Id = 0, Name = "Other" }); var promptOptions = new PromptOptions { Prompt = MessageFactory.Text("What metric does this idea try to move?"), Choices = metrics.Select(i => new Choice(i.Name)).ToArray() }; return(await stepContext.PromptAsync(nameof(ChoicePrompt), promptOptions, cancellationToken)); }
private async Task SendMetricsCardAsync(IDialogContext context) { var clientContext = await AuthenticationHelper.GetAppOnlySharePointClientContextAsync(); var metricsService = new MetricsService(clientContext); metrics = (await metricsService.GetActiveMetricsAsync(Team.Id)) .Union(new[] { Metric.Other }) .ToArray(); var buttons = metrics .Select((m, i) => new CardAction { Title = $"{i + 1}. {m.Name}", Value = m.Name, Type = ActionTypes.ImBack }) .ToArray(); var heroCard = new HeroCard(text: "What metric does this idea try to move?", buttons: buttons); var message = context.MakeMessage(); message.Attachments.Add(heroCard.ToAttachment()); await context.PostAsync(message); }
private async Task SendCreateIdeaCardAsync(IDialogContext context, IAwaitable <GraphServiceClient> result) { // Get team members var graphServiceClient = await result; var teamService = new TeamService(graphServiceClient); var membersTask = teamService.GetTeamMembersAsync(Team.Id); // Get active metrics var clientContext = await AuthenticationHelper.GetAppOnlySharePointClientContextAsync(); var metricsService = new MetricsService(clientContext); var metrics = (await metricsService.GetActiveMetricsAsync(Team.Id)) .Union(new[] { Metric.Other }) .ToArray(); // Get create idea card var createIdeaCard = GetCreateIdeaCard(metrics, await membersTask); // Send card var message = context.MakeMessage(); message.Attachments.Add(createIdeaCard.ToAttachment()); await context.PostAsync(message); context.Done <object>(null); }