Beispiel #1
0
        public static async Task <List <Issue> > GetIssueList(List <string> caseIdList)
        {
            IJiraClient jira       = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");
            string      sql        = "(";
            bool        isFirstOne = true;

            foreach (string caseId in caseIdList)
            {
                if (isFirstOne)
                {
                    sql       += " \"SalesForce ID\" ~  " + caseId;
                    isFirstOne = false;
                }
                else
                {
                    sql += " OR \"SalesForce ID\" ~  " + caseId;
                }
            }
            sql += ")";

            List <Issue> issueList = new List <Issue>();
            var          issues    = jira.GetIssuesByQuery("ENGSUPP", "", sql);

            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return(issueList);
        }
Beispiel #2
0
        private AnotherJiraRestClient.JiraModel.Version AddOrGetExistingVersion(ProjectMeta projectMeta)
        {
            IEnumerable <AnotherJiraRestClient.JiraModel.Version> versions = GetVersions();

            if (versions.Any(v => v.name == _jiraOptions.AvailableFromVersion.ToString()))
            {
                _logger.Info("Version <{0}> already exists in Jira", _jiraOptions.AvailableFromVersion);
                return(versions.Single(v => v.name == _jiraOptions.AvailableFromVersion.ToString()));
            }

            // add the version
            _logger.Info("Adding version <{0}>", _jiraOptions.AvailableFromVersion);
            var client       = new JiraClient(Account);
            var addedVersion = client.CreateVersion(new NewVersion
            {
                description     = "Automatically added release version via TC on " + _dateTimeProvider.Now.ToShortDateString() + " " + _dateTimeProvider.Now.ToShortTimeString(),
                name            = _jiraOptions.AvailableFromVersion.ToString(),
                userStartDate   = _dateTimeProvider.Now.ToString("dd/MMM/yyyy"),
                userReleaseDate = _dateTimeProvider.Now.ToString("dd/MMM/yyyy"),
                project         = projectMeta.key,
                released        = true,
            });

            return(addedVersion);
        }
        /// <summary>
        ///     Create the JiraApi, using OAuth 1 for the communication, here the HttpClient is configured
        /// </summary>
        /// <param name="baseUri">Base URL, e.g. https://yourjiraserver</param>
        /// <param name="jiraOAuthSettings">JiraOAuthSettings</param>
        /// <param name="httpSettings">IHttpSettings or null for default</param>
        public static IJiraClient Create(Uri baseUri, JiraOAuthSettings jiraOAuthSettings, IHttpSettings httpSettings = null)
        {
            JiraClient client       = JiraClient.Create(baseUri, httpSettings) as JiraClient;
            var        jiraOAuthUri = client.JiraBaseUri.AppendSegments("plugins", "servlet", "oauth");

            var oAuthSettings = new OAuth1Settings
            {
                TokenUrl          = jiraOAuthUri.AppendSegments("request-token"),
                TokenMethod       = HttpMethod.Post,
                AccessTokenUrl    = jiraOAuthUri.AppendSegments("access-token"),
                AccessTokenMethod = HttpMethod.Post,
                CheckVerifier     = false,
                SignatureType     = OAuth1SignatureTypes.RsaSha1,
                Token             = jiraOAuthSettings.Token,
                ClientId          = jiraOAuthSettings.ConsumerKey,
                CloudServiceName  = jiraOAuthSettings.CloudServiceName,
                RsaSha1Provider   = jiraOAuthSettings.RsaSha1Provider,
                AuthorizeMode     = jiraOAuthSettings.AuthorizeMode,
                AuthorizationUri  = jiraOAuthUri.AppendSegments("authorize")
                                    .ExtendQuery(new Dictionary <string, string>
                {
                    {
                        OAuth1Parameters.Token.EnumValueOf(), "{RequestToken}"
                    },
                    {
                        OAuth1Parameters.Callback.EnumValueOf(), "{RedirectUrl}"
                    }
                })
            };

            // Configure the OAuth1Settings

            client.Behaviour = client.ConfigureBehaviour(OAuth1HttpBehaviourFactory.Create(oAuthSettings), httpSettings);
            return(client);
        }
        public static async Task<List<Issue>> GetIssueList(List<string> caseIdList)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");
            string sql = "(";
            bool isFirstOne = true;
            foreach(string caseId in caseIdList)
            {
                if(isFirstOne) 
                {
                    sql += " \"SalesForce ID\" ~  " + caseId;
                    isFirstOne = false;
                }
                else
                {
                    sql += " OR \"SalesForce ID\" ~  " + caseId;
                }                
            }
            sql += ")";

            List<Issue> issueList = new List<Issue>();
            var issues = jira.GetIssuesByQuery("ENGSUPP", "", sql);
            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return issueList;
        }
