lib/Classes/Public/TMTask.ps1
class TMTask { #region Non-Static Properties [System.Int64]$Id [System.Int64]$TaskNumber [System.String]$Title [System.String]$Comment [ValidateSet('Hold', 'Planned', 'Ready', 'Pending', 'Started', 'Completed', 'Terminated')] [System.String]$Status [Nullable[System.DateTime]]$StatusUpdated [System.String]$StatusUpdatedElapsed [Nullable[System.DateTime]]$LastUpdated [System.String]$LastUpdatedElapsed [TMTaskAction]$Action [TMTaskAsset]$Asset [TMReference]$AssignedTo [TMReference]$CreatedBy [System.String]$Category [Nullable[System.DateTime]]$DateCreated [ValidateRange(0, 1)] [System.Int64]$HardAssigned [System.Int64]$EstDurationMinutes [String]$EstStart [String]$EstFinish [System.Object]$Slack [System.Boolean]$IsCriticalPath [Nullable[System.DateTime]]$ActStart [Nullable[System.DateTime]]$ActFinish [System.String]$Team [System.Boolean]$IsPublished [ValidateRange(0, 100)] [System.Int64]$PercentageComplete [TMReference]$Project [System.Boolean]$IsActionInvocableLocally [System.Boolean]$IsActionInvocableRemotely [System.Boolean]$IsAutomatic [System.Int64]$Duration [System.Boolean]$SendNotification [ValidateRange(1, 5)] [System.Int64]$Priority [TMReference]$Event [Nullable[System.DateTime]]$DueDate [System.String]$InstructionsLink [TMTaskDependency[]]$Predecessors [TMTaskDependency[]]$Successors #endregion Non-Static Properties #region Static Properties static [String[]]$ValidStatuses = @( 'Hold', 'Planned', 'Ready', 'Pending', 'Started', 'Completed', 'Terminated' ) static [String[]]$ValidCategories = @( 'general', 'discovery', 'analysis', 'design', 'planning', 'buildout', 'walkthru', 'premove', 'moveday', 'shutdown', 'physical', 'transport', 'startup', 'verify', 'postmove', 'closeout', 'learning' ) #endregion Static Properties #region Constructors TMTask() {} TMTask([Object]$_object) { $this.Id = $_object.id $this.TaskNumber = $_object.taskNumber $this.Comment = $_object.title ? $_object.title : $_object.comment $this.Title = $_object.title ? $_object.title : $_object.comment $this.Status = $_object.status $this.StatusUpdated = $_object.statusUpdated $this.StatusUpdatedElapsed = $_object.statusUpdatedElapsed $this.LastUpdated = $_object.lastUpdated $this.LastUpdatedElapsed = $_object.lastUpdatedElapsed $this.Action = [TMTaskAction]::new(($_object.action ? $_object.action : $_object.apiAction)) $this.Asset = [TMTaskAsset]::new($_object.asset) $this.AssignedTo = [TMReference]::new($_object.assignedTo) $this.CreatedBy = [TMReference]::new($_object.createdBy) $this.Category = $_object.category $this.DateCreated = $_object.dateCreated $this.HardAssigned = $_object.hardAssigned $this.EstDurationMinutes = $_object.estDurationMinutes $this.EstStart = $_object.estStart $this.EstFinish = $_object.estFinish $this.Slack = $_object.slack $this.IsCriticalPath = $_object.isCriticalPath $this.ActStart = $_object.actStart $this.ActFinish = $_object.actFinish $this.Team = $_object.team $this.IsPublished = $_object.isPublished $this.PercentageComplete = $_object.percentageComplete $this.Project = [TMReference]::new($_object.project) $this.IsActionInvocableLocally = $_object.isActionInvocableLocally $this.IsActionInvocableRemotely = $_object.isActionInvocableRemotely $this.IsAutomatic = $_object.isAutomatic $this.Duration = $_object.duration $this.SendNotification = $_object.sendNotification $this.Priority = $_object.priority $this.Event = [TMReference]::new($_object.event) $this.DueDate = $_object.dueDate $this.InstructionsLink = $_object.instructionsLink $this.Predecessors = $_object.predecessors | ForEach-Object { [TMTaskDependency]::new($_) } $this.Successors = $_object.successors | ForEach-Object { [TMTaskDependency]::new($_) } } #endregion Constructors #region Non-Static Methods hidden [PSCustomObject]GetWSUpdateObject() { $ReturnObject = [PSCustomObject]@{ id = $this.Id comment = $this.comment ? $this.comment : $this.Title project = $this.Project.Id status = $this.Status assignedTo = $this.AssignedTo.id apiAction = $this.Action.Id apiActionId = $this.Action.Id category = $this.Category assetEntity = $this.Asset.Id hardAssigned = $this.HardAssigned moveEvent = $this.Event.id priority = $this.Priority role = $this.Team percentageComplete = $this.PercentageComplete sendNotification = $this.SendNotification ? 1 : 0 instructionsLink = $this.InstructionsLink duration = $this.Duration durationScale = 'M' durationLocked = 0 taskDependency = @() taskSuccessor = @() } foreach ($Predecessor in $this.Predecessors) { if (-not $Predecessor.Id -or $Predecessor.Id -eq 0) { $Predecessor.Id = -1 } $ReturnObject.taskDependency += "$($Predecessor.Id)_$($Predecessor.TaskId)" } foreach ($Successor in $this.Successors) { if (-not $Successor.Id -or $Successor.Id -eq 0) { $Successor.Id = -1 } $ReturnObject.taskSuccessor += "$($Successor.Id)_$($Successor.TaskId)" } return $ReturnObject } hidden [PSCustomObject]GetApiUpdateObject([String]$_note) { $ReturnObject = [PSCustomObject]@{ action = @{ id = $this.Action.Id } asset = @{ id = $this.Asset.Id } event = @{ id = $this.Event.id } assignedTo = $this.AssignedTo.id category = $this.Category comment = $this.comment ? $this.comment : $this.title title = $this.comment ? $this.comment : $this.title hardAssigned = $this.HardAssigned instructionsLink = $this.InstructionsLink percentageComplete = $this.PercentageComplete priority = $this.Priority role = $this.Team status = $this.Status currentStatus = $this.Status sendNotification = $this.SendNotification ? 1 : 0 project = $this.Project.Id note = $_note predecessors = @() successors = @() } foreach ($Predecessor in $this.Predecessors) { if (-not $Predecessor.Id -or $Predecessor.Id -eq 0) { $Predecessor.Id = -1 } $ReturnObject.predecessors += @{id = $Predecessor.Id; taskId = $Predecessor.TaskId } } foreach ($Successor in $this.Successors) { if (-not $Successor.Id -or $Successor.Id -eq 0) { $Successor.Id = -1 } $ReturnObject.successors += @{id = $Successor.Id; taskId = $Successor.TaskId } } return $ReturnObject } #endregion Non-Static Methods } class TMTaskAction { #region Non-Static Properties [System.Int64]$Id [System.String]$Name [System.Boolean]$IsRemote [TMTaskActionActionType]$ActionType [System.String]$Description [Nullable[System.DateTime]]$InvokedAt [System.Object]$CompletedAt #endregion Non-Static Properties #region Constructors TMTaskAction() {} TMTaskAction([Object]$_object) { $this.Id = $_object.id $this.Name = $_object.name $this.IsRemote = $_object.isRemote $this.ActionType = [TMTaskActionActionType]::new($_object.actionType) $this.Description = $_object.description $this.InvokedAt = $_object.invokedAt $this.CompletedAt = $_object.completedAt } #endregion Constructors } class TMTaskActionActionType { #region Non-Static Properties [System.String]$Id [System.String]$Name #endregion Non-Static Properties #region Constructors TMTaskActionActionType() {} TMTaskActionActionType([System.String]$_id, [System.String]$_name) { $this.Id = $_id $this.Name = $_name } TMTaskActionActionType([string]$_object) { $this.Id = $_object $this.Name = $_object } TMTaskActionActionType([Object]$_object) { $this.Id = $_object.id $this.Name = $_object.name } #endregion Constructors } class TMTaskAsset { #region Non-Static Properties [System.Int64]$Id [System.String]$Name [System.String]$Class [System.String]$Type [TMReference]$Bundle #endregion Non-Static Properties #region Constructors TMTaskAsset() {} TMTaskAsset([System.Int64]$_id, [System.String]$_name, [System.String]$_class, [System.String]$_type, [TMReference]$_bundle) { $this.Id = $_id $this.Name = $_name $this.Class = $_class $this.Type = $_type $this.Bundle = [TMReference]::new($_bundle) } TMTaskAsset([Object]$_object) { $this.Id = $_object.id $this.Name = $_object.name $this.Class = $_object.class $this.Type = $_object.type $this.Bundle = [TMReference]::new($_object.bundle) } #endregion Constructors } class TMTaskDependency { #region Non-Static Properties [System.Int64]$Id [System.Int64]$TaskId [System.Int64]$Number [System.String]$Title #endregion Non-Static Properties #region Constructors TMTaskDependency() {} TMTaskDependency([System.Int64]$_id, [System.Int64]$_taskId, [System.Int64]$_number, [System.String]$_title) { $this.Id = $_id $this.TaskId = $_taskId $this.Number = $_number $this.Title = $_title } TMTaskDependency([Object]$_object) { $this.Id = $_object.id $this.TaskId = $_object.taskId $this.Number = $_object.number $this.Title = $_object.title } #endregion Constructors } |