public async Task <bool> SetUserConfigurationsAsync( string userId, BitBucketConversationVariables bitBucketConversationVariables) { if (GetUserConfigurationsAsync(userId) != null) { await MyStorage.DeleteAsync(new[] { userId }); } IDictionary <string, object> defaultConfig = new Dictionary <string, object>(); defaultConfig.Add(userId, JObject.Parse(JsonConvert.SerializeObject(bitBucketConversationVariables))); await MyStorage.WriteAsync(defaultConfig); return(true); }
public CheckActivePullRequestsDialog(IInnerBitbucketClient bitbucketClient, BitBucketConversationVariables bitBucketConversationVariables) : base(nameof(CheckActivePullRequestsDialog)) { _bitbucketClient = bitbucketClient; BitBucketConversationVariables = bitBucketConversationVariables; AddDialog(new TextPrompt(nameof(TextPrompt))); AddDialog(new ConfirmPrompt(nameof(ConfirmPrompt))); // AddDialog(new DateResolverDialog()); AddDialog(new WaterfallDialog(nameof(WaterfallDialog), new WaterfallStep[] { FetchPullRequests, FinalStepAsync })); // The initial child Dialog to run. InitialDialogId = nameof(WaterfallDialog); }
private async Task <DialogTurnResult> FetchPullRequests(WaterfallStepContext stepContext, CancellationToken cancellationToken) { BitBucketConversationVariables = await GlobalVariablesService.GetBitBucketConversationVariables(stepContext.Context.Activity.Recipient.Id); if (BitBucketConversationVariables?.GlobalVariables == null) { await stepContext.Context.SendActivityAsync("No configuration found", cancellationToken : cancellationToken); return(await stepContext.NextAsync(null, cancellationToken)); } await stepContext.Context.SendActivityAsync("Gathering info...", cancellationToken : cancellationToken); bool foundAnyPullRequest = false; foreach (var globalVariable in BitBucketConversationVariables.GlobalVariables) { foreach (var project in globalVariable.Projects) { foreach (var repositoryName in project.RepositoryNames) { var pullRequestList = new List <PullRequest>(); try { pullRequestList.AddRange((await _bitbucketClient.FetchActivePullRequests( globalVariable.BaseUrl, project.ProjectName, repositoryName, globalVariable.PersonalAccessToken, globalVariable.Password, globalVariable.UserName)).FindAll(x => x.Open)); if (pullRequestList.Count > 0) { foundAnyPullRequest = true; } } catch (Exception e) { await stepContext.Context.SendActivityAsync( "Error was thrown during fetching data, maybe there in a wrong info provided for fetching information?", cancellationToken : cancellationToken); await stepContext.Context.SendActivityAsync(e.Message, cancellationToken : cancellationToken); } foreach (var pullRequest in pullRequestList) { var pullRequestCard = CreateAdaptiveCardAttachment(pullRequest, globalVariable.BaseUrl, project.ProjectName, repositoryName); var response = MessageFactory.Attachment(pullRequestCard); await stepContext.Context.SendActivityAsync(response, cancellationToken); } } } } if (!foundAnyPullRequest) { await stepContext.Context.SendActivityAsync("No active pull requests found", cancellationToken : cancellationToken); } return(await stepContext.NextAsync(null, cancellationToken)); }
public static async Task <bool> SetBitBucketConversationVariables(string userId, BitBucketConversationVariables bitBucketConversationVariables) { try { return(await AzureDb.SetUserConfigurationsAsync(userId, bitBucketConversationVariables)); } catch { return(false); } }