Beispiel #5
0
        static async Task MainAsync()
        {
            // Insert Jira URL, username and API Token to test JiraClient
            // Also insert IDs or Keys for entities and uncomment needed ones
            using (IJiraClient jiraClient = new JiraClient(
                       jiraBaseUrl: "https://medavanteinc.atlassian.net",
                       username: "******",
                       apiToken: "F1qeveAHxLEV6Mij2hQP3ECD"))
            {
                ICollection <Status> statuses = await jiraClient.GetStatusesAsync();

                Console.WriteLine("Existing issues statuses:");
                foreach (var status in statuses.OrderBy(x => x.Name))
                {
                    Console.WriteLine($"{status.Id.ToString().PadRight(6)} - {status.Name}");
                }

                Console.WriteLine();
                Console.Write("Select issue status (by ID or name): ");
                string statusIdOrName = Console.ReadLine();

                ICollection <Issue> issues = await jiraClient.SearchAsync($"status={statusIdOrName}");

                Console.Clear();
                Console.WriteLine($"Found {issues.Count} issues:");
                foreach (var issue in issues)
                {
                    Console.WriteLine($"{issue.Id.ToString().PadRight(6)} - {issue.Key}");
                }

                Console.ReadLine();
            }
        }
Beispiel #6
0
 public JiraConnector(IJiraConfiguration jiraConfiguration, JiraMonitor jiraMonitor)
 {
     jiraConfiguration.Url = jiraConfiguration.Url.Replace(DefaultPostfix, "");
     _jiraConfiguration    = jiraConfiguration;
     _jiraMonitor          = jiraMonitor;
     _jiraClient           = JiraClient.Create(new Uri(jiraConfiguration.Url));
 }
Beispiel #7
0
        // https://www.quora.com/How-could-I-close-JIRA-ticket-using-rest-API
        public static async void CloseSubTask(IssueRef issueRef)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            bool isClosed = false;

            while (true)
            {
                var transitions = jira.GetTransitions(issueRef);

                Transition lastTransition = null;

                foreach (var transition in transitions)
                {
                    lastTransition = transition;

                    if ("Closed".Equals(transition.name, StringComparison.InvariantCultureIgnoreCase))
                    {
                        jira.TransitionIssue(issueRef, transition);
                        isClosed = true;
                        break;
                    }
                }

                if (isClosed == false && lastTransition != null)
                {
                    jira.TransitionIssue(issueRef, lastTransition);
                }
                else
                {
                    break;
                }
            }
        }
Beispiel #8
0
        public static async Task <Comment> CreateComment(IssueRef issue, string caseComment)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var     jiraComments = jira.GetComments(issue);
            bool    isFound      = false;
            Comment jiraComment  = null;

            foreach (Comment temp in jiraComments)
            {
                if (temp.body.Equals(caseComment, System.StringComparison.InvariantCultureIgnoreCase))
                {
                    jiraComment = temp;
                    isFound     = true;
                    break;
                }
            }

            if (!isFound)
            {
                jiraComment = jira.CreateComment(issue, caseComment);
            }

            return(jiraComment);
        }
