Beispiel #1
0
        public void UpdateTickets()
        {
            var mergeValues = Rock.Lava.LavaHelper.GetCommonMergeFields(null);

            mergeValues.Add("JiraTopic", this);
            var jql = JQL.ResolveMergeFields(mergeValues);

            JiraClient jiraClient = new JiraClient();
            var        issues     = jiraClient.GetTickets(jql).GetAwaiter().GetResult();

            foreach (var issue in issues)
            {
                using (RockContext rockContext = new RockContext())
                {
                    JiraTicketService jiraTicketService = new JiraTicketService(rockContext);

                    var ticket = jiraTicketService.Get(issue.Key);

                    if (ticket == null)
                    {
                        ticket = new JiraTicket();
                        jiraTicketService.Add(ticket);
                    }

                    ticket.JiraTopicId     = Id;
                    ticket.JiraId          = issue.Id;
                    ticket.Key             = issue.Key;
                    ticket.Title           = issue.Fields.Summary;
                    ticket.Description     = issue.Fields.Description;
                    ticket.TicketType      = ( TicketType )Enum.Parse(typeof(TicketType), issue.Fields.IssueType.Name.Replace("-", ""));
                    ticket.CreatedDateTime = issue.Fields.Created;

                    rockContext.SaveChanges();
                }
            }

            //Now delete keys are in this topic but no longer used
            var activeKeys = issues.Select(i => i.Key).ToList();

            RockContext deleteContext = new RockContext();

            JiraTicketService jiraTicketService2 = new JiraTicketService(deleteContext);

            var oldTickets = jiraTicketService2.Queryable().Where(t => t.JiraTopicId == Id && !activeKeys.Contains(t.Key)).ToList();

            foreach (var oldTicket in oldTickets)
            {
                jiraTicketService2.Delete(oldTicket);
            }

            deleteContext.SaveChanges();
        }
Beispiel #2
0
 public static IAsyncEnumerable <(long Id, string Json)> ToAsyncEnumerable(this JQL query, CancellationToken token = default)
 => new JQLAsync(query).Execute(token);