Private/Invoke-TeamSettingsClasses.ps1
|
enum BugsBehavior { off asRequirements asTasks } enum DayOfWeek { sunday monday tuesday wednesday thursday friday saturday } <# .SYNOPSIS Data contract for what Azure DevOps API expect to receive when using PATCH #> class TeamSettingsPatch { [string]$backlogIteration [object]$backlogVisibilities [BugsBehavior]$bugsBehavior [string]$defaultIteration [string]$defaultIterationMacro [DayOfWeek[]]$workingDays # Default constructor TeamSettingsPatch() { $this.Init(@{}) } # Default constructor for common default values TeamSettingsPatch([bool]$UseDefaults) { if ($UseDefaults) { $this.Init( @{ backlogVisibilities = @{ 'Microsoft.EpicCategory' = $false 'Microsoft.FeatureCategory' = $true 'Microsoft.RequirementCategory' = $true } bugsBehavior = [BugsBehavior]::asTasks defaultIterationMacro = '@currentIteration' workingDays = [DayOfWeek[]]@( [DayOfWeek]::monday, [DayOfWeek]::tuesday, [DayOfWeek]::wednesday, [DayOfWeek]::thursday, [DayOfWeek]::friday ) } ) } else { $this.Init(@{}) } } # Convenience constructor from hashtable TeamSettingsPatch([hashtable]$Properties) { $this.Init($Properties) } # Common constructor for direct parameter assignment TeamSettingsPatch([string]$backlogIteration, [object]$backlogVisibilities, [BugsBehavior]$bugsBehavior, [string]$defaultIteration, [string]$defaultIterationMacro, [DayOfWeek[]]$workingDays) { $this.Init(@{ backlogIteration = $backlogIteration backlogVisibilities = $backlogVisibilities bugsBehavior = $bugsBehavior defaultIteration = $defaultIteration defaultIterationMacro = $defaultIterationMacro workingDays = $workingDays }) } # Shared initializer method [void] Init([hashtable]$Properties) { foreach ($Property in $Properties.Keys) { $this.$Property = $Properties.$Property } } # Method to return a JSON representation of the object [string] AsJson() { $jsonObject = @{ backlogIteration = $this.backlogIteration backlogVisibilities = $this.backlogVisibilities bugsBehavior = [string]$this.bugsBehavior defaultIteration = $this.defaultIteration defaultIterationMacro = $this.defaultIterationMacro workingDays = @($this.workingDays | ForEach-Object { [string]$_ }) } return ($jsonObject | ConvertTo-Json -Depth 3) } # Method to return a Hashtable representation of the object [hashtable] AsHashtable() { $hashTable = @{ backlogIteration = $this.backlogIteration backlogVisibilities = $this.backlogVisibilities bugsBehavior = [string]$this.bugsBehavior defaultIteration = $this.defaultIteration defaultIterationMacro = $this.defaultIterationMacro workingDays = @($this.workingDays | ForEach-Object { [string]$_ }) } return $hashTable } } |