Beispiel #9
0
        public void SearchDeveloperReport_Test()
        {
            var client  = new JiraClient();
            var members = ConfigKeeper.Instance.Developers;
            var sb      = new StringBuilder("Team,Name,Done,Total,Percent\n\t");

            foreach (var(key, member) in members)
            {
                List <JiraTicket> tickets = null;

                tickets = client.SearchTicketsForCurrentRelease(key, false);
                var spTotal = tickets.Sum(x => x.StoryPoint);

                tickets = client.SearchTicketsForDone(key, false);
                var spDone  = tickets.Sum(x => x.StoryPoint);
                var percent = string.Empty;
                if (spTotal > 0)
                {
                    percent = (spDone / spTotal).ToString("#0.##%");
                }
                sb.Append($"{member.Team},{key},{spDone},{spTotal},{percent}\n\t");
            }

            File.WriteAllText($@"E:\@TestData-{DateTime.Now.ToString("yyyy-MM-dd_HH_mm_ss")}.csv", sb.ToString(), Encoding.UTF8);
        }
Beispiel #10
0
        public void SearchTesterReportNew_Test()
        {
            var client        = new JiraClient();
            var members       = ConfigKeeper.Instance.Testers;
            var sb            = new StringBuilder("Name,StroyPoint,Bug-Error,Bug-Design\n\t");
            var start         = "2019-07-17";
            var end           = "2019-10-25";
            var stories       = client.SearchTicketsStroyForTime(start, end);
            var bugsByDesign  = client.SearchTicketsBugByDesignForTime(start, end);
            var bugsCodeError = client.SearchTicketsBugCodeErrorForTime(start, end);

            foreach (var(name, m) in members)
            {
                var tempTickets       = stories.Where(x => x.Tester == name);
                var tempBugCodeErrors = bugsCodeError.Where(x => x.Tester == name);
                var tempBugByDesigns  = bugsByDesign.Where(x => x.Tester == name);

                var storyPoint = tempTickets.Sum(x => x.StoryPoint);

                var bugCodeErrorCount = tempBugCodeErrors.Count();
                var bugByDesignCount  = tempBugByDesigns.Count();


                sb.Append($"{name},{storyPoint},{bugCodeErrorCount},{bugByDesignCount}\n\t");
            }



            File.WriteAllText($@"E:\@TestData-{DateTime.Now.ToString("yyyy-MM-dd_HH_mm_ss")}.csv", sb.ToString(), Encoding.UTF8);
        }
Beispiel #11
0
        public static async Task <Issue> GetDatabaseTaskByCustomerID(string project, string type, string customer)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");
            string      sql  = "(";

            if (customer.IndexOf(",") > 0)
            {
                sql += " created >= -15d AND summary ~ \"" + customer.Substring(0, customer.IndexOf(",")) + "\"";
            }
            else
            {
                sql += " created >= -15d AND summary ~ \"" + customer + "\"";
            }

            sql += ")";

            List <Issue> issueList = new List <Issue>();
            var          issues    = jira.GetIssuesByQuery(project, type, sql);

            foreach (Issue issue in issues)
            {
                if (issue != null)
                {
                    return(issue);
                }
            }

            return(null);
        }
Beispiel #12
0
        public async Task <ActionResult> JiraAction(string log, Guid id, int actionid)
        {
            var e = await GetError(log, id).ConfigureAwait(false);

            var user       = Current.User;
            var action     = JiraSettings.Actions.Find(i => i.Id == actionid);
            var jiraClient = new JiraClient(JiraSettings);
            var result     = await jiraClient.CreateIssueAsync(action, e, user == null? "" : user.AccountName).ConfigureAwait(false);

            if (string.IsNullOrWhiteSpace(result.Key))
            {
                return(Json(new
                {
                    success = false,
                    message = "Can not create issue"
                }));
            }

            return(Json(new
            {
                success = true,
                issueKey = result.Key,
                browseUrl = result.BrowseUrl
            }));
        }
