private static WorkItemManger PrepareWorkItemManager(ConnectionManager connectionManager, string teamProjectName) { WorkItemManger workItemManger = new WorkItemManger(connectionManager); workItemManger.SetTeamProject(teamProjectName); return(workItemManger); }
public override void Assemble( WordManipulator manipulator, Dictionary <string, object> parameters, ConnectionManager connectionManager, WordTemplateFolderManager wordTemplateFolderManager, string teamProjectName) { parameters = parameters.ToDictionary(k => k.Key, v => v.Value); //clone //If we do not have query parameters we have a single query or we can have parametrized query with iterationPath var queries = PrepareQueries(parameters); WorkItemManger workItemManger = new WorkItemManger(connectionManager); workItemManger.SetTeamProject(teamProjectName); foreach (var query in queries) { var workItems = workItemManger.ExecuteQuery(query).Take(Limit); if (String.IsNullOrEmpty(TableTemplate)) { foreach (var workItem in workItems) { if (!SpecificTemplates.TryGetValue(workItem.Type.Name, out var templateName)) { templateName = wordTemplateFolderManager.GetTemplateFor(workItem.Type.Name); } else { templateName = wordTemplateFolderManager.GenerateFullFileName(templateName); } manipulator.InsertWorkItem(workItem, templateName, true, parameters); } } else { //We have a table template, we want to export work item as a list var tableFile = wordTemplateFolderManager.GenerateFullFileName(TableTemplate); var tempFile = wordTemplateFolderManager.CopyFileInTempDirectory(tableFile); using (var tableManipulator = new WordManipulator(tempFile, false)) { tableManipulator.SubstituteTokens(parameters); tableManipulator.FillTableWithCompositeWorkItems(true, workItems); } manipulator.AppendOtherWordFile(tempFile); } } base.Assemble(manipulator, parameters, connectionManager, wordTemplateFolderManager, teamProjectName); }
private static void TestExcelExtraction(ConnectionManager connection) { WorkItemManger workItemManger = new WorkItemManger(connection); workItemManger.SetTeamProject("CMMI Playground"); var hr = workItemManger.ExecuteHierarchicQuery(@"SELECT * FROM workitemLinks WHERE ( [Source].[System.TeamProject] = '{teamProjectName}' AND[Source].[System.WorkItemType] = 'Feature' AND[Source].[Microsoft.VSTS.Scheduling.TargetDate] < '2062-01-01T00:00:00.0000000' AND[Source].[Microsoft.VSTS.Scheduling.TargetDate] > '1990-02-02T00:00:00.0000000' ) AND( [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward' ) AND( [Target].[System.TeamProject] = '{teamProjectName}' AND[Target].[System.WorkItemType] <> '' ) MODE(Recursive) ", new[] { "task", "requirement", "feature", "epic" }); var tempFile = @"c:\temp\test2.xlsx"; if (File.Exists(tempFile)) { File.Delete(tempFile); } File.Copy(@"c:\temp\test.xlsx", tempFile); using (ExcelManipulator m = new ExcelManipulator(tempFile)) { m.FillWorkItems(hr); } System.Diagnostics.Process.Start(tempFile); }
private static void PerformStandardIterationExport(ConnectionManager connection) { WorkItemManger workItemManger = new WorkItemManger(connection); workItemManger.SetTeamProject(options.TeamProject); var workItems = workItemManger.LoadAllWorkItemForAreaAndIteration( options.AreaPath, options.IterationPath); var fileName = Path.GetTempFileName() + ".docx"; var templateManager = new TemplateManager("Templates"); var template = templateManager.GetWordDefinitionTemplate(options.TemplateName); using (WordManipulator manipulator = new WordManipulator(fileName, true)) { AddTableContent(manipulator, workItems, template); foreach (var workItem in workItems) { manipulator.InsertWorkItem(workItem, template.GetTemplateFor(workItem.Type.Name), true); } } System.Diagnostics.Process.Start(fileName); }