Classes/Public/TMProject.ps1

class TMProject {
    #region Non-Static Properties
    [Int]$Id
    [Guid]$Guid
    [String]$Name
    [String]$ProjectCode
    [String]$ProjectType
    [String]$Description
    [String]$Comment
    [String]$PlanMethodology
    [Hashtable]$DefaultBundle
    [Nullable[DateTime]]$DateCreated
    [Int]$CollectMetrics
    [Nullable[DateTime]]$LastUpdated
    [String]$Timezone
    [String]$LogoUrl
    #The following properties are returned by the web service, but not by the REST endpoint:
    [String]$ClientName #This is a string that returns the Id and Name of the client in a format resembling a hashtable
    [Nullable[DateTime]]$StartDate
    [Nullable[DateTime]]$CompletionDate
    [String]$LicenseState
    [String]$LicenseType
    [Nullable[DateTime]]$LicenseActivationDate
    [Nullable[DateTime]]$LicenseExpirationDate

    #endregion Non-Static Properties

    #region Constructors

    TMProject([Object]$object) {
        $this.Id = $object.id
        $this.Guid = $object.guid
        $this.Name = $object.name
        $this.ProjectCode = $object.projectCode
        $this.ProjectType = $object.projectType
        $this.Description = $object.description
        $this.Comment = $object.comment
        $this.PlanMethodology = $object.planMethodology
        $this.DefaultBundle = $object.defaultBundle | ConvertTo-Json | ConvertFrom-Json -AsHashTable
        $this.DateCreated = $object.dateCreated
        $this.CollectMetrics = $object.collectMetrics
        $this.LastUpdated = $object.lastUpdated
        $this.Timezone = $object.timezone
        $this.LogoUrl = $object.logoUrl
        $this.ClientName = $object.clientName
        $this.StartDate = $object.startDate
        $this.CompletionDate = $object.completionDate
        $this.LicenseState = $object.licenseState
        $this.LicenseType = $object.licenseType
        $this.LicenseActivationDate = $object.licenseActivationDate
        $this.LicenseExpirationDate = $object.licenseExpirationDate
    }
    #endregion Constructors
}