Beispiel #13
0
        public async Task <ActionResult> JiraAction(string log, Guid id, int actionid, bool redirect = false)
        {
            var e          = ExceptionStores.GetError(log, id);
            var user       = Current.User;
            var action     = JiraSettings.Actions.FirstOrDefault(i => i.Id == actionid);
            var jiraClient = new JiraClient(JiraSettings);
            var result     = await jiraClient.CreateIssue(action, e, user == null?String.Empty : user.AccountName);

            if (String.IsNullOrWhiteSpace(result.Key))
            {
                return(Json(new
                {
                    success = false,
                    message = "Can not create issue"
                }));
            }
            else
            {
                return(Json(new
                {
                    success = true,
                    issueKey = result.Key,
                    browseUrl = result.BrowseUrl
                }));
            }
        }
Beispiel #14
0
        private bool VerifyProjectKey(out ProjectMeta projectMeta)
        {
            var client = new JiraClient(Account);

            projectMeta = client.GetProjectMeta(_jiraOptions.ProjectKey);
            return(projectMeta != null);
        }
Beispiel #15
0
        public async Task Test_SearchSnippet()
        {
            // begin-snippet: SearchExample
            var client = JiraClient.Create(TestJiraUri);
            // Preferably use a "bot" user for maintenance
            var username = Environment.GetEnvironmentVariable("jira_test_username");
            var password = Environment.GetEnvironmentVariable("jira_test_password");

            client.SetBasicAuthentication(username, password);

            const string unavailableUser = "******";
            // Find all issues in a certain state and assigned to a user who is not available
            var searchResult = await client.Issue.SearchAsync(Where.And(Where.Assignee.Is(unavailableUser), Where.Status.Is("Building")));

            foreach (var issue in searchResult.Issues)
            {
                // Remote the assignment, to make clear no-one is working on it
                await issue.AssignAsync(User.Nobody);

                // Comment the reason to the issue
                await issue.AddCommentAsync($"{unavailableUser} is currently not available.");
            }

            // end-snippet
        }
 public JiraConnection()
 {
     _baseUrl  = AppSettings["JiraUrl"];
     _username = AppSettings["JiraUsername"];
     _password = AppSettings["JiraPassword"];
     _client   = new JiraClient(_baseUrl, _username, _password);
 }
Beispiel #17
0
        public async Task Test_GetFields_Successful()
        {
            var response = new RestResponse <List <FieldInfo> >();

            response.Data = new List <FieldInfo>()
            {
                new FieldInfo {
                    Id = "1"
                },
                new FieldInfo {
                    Id = "2"
                },
                new FieldInfo {
                    Id = "3"
                }
            };
            response.StatusCode     = HttpStatusCode.OK;
            response.ResponseStatus = ResponseStatus.Completed;

            var factory = CreateMockFactory_ExecuteAsync <List <FieldInfo> >(response, (r, c) =>
            {
                Assert.AreEqual(JiraClient.RESOURCE_GETFIELDS, r.Resource, $"Expected resource \"{JiraClient.RESOURCE_GETFIELDS}\" but got \"{r.Resource}\"");
                Assert.AreEqual(Method.GET, r.Method, $"Expected GET HTTP Method but got {r.Method}");
            });

            var jira    = new JiraClient(factory);
            var results = await jira.GetFields();

            Assert.IsNotNull(results, $"Got NULL results");
            Assert.AreEqual(3, results.Count, $"Expected {response.Data.Count} data but got {results.Count}");
        }
Beispiel #18
0
        public void CallApi()
        {
            var client = new RestClient("http://localhost:3000");
            //client.Authenticator = new HttpBasicAuthenticator("username", "password");

            var request01 = new RestRequest("token", DataFormat.Json);
            //var response01 = client.Post<MyResponse>(request01);
            var response01 = client.Post <dynamic>(request01);
            //_output.WriteLine(response01.Data["token"]);


            var request02 = new RestRequest("users", DataFormat.Json);

            request02.AddHeader("Authorization", $"Basic {response01.Data.Token}");
            var response02 = client.Get(request02);

            _output.WriteLine(response02.Content);


            var clientA       = new JiraClient();
            var dataContainer = new DataContainer("TC00001");

            var respone = clientA.RestInlineCreateIssue(dataContainer["IssueData"]);

            Assert.Equal(201, respone.HttpCode);
            //Rest 封装
            //结构的重复定义

            // IRestClient client;

            // client.Invoke("data","Put");
            // client.Invoke("alan_test");
        }
