public static List <ExtendedTimetrackerRow> ExtendWithAdditionalFields(CommandLineOptions options, ExportItemViewModelApi[] timeExportResult)
        {
            var extender = new TFSExtender(options.TfsUrl, options.VstsToken);

            var extendedData = new List <ExtendedTimetrackerRow>();

            string[] tfsFields = new string[0];
            if (options.TfsFields != null)
            {
                tfsFields = options.TfsFields.ToArray();
            }

            foreach (var row in timeExportResult)
            {
                var extendedRow = new ExtendedTimetrackerRow
                {
                    TimetrackerRow = row
                };

                extendedData.Add(extendedRow);

                //non tfs
                if (row.TFSID == null)
                {
                    continue;
                }

                extendedRow.TfsData = extender.GetTfsItemData(row.TFSID.Value, tfsFields);
            }

            return(extendedData);
        }
Example #2
0
        private static void Main(string[] args)
        {
            bool parsed            = false;
            CommandLineOptions cmd = null;

            // Get parameters
            CommandLine.Parser.Default.ParseArguments <CommandLineOptions>(args).WithParsed(x =>
            {
                parsed = true;
                cmd    = x;
            })
            .WithNotParsed(x => { Program.WriteLogLine("Check https://github.com/laugel/timetracker-excel-exporter to get samples of usage"); });

            if (!parsed)
            {
                Console.ReadLine();
                return;
            }

            tfsExtender = new TFSExtender(cmd.TfsUrl, cmd.VstsToken);

            // Create OData service context
            var context = cmd.IsWindowsAuth
                ? new TimetrackerOdataContext(cmd.ServiceUri)
                : new TimetrackerOdataContext(cmd.ServiceUri, cmd.Token);


            if (!string.IsNullOrEmpty(cmd.StartDate) && !string.IsNullOrEmpty(cmd.EndDate))
            {
                StartDate = DateTime.ParseExact(cmd.StartDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
                EndDate   = DateTime.ParseExact(cmd.EndDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);
            }
            else
            { // fallback
                StartDate = new DateTime(2018, 6, 1);
                //StartDate = DateTime.Today.AddDays(-7);
                //StartDate = DateTime.Today.AddMonths(-6);
                EndDate = new DateTime(2018, 10, 31);
                //EndDate = DateTime.Today;
            }
            // tests only
            //var workItems = tfsExtender.GetMultipleTfsItemsDataWithoutCache(new int[] { 11251, 8385, 2934 });


            var timeExport = context.Container.TimeExport(StartDate.ToString(DateParametersFormat), EndDate.ToString(DateParametersFormat), null, null, null);

            timeExport = timeExport.AddQueryOption("api-version", "2.1");
            Program.WriteLogLine("Calling Timetracker API...");
            ExportItemViewModelApi[] timeExportResult = timeExport.ToArray();

            Program.WriteLogLine("Loading parents...");

            GroupedTimeRecords groupedItems = GroupItemsAndLoadParents(timeExportResult);

            Program.WriteLogLine("Exporting...");

            var filePath = new ExcelExporter().ExportAsExcel(groupedItems);

            if (cmd.OpenFileAfterGeneration)
            {
                Program.WriteLogLine($"Opening ${filePath} ...");
                Process.Start(filePath);
            }

            Program.WriteLogLine("Finished.");
            if (cmd.ForcePauseBeforeExit)
            {
                Program.WriteLogLine("Press ENTER to exit.");
                Console.ReadLine();
            }
        }