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); }
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(); } }