Beispiel #19
0
        public static async void ListUserStories()
        {
            if (!File.Exists(Common.UserSettingFilePath))
            {
                SetUpUserSetting.SetUp();
            }

            JiraClient Client = JiraClient.Instance;

            Client.InitializeClient();
            var data = Client.GetAssignedUserStories();

            if (data.Status == RestSharp.ResponseStatus.Completed)
            {
                Console.WriteLine(new String('-', 115));
                Console.WriteLine(string.Format("| {0,10} | {1, 15} | {2, -80} |", "id", "User Story Key", "User Story Summary"));
                Console.WriteLine(new String('-', 115));
                for (int i = 0; i < data.issues.Length; i++)
                {
                    var    issue   = data.issues[i];
                    string summary = issue.fields.summary;
                    if (summary.Length > 78)
                    {
                        summary = summary.Substring(0, 75) + "...";
                    }
                    Console.WriteLine(string.Format("| {0,10} | {1, 15} | {2, -80} |", i, issue.key, summary));
                }
                Console.WriteLine(new String('-', 115));
            }
        }
Beispiel #20
0
        public static async Task <List <Issue> > GetIssueListBySalesforceId(string salesforceId, List <string> projects)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            string sql = "\"Salesforce ID\" ~ " + salesforceId;

            sql += " AND project in ( ";

            bool isFirstOne = true;

            foreach (string project in projects)
            {
                if (isFirstOne)
                {
                    sql       += project;
                    isFirstOne = false;
                }
                else
                {
                    sql += " , " + project;
                }
            }
            sql += ")";

            List <Issue> issueList = new List <Issue>();
            var          issues    = jira.GetIssuesByQuery("", "", sql);

            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return(issueList);
        }
Beispiel #21
0
        public static async Task <List <Issue> > GetCaseListFromCrossProjects(DateTime startDate, DateTime endDate, List <string> projects)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            string sql = "resolutiondate >= " + String.Format("{0}-{1}-{2}", startDate.Year, startDate.Month, startDate.Day) + " AND " + " resolutiondate <= " + String.Format("{0}-{1}-{2}", endDate.Year, endDate.Month, endDate.Day);

            sql += " AND \"Salesforce ID\" !~ Empty ";
            sql += " AND project in ( ";

            bool isFirstOne = true;

            foreach (string project in projects)
            {
                if (isFirstOne)
                {
                    sql       += project;
                    isFirstOne = false;
                }
                else
                {
                    sql += " , " + project;
                }
            }
            sql += ")";

            List <Issue> issueList = new List <Issue>();
            var          issues    = jira.GetIssuesByQuery("", "", sql);

            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return(issueList);
        }
Beispiel #22
0
        public async Task StartupAsync(CancellationToken cancellationToken = new CancellationToken())
        {
            Log.Debug().WriteLine("StartAsync called!");
            var serverInfo = await JiraClient.Create(new Uri("https://greenshot.atlassian.net")).Server.GetInfoAsync(cancellationToken).ConfigureAwait(false);

            Log.Debug().WriteLine("Jira server version {0}", serverInfo.Version);
            await Task.Delay(100, cancellationToken).ConfigureAwait(false);
        }
Beispiel #23
0
        public static async Task <Issue> UpdateDatabaseTask(Issue issue)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var result = jira.UpdateIssue(issue);

            return(result);
        }
Beispiel #24
0
        public static async Task <List <Worklog> > GetWorklogs(IssueRef issue)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var worklogs = jira.GetWorklogs(issue);

            return(worklogs as List <Worklog>);
        }
