private static void UpdateTeamSettings(string TeamProjectName, string TeamName) { Console.WriteLine("==========Update Settings"); TeamContext teamContext = new TeamContext(TeamProjectName, TeamName); TeamSetting teamSetting = WorkClient.GetTeamSettingsAsync(teamContext).Result; TeamSettingsPatch teamSettingsPatch = new TeamSettingsPatch(); //update backlogs teamSettingsPatch.BacklogVisibilities = teamSetting.BacklogVisibilities; if (teamSettingsPatch.BacklogVisibilities.ContainsKey(BacklogCategories.Epic) && teamSettingsPatch.BacklogVisibilities[BacklogCategories.Epic]) { teamSettingsPatch.BacklogVisibilities[BacklogCategories.Epic] = false; } if (teamSettingsPatch.BacklogVisibilities.ContainsKey(BacklogCategories.Feature) && teamSettingsPatch.BacklogVisibilities[BacklogCategories.Feature]) { teamSettingsPatch.BacklogVisibilities[BacklogCategories.Feature] = false; } //more work teamSettingsPatch.WorkingDays = new DayOfWeek[] { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday }; teamSetting = WorkClient.UpdateTeamSettingsAsync(teamSettingsPatch, teamContext).Result; GetTeamSettings(TeamProjectName, TeamName); }
public TeamSetting UpdateTeamSettings() { IDictionary <string, bool> backlogVisibilities = new Dictionary <string, bool>() { { "Microsoft.EpicCategory", false }, { "Microsoft.FeatureCategory", true }, { "Microsoft.RequirementCategory", true } }; TeamSettingsPatch updatedTeamSettings = new TeamSettingsPatch() { BugsBehavior = BugsBehavior.AsTasks, WorkingDays = new DayOfWeek[] { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday }, BacklogVisibilities = backlogVisibilities }; VssConnection connection = Context.Connection; WorkHttpClient workClient = connection.GetClient <WorkHttpClient>(); Guid projectId = ClientSampleHelpers.FindAnyProject(this.Context).Id; var context = new TeamContext(projectId); TeamSetting result = workClient.UpdateTeamSettingsAsync(updatedTeamSettings, context).Result; Console.WriteLine("Backlog iteration: {0}", result.BacklogIteration.Name); Console.WriteLine("Bugs behavior: {0}", result.BugsBehavior); Console.WriteLine("Default iteration : {0}", result.DefaultIterationMacro); Console.WriteLine("Working days: {0}", String.Join(",", result.WorkingDays.Select <DayOfWeek, string>(dow => { return(dow.ToString()); }))); return(result); }
public TeamSetting UpdateTeamSettings(string project) { IDictionary <string, bool> backlogVisibilities = new Dictionary <string, bool>() { { "Microsoft.EpicCategory", false }, { "Microsoft.FeatureCategory", true }, { "Microsoft.RequirementCategory", true } }; TeamSettingsPatch patchDocument = new TeamSettingsPatch() { BugsBehavior = BugsBehavior.AsRequirements, WorkingDays = new DayOfWeek[] { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday }, BacklogVisibilities = backlogVisibilities }; VssConnection connection = new VssConnection(_uri, _credentials); WorkHttpClient workHttpClient = connection.GetClient <WorkHttpClient>(); var teamContext = new TeamContext(project); TeamSetting result = workHttpClient.UpdateTeamSettingsAsync(patchDocument, teamContext).Result; return(result); }
protected override Models.Team DoSetItem() { var(tpc, tp, t) = GetCollectionProjectAndTeam(); var description = GetParameter <string>(nameof(SetTeam.Description)); var defaultTeam = GetParameter <bool>(nameof(SetTeam.Default)); var defaultAreaPath = GetParameter <string>(nameof(SetTeam.DefaultAreaPath)); var areaPaths = GetParameter <IEnumerable <string> >(nameof(SetTeam.AreaPaths)); var backlogIteration = GetParameter <string>(nameof(SetTeam.BacklogIteration)); var iterationPaths = GetParameter <IEnumerable <string> >(nameof(SetTeam.IterationPaths)); var defaultIteration = GetParameter <string>(nameof(SetTeam.DefaultIterationMacro)); var teamClient = GetClient <TeamHttpClient>(); var projectClient = GetClient <ProjectHttpClient>(); var workClient = GetClient <WorkHttpClient>(); // Set description if (HasParameter("Description") && ShouldProcess(t, $"Set team's description to '{description}'")) { teamClient.UpdateTeamAsync(new WebApiTeam() { Description = description ?? string.Empty }, tp.Id.ToString(), t.Id.ToString()) .GetResult($"Error setting team '{t.Name}''s description to '{description}'"); } // Set default team if (defaultTeam && ShouldProcess(tp, $"Set team '{t.Name} as default'")) { throw new NotImplementedException("Set team as default is currently not supported"); } // Set Team Field / Area Path settings var ctx = new TeamContext(tp.Name, t.Name); var teamFieldPatch = new TeamFieldValuesPatch(); if (!string.IsNullOrEmpty(defaultAreaPath) && ShouldProcess(t, $"Set team's default area path (team field) to '{defaultAreaPath}'")) { if (tpc.IsHosted) { this.Log("Conected to Azure DevOps Services. Treating Team Field Value as Area Path"); defaultAreaPath = NodeUtil.NormalizeNodePath(defaultAreaPath, tp.Name, "Areas", includeTeamProject: true); } if (areaPaths == null) { this.Log("AreaPaths is empty. Adding DefaultAreaPath (TeamFieldValue) to AreaPaths as default value."); areaPaths = new string[] { defaultAreaPath }; } var area = new { Node = defaultAreaPath }; if (!TestItem <Models.ClassificationNode>(area)) { NewItem <Models.ClassificationNode>(area); } this.Log($"Setting default area path (team field) to {defaultAreaPath}"); teamFieldPatch.DefaultValue = defaultAreaPath; } if (areaPaths != null && ShouldProcess(t, $"Set {string.Join(", ", areaPaths)} as team's area paths")) { var values = new List <TeamFieldValue>(); foreach (var a in areaPaths) { values.Add(new TeamFieldValue() { Value = NodeUtil.NormalizeNodePath(a.TrimEnd('\\', '*'), tp.Name, scope: "Areas", includeTeamProject: true), IncludeChildren = a.EndsWith("*") }); } teamFieldPatch.Values = values; workClient.UpdateTeamFieldValuesAsync(teamFieldPatch, ctx) .GetResult("Error applying team field value and/or area path settings"); } // Set backlog and iteration path settings bool isDirty = false; var iterationPatch = new TeamSettingsPatch(); if (backlogIteration != null && ShouldProcess(t, $"Set the team's backlog iteration to '{backlogIteration}'")) { this.Log($"Setting backlog iteration to {backlogIteration}"); var iteration = GetItem <Models.ClassificationNode>(new { Node = backlogIteration, StructureGroup = TreeStructureGroup.Iterations }); iterationPatch.BacklogIteration = iterationPatch.DefaultIteration = iteration.Identifier; isDirty = true; } if (!string.IsNullOrEmpty(defaultIteration) && ShouldProcess(t, $"Set the team's default iteration to '{defaultIteration}'")) { this.Log($"Setting default iteration to '{defaultIteration}'"); if (!defaultIteration.StartsWith("@")) { var iteration = GetItem <Models.ClassificationNode>(new { Node = defaultIteration, StructureGroup = TreeStructureGroup.Iterations }); iterationPatch.DefaultIteration = iteration.Identifier; } else { iterationPatch.DefaultIteration = null; iterationPatch.DefaultIterationMacro = defaultIteration; } isDirty = true; } if (isDirty) { workClient.UpdateTeamSettingsAsync(iterationPatch, ctx) .GetResult("Error applying iteration and/or board settings"); } // TODO: Finish migration // if (BacklogVisibilities && ShouldProcess(Team, $"Set the team"s backlog visibilities to {_DumpObj {BacklogVisibilities}}")) // { // this.Log($"Setting backlog iteration to {BacklogVisibilities}"); // patch.BacklogVisibilities = _NewDictionary @([string], [bool]) BacklogVisibilities // isDirty = true // } // if (DefaultIterationMacro && ShouldProcess(Team, $"Set the team"s default iteration macro to {DefaultIterationMacro}")) // { // this.Log($"Setting default iteration macro to {DefaultIterationMacro}"); // patch.DefaultIterationMacro = DefaultIterationMacro // isDirty = true // } // if (WorkingDays && ShouldProcess(Team, $"Set the team"s working days to {_DumpObj {WorkingDays}}")) // { // this.Log($"Setting working days to {{WorkingDays}|ConvertTo=-Json -Compress}"); // patch.WorkingDays = WorkingDays // isDirty = true // } // if(BugsBehavior && ShouldProcess(Team, $"Set the team"s bugs behavior to {_DumpObj {BugsBehavior}}")) // { // this.Log($"Setting bugs behavior to {_DumpObj {BugsBehavior}}"); // patch.BugsBehavior = BugsBehavior // isDirty = true // } // if(isDirty) // { // task = client.UpdateTeamSettingsAsync(patch, ctx) // result = task.Result; if(task.IsFaulted) { _throw new Exception("Error applying iteration settings" task.Exception.InnerExceptions }) // } // if(Passthru.IsPresent) // { // WriteObject(t); return; // } // } // } return(GetItem <Models.Team>()); }