private async Task <DialogTurnResult> FinalStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var dataList      = new List <string>();
            var activityValue = "";

            try
            {
                activityValue = stepContext.Options.ToString();
            }
            catch
            {
                return(await stepContext.EndDialogAsync(null, cancellationToken));
            }

            if (string.IsNullOrEmpty(activityValue))
            {
                return(await stepContext.EndDialogAsync(null, cancellationToken));
            }

            dataList = activityValue.Split('>', StringSplitOptions.RemoveEmptyEntries).ToList();

            if (dataList.Count == 5 && dataList[0]?.ToLower() == "approvepullrequest")
            {
                await stepContext.Context.SendActivityAsync("CheckingPullRequestStatus...", cancellationToken : cancellationToken);

                bool resultFound = false;

                foreach (
                    var globalVariable
                    in (await GlobalVariablesService.GetBitBucketConversationVariables(stepContext.Context.Activity.Recipient.Id)).GlobalVariables
                    )

                {
                    foreach (var project in globalVariable.Projects)
                    {
                        foreach (var repositoryName in project.RepositoryNames)
                        {
                            if (string.Equals(globalVariable.BaseUrl, dataList[1], StringComparison.CurrentCultureIgnoreCase) &&
                                string.Equals(project.ProjectName, dataList[2], StringComparison.CurrentCultureIgnoreCase) &&
                                string.Equals(repositoryName, dataList[3], StringComparison.CurrentCultureIgnoreCase))
                            {
                                resultFound = true;
                                try
                                {
                                    await _innerBitbucketClient.ApprovePullRequest(globalVariable.BaseUrl,
                                                                                   project.ProjectName,
                                                                                   repositoryName,
                                                                                   globalVariable.PersonalAccessToken,
                                                                                   globalVariable.Password,
                                                                                   globalVariable.UserName, long.Parse(dataList[4]));

                                    await stepContext.Context.SendActivityAsync("Approved successfully", cancellationToken : cancellationToken);
                                }
                                catch (Exception e)
                                {
                                    await stepContext.Context.SendActivityAsync("Oooops. Something went wrong. Could not approve pull request",
                                                                                cancellationToken : cancellationToken);

                                    await stepContext.Context.SendActivityAsync(e.Message,
                                                                                cancellationToken : cancellationToken);
                                }

                                break;
                            }
                        }
                    }
                }

                if (!resultFound)
                {
                    await stepContext.Context.SendActivityAsync("Could not find such repository. Check project and repository names",
                                                                cancellationToken : cancellationToken);
                }
                return(await stepContext.EndDialogAsync(null, cancellationToken));
            }
            return(await stepContext.EndDialogAsync(null, cancellationToken));
        }