Beispiel #25
0
        public static bool UploadAttachment(IssueRef issue, string fileName, byte[] fileStream)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            jira.CreateAttachment(issue, fileStream, fileName);

            return(true);
        }
Beispiel #26
0
        public static async Task <Issue> LoadIssue(IssueRef issue)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var Issue = jira.LoadIssue(issue);

            return(Issue);
        }
Beispiel #27
0
        public static async Task <Issue> CreateDatabaseTask(IssueFields fields)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var issue = jira.CreateIssue("DATABASE", "Task", fields);

            return(issue);
        }
Beispiel #28
0
        public static async Task <Issue> CreateSubTask(string summary, string description, IssueRef parent)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var issue = jira.CreateSubTask("ENGSUPP", parent.key, summary, description);

            return(issue);
        }
Beispiel #29
0
 public void Dispose()
 {
     if (JiraClient != null)
     {
         JiraClient.Dispose();
         JiraClient = null;
     }
 }
Beispiel #30
0
 /// <summary>
 /// Returns the possible priorities from cache. If the cache has not been set
 /// this method will load the values using the specified JiraClient.
 /// </summary>
 /// <param name="client">used to load priories if not already in cache</param>
 /// <param name="context">Context that contains the cache</param>
 /// <returns>cached priority values</returns>
 public static List <Priority> GetCachedPriorities(this JiraClient client, HttpContextBase context)
 {
     return(GetFromCache <List <Priority> >(
                KEY_PRIORITY_FILTER,
                () => client.GetPriorities(),
                PRIORITY_FILTER_EXPIRATION_HOURS,
                context));
 }
Beispiel #31
0
        public void Setup()
        {
            jiraApiRequestFactoryMock = new Mock <IJiraApiRequestFactory>();

            jiraApiRequesterMock = new Mock <IJiraApiRequester>();

            jiraClient = new JiraClient(jiraApiRequestFactoryMock.Object, jiraApiRequesterMock.Object);
        }
Beispiel #32
0
 public JiraProject(string jiraServer, string jiraProject, string userName, string password)
 {
     jira = new JiraClient(jiraServer, userName, password);
     jira.OnPercentComplete += onPercentComplete;
     this.userName = userName;
     this.password = password;
     this.jiraProject = jiraProject;
     this.jiraServer = jiraServer;
     PreferHtml = false;
 }
        private static IHttpController CreatePrintController()
        {
            var config = CreatePrintServiceConfig();

            var jiraRestClient = CreateJiraRestClient(config);

            var client = new JiraClient(jiraRestClient);
            var issuePrinter = new WindowsIssuePrinter(config.PrinterName);

            return new PrintController(new PrintService(client, issuePrinter));
        }
Beispiel #34
0
        public static async Task<List<Issue>> GetIssueListByStatus(string status)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");
            string sql = "project = ENGSUPP AND status = \"" + status + "\" AND reporter in (\"[email protected]\")";

            List<Issue> issueList = new List<Issue>();
            var issues = jira.GetIssuesByQuery("ENGSUPP", "", sql);
            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return issueList;
        }
Beispiel #35
0
        public static async Task<List<Issue>> GetIssueListByLabel(string label)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");
            string sql = "labels = " + label + "";

            List<Issue> issueList = new List<Issue>();
            var issues = jira.GetIssuesByQuery("ENGSUPP", "", sql);
            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return issueList;
        }
