示例#1
0
        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);
        }
示例#2
0
        //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();
        }
示例#3
0
        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);
                }
            }
        }