static void Main(string[] args) { var setup = new ReportSetup() { JiraApiUrl = "https://orwell.atlassian.net/rest/api/2/", JiraUserName = "******", JiraPassword = "******", Jql = "labels=jmp", ColumnLabelPrefix = "jmp-stream-" }; var jiraClient = new JiraClient(); var issues = jiraClient.GetIssues(setup.JiraApiUrl, setup.JiraUserName, setup.JiraPassword, setup.Jql); var reportService = new ReportService(); var capacity = new Dictionary <string, int>() { { "*", 40 } }; var issueFinalStatuses = new string[] { "DEV COMPLETE", "CANCELLED" }; var report = reportService.GetReportData(issues, setup.ColumnLabelPrefix, capacity, issueFinalStatuses); }
//private const string Projects = "ESTAT"; //private const string DestProject = "ESTAT"; //private const string Projects = "ATT,ESTAT,GIANO,LRX,SWAT,ZEN"; //private const string DestProject = "SWAT"; static void Main(string[] args) { try { Console.WriteLine("User: diego.medici"); Console.Write("Password: "******"https://studiofarma.atlassian.net", UserName, _password); string[] elencoProject = Projects.Split(','); ListIssueCGM issueCgms = new ListIssueCGM(); int epicPosition = 0; //permette di inserire le epic prima delle issue e di mantenere per lo meno l'ordine tra di loro! foreach (var project in elencoProject) { IEnumerable <Issue> issues = jiraClient.GetIssues(project).OrderBy(k => k, new MyComparer()).ToList(); foreach (var locIssue in issues) { IssueSTF issueStf = GetIssueSTF(locIssue.self); IssueCGM issueCgm = new IssueCGM(issueStf, project, DestProject); if (issueCgm.IssueType.Equals("Epic")) { issueCgms.Insert(epicPosition, issueCgm); epicPosition++; } else { issueCgms.Add(issueCgm); } } foreach (IssueCGM issue in IssueCGM.IssueToDo) { if (IssueCGM.Maps.ContainsKey(issue.OriginalParentIssueKey)) { issue.DestinationParentIssueKey = IssueCGM.Maps[issue.OriginalParentIssueKey]; } } foreach (IssueCGM issue in IssueCGM.EpicsToLink) { if (IssueCGM.MapsEpics.ContainsKey(issue.EpicLinkKey)) { issue.EpicLink = IssueCGM.MapsEpics[issue.EpicLinkKey]; } } } string[] lines = new string[issueCgms.Count + 1]; lines[0] = issueCgms.FirstLine(); int i = 1; foreach (IssueCGM issueCgm in issueCgms) { lines[i++] = issueCgm.ToCSV(issueCgms.MaxCountLabel(), issueCgms.MaxCountAffcectVersion(), issueCgms.MaxCountComponent(), issueCgms.MaxCountFixVersion(), issueCgms.MaxCountComments(), issueCgms.MaxCountAttachments()); Console.WriteLine("Lines {0} Ok", i); } const string nameFileCsv = @"C:\CGM\" + DestProject + ".csv"; Console.WriteLine("Writing file {0}", nameFileCsv); File.WriteAllLines(nameFileCsv, lines); Console.WriteLine("Done!"); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } Console.ReadLine(); }
static async Task Main(string[] args) { var configuration = new ConfigurationBuilder() .AddJsonFile("appsettings.json", true) .AddEnvironmentVariables() .AddCommandLine(args) .Build(); var start = configuration.GetValue <DateTime>("start").Date; var end = configuration.GetValue <DateTime>("end").Date.AddDays(1); var output = configuration["output"]; var client = new JiraClient(configuration["email"], configuration["token"], configuration["server"]); var calendar = new Dictionary <DateTime, Dictionary <string, TimeSpan> >(); for (var date = start; date < end; date = date.AddDays(1)) { calendar[date] = new Dictionary <string, TimeSpan>(); } var issues = await client.GetIssues(); var loggedIssues = new List <Issue>(); foreach (var issue in issues) { var worklogs = await client.GetWorklogs(issue.Key, start, end); if (worklogs.Length == 0) { continue; } loggedIssues.Add(issue); foreach (var log in worklogs) { if (!calendar[log.Started.Date].TryGetValue(issue.Key, out var time)) { time = TimeSpan.Zero; } calendar[log.Started.Date][issue.Key] = time.Add(TimeSpan.FromSeconds(log.TimeSpentSeconds)); } } using (var writer = new StreamWriter(output)) { writer.Write("parent key;parent description;issue key;issue description;"); writer.WriteLine(string.Join(';', calendar.Keys.Select(d => d.ToShortDateString()))); writer.Write(";;;;"); var total = TimeSpan.Zero; foreach (var day in calendar) { var sum = TimeSpan.FromSeconds(day.Value.Sum(l => l.Value.TotalSeconds)); total = total.Add(sum); writer.Write(sum); writer.Write(';'); } writer.WriteLine(total); foreach (var issue in loggedIssues.OrderBy(i => i.Key)) { total = TimeSpan.Zero; writer.Write(issue.Fields.Parent != null ? $"{issue.Fields.Parent.Key};{issue.Fields.Parent.Fields.Summary};" : ";;"); writer.Write($"{issue.Key};{issue.Fields.Summary};"); foreach (var day in calendar) { if (day.Value.TryGetValue(issue.Key, out var time)) { total = total.Add(time); writer.Write(time); } writer.Write(';'); } writer.WriteLine(total); } } }