Beispiel #36
0
        public static async Task<List<Issue>> GetIssueList(string email)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");
            string sql = "assignee in (\"" + email  + "\") and status in (\"Open\", \"In Progress\", \"Reopened\", \"Pending\", \"Development in Progress\") ";

            List<Issue> issueList = new List<Issue>();
            var issues = jira.GetIssuesByQuery("ENGSUPP", "", sql);
            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return issueList;
        }
        public async Task<ActionResult> JiraAction(string log, Guid id, int actionid, bool redirect = false)
        {
            var e = ExceptionStores.GetError(log, id);
            var user = Current.User;
            var action = JiraSettings.Actions.FirstOrDefault(i => i.Id == actionid);
            var jiraClient = new JiraClient(JiraSettings);
            var result = await jiraClient.CreateIssue(action, e, user == null ? String.Empty : user.AccountName);

            if (String.IsNullOrWhiteSpace(result.Key))
            {
                return Json(new
                {
                    success = false,
                    message = "Can not create issue"
                });
            }
            else
            {
                return Json(new
                {
                    success = true,
                    issueKey = result.Key,
                    browseUrl = result.BrowseUrl
                });
            }

        }
        public static bool UpdateJIRAStatus(IssueRef issueRef, string jiraStatus, string jiraNextStatus)
        {
            // Start Review Case: Open -> In Progress
            //                    Pending -> In Progress
            //                    Resolved -> In Progress(Command: Re-Open)
            //                    Closed -> In Progress(Command: Re-Open)
            // Add some comment: In Progress -> Pending
            // 

            if (String.IsNullOrEmpty(jiraNextStatus))
            {
                return false;
            }

            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");
            var transitions = jira.GetTransitions(issueRef);

            if ("In Progress" == jiraNextStatus)
            {
                if ("Open".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase))
                {
                    return true;
                }

                if ("Pending".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase)
                    || "Reopened".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase))
                {
                    foreach (var transition in transitions)
                    {
                        if ("Analysis In Progress".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                        {
                            jira.TransitionIssue(issueRef, transition);
                            break;
                        }
                    }
                }
                else
                {
                    if ("Closed".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase))
                    {
                        foreach (var transition in transitions)
                        {
                            if ("Re-Open".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                            {
                                jira.TransitionIssue(issueRef, transition);
                                break;
                            }
                        }
                    }

                    if ("Resolved".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase))
                    {
                        foreach (var transition in transitions)
                        {
                            if ("Dev In Progress".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                            {
                                jira.TransitionIssue(issueRef, transition);
                                break;
                            }
                        }
                    }

                    transitions = jira.GetTransitions(issueRef);

                    foreach (var transition in transitions)
                    {
                        if ("Analysis In Progress".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                        {
                            jira.TransitionIssue(issueRef, transition);
                            break;
                        }
                    }
                }
            }

            if ("Pending" == jiraNextStatus)
            {
                if ("Open".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase))
                {
                    foreach (var transition in transitions)
                    {
                        if ("Analysis In Progress".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                        {
                            jira.TransitionIssue(issueRef, transition);
                            break;
                        }
                    }

                    jiraStatus = "In Progress";
                }

                if ("In Progress".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase))
                {
                    foreach (var transition in transitions)
                    {
                        if ("Commented".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                        {
                            jira.TransitionIssue(issueRef, transition);
                            break;
                        }
                    }
                }
            }

            if ("Closed" == jiraNextStatus)
            { 
            }

            return true;
        }
Beispiel #39
0
 public void SetUp()
 {
     _builderMock = MockRepository.GenerateMock<IJiraRequestUrlBuilder>();
       _webClientStub = MockRepository.GenerateStub<IWebClient>();
       _jiraClient = new JiraClient (_webClientStub, () => _builderMock);
 }
