// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for
// license information.
// 
// Code generated by Microsoft (R) AutoRest Code Generator 0.16.0.0
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.

namespace Microsoft.Azure.Management.DevTestLabs.Models
{
    using System;
    using System.Linq;
    using System.Collections.Generic;
    using Newtonsoft.Json;
    using Microsoft.Rest;
    using Microsoft.Rest.Serialization;
    using Microsoft.Rest.Azure;

    /// <summary>
    /// An environment, which is essentially an ARM template deployment.
    /// </summary>
    [JsonTransformation]
    public partial class DtlEnvironment : Resource
    {
        /// <summary>
        /// Initializes a new instance of the DtlEnvironment class.
        /// </summary>
        public DtlEnvironment() { }

        /// <summary>
        /// Initializes a new instance of the DtlEnvironment class.
        /// </summary>
        public DtlEnvironment(string id = default(string), string name = default(string), string type = default(string), string location = default(string), IDictionary<string, string> tags = default(IDictionary<string, string>), EnvironmentDeploymentProperties deploymentProperties = default(EnvironmentDeploymentProperties), string armTemplateDisplayName = default(string), string resourceGroupId = default(string), string createdByUser = default(string), string provisioningState = default(string), string uniqueIdentifier = default(string))
            : base(id, name, type, location, tags)
        {
            DeploymentProperties = deploymentProperties;
            ArmTemplateDisplayName = armTemplateDisplayName;
            ResourceGroupId = resourceGroupId;
            CreatedByUser = createdByUser;
            ProvisioningState = provisioningState;
            UniqueIdentifier = uniqueIdentifier;
        }

        /// <summary>
        /// The deployment properties of the environment.
        /// </summary>
        [JsonProperty(PropertyName = "properties.deploymentProperties")]
        public EnvironmentDeploymentProperties DeploymentProperties { get; set; }

        /// <summary>
        /// The display name of the Azure Resource Manager template that
        /// produced the environment.
        /// </summary>
        [JsonProperty(PropertyName = "properties.armTemplateDisplayName")]
        public string ArmTemplateDisplayName { get; set; }

        /// <summary>
        /// The identifier of the resource group containing the environment's
        /// resources.
        /// </summary>
        [JsonProperty(PropertyName = "properties.resourceGroupId")]
        public string ResourceGroupId { get; private set; }

        /// <summary>
        /// The creator of the environment.
        /// </summary>
        [JsonProperty(PropertyName = "properties.createdByUser")]
        public string CreatedByUser { get; private set; }

        /// <summary>
        /// The provisioning status of the resource.
        /// </summary>
        [JsonProperty(PropertyName = "properties.provisioningState")]
        public string ProvisioningState { get; set; }

        /// <summary>
        /// The unique immutable identifier of a resource (Guid).
        /// </summary>
        [JsonProperty(PropertyName = "properties.uniqueIdentifier")]
        public string UniqueIdentifier { get; set; }

    }
}