Beispiel #40
0
        public static async Task<bool> UpdateJiraStatus(IssueRef issueRef, string jiraStatus, string jiraNextStatus)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var transitions = jira.GetTransitions(issueRef);
            if ("Closed".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase)
                && jiraNextStatus == "In Progress")
            {
                foreach (var transition in transitions)
                {
                    if ("Re-Open".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                    {
                        jira.TransitionIssue(issueRef, transition);
                        break;
                    }
                }
            }

            if ("Pending".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase)
                && jiraNextStatus == "In Progress")
            {
                foreach (var transition in transitions)
                {
                    if ("Analysis In Progress".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                    {
                        jira.TransitionIssue(issueRef, transition);
                        break;
                    }
                }
            }

            if ("In Progress".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase)
                && jiraNextStatus == "Pending")
            {
                foreach (var transition in transitions)
                {
                    if ("Commented".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                    {
                        jira.TransitionIssue(issueRef, transition);
                        break;
                    }
                }
            }

            if (("Pending".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase)
                || "Resolved".Equals(jiraStatus, System.StringComparison.InvariantCultureIgnoreCase))
                && jiraNextStatus == "Closed")
            {
                foreach (var transition in transitions)
                {
                    if ("Closed".Equals(transition.name, System.StringComparison.InvariantCultureIgnoreCase))
                    {
                        jira.TransitionIssue(issueRef, transition);
                        break;
                    }
                }
            }
            //var issues = jira.TransitionIssue(issueRef, inProgressOrReopen);

            // "Open" -> "In Progress"
            // "In Progress" -> "Commented"
            // "In Progress" -> "Closed"
            return true;
        }
Beispiel #41
0
        public static async Task<Issue> CreateIssue(IssueFields fields)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var issue = jira.CreateIssue("ENGSUPP", "Case", fields);

            return issue;
        }      
Beispiel #42
0
        public static async Task<List<Issue>> GetIssueListBySalesforceId(string salesforceId, List<string> projects)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            string sql = "\"Salesforce ID\" ~ " + salesforceId;
            sql += " AND project in ( ";

            bool isFirstOne = true;
            foreach (string project in projects)
            {
                if (isFirstOne)
                {
                    sql += project;
                    isFirstOne = false;
                }
                else
                {
                    sql += " , " + project;
                }
            }
            sql += ")";

            List<Issue> issueList = new List<Issue>();
            var issues = jira.GetIssuesByQuery("", "", sql);
            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return issueList;
        }
Beispiel #43
0
        public static async Task<List<Issue>> GetCaseListFromCrossProjects(DateTime startDate, DateTime endDate, List<string> projects)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            string sql = "resolutiondate >= " + String.Format("{0}-{1}-{2}", startDate.Year, startDate.Month, startDate.Day) + " AND " + " resolutiondate <= " + String.Format("{0}-{1}-{2}", endDate.Year, endDate.Month, endDate.Day);
            sql += " AND \"Salesforce ID\" !~ Empty ";
            sql += " AND project in ( ";

            bool isFirstOne = true;
            foreach (string project in projects)
            {
                if (isFirstOne)
                {
                    sql += project;
                    isFirstOne = false;
                }
                else
                {
                    sql += " , " + project;
                }
            }
            sql += ")";

            List<Issue> issueList = new List<Issue>();
            var issues = jira.GetIssuesByQuery("", "", sql);
            foreach (Issue issue in issues)
            {
                issueList.Add(issue);
            }

            return issueList;
        }
Beispiel #44
0
        public static async Task<Issue> UpdateIssue(Issue issue)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var result = jira.UpdateIssue(issue);

            return result;
        }
Beispiel #45
0
        public static async Task<List<Attachment>> GetAttachments(IssueRef issue)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var jiraAttachments = jira.GetAttachments(issue);


            return (jiraAttachments as List<Attachment>);
        }
Beispiel #46
0
        public static async Task<Comment> CreateComment(IssueRef issue, string caseComment)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");

            var jiraComments = jira.GetComments(issue);
            bool isFound = false;
            Comment jiraComment = null;
            foreach (Comment temp in jiraComments)
            {
                if (temp.body.Equals(caseComment, System.StringComparison.InvariantCultureIgnoreCase))
                {
                    jiraComment = temp;
                    isFound = true;
                    break;
                }
            }

            if (!isFound)
            {
                jiraComment = jira.CreateComment(issue, caseComment);
            }

            return jiraComment;
        }
Beispiel #47
0
        public static bool UploadAttachment(IssueRef issue, string fileName, byte[] fileStream)
        {
            IJiraClient jira = new JiraClient("https://accelaeng.atlassian.net/", "*****@*****.**", "peter.peng");
            jira.CreateAttachment(issue, fileStream, fileName);

            return true;
        }