using System;

namespace Umbraco.Core
{
    public static partial class Constants
    {
        /// <summary>
        /// Defines the identifiers for Umbraco object types as constants for easy centralized access/management.
        /// </summary>
        public static class ObjectTypes
        {
            /// <summary>
            /// Guid for a data type container
            /// </summary>
            public const string DataTypeContainer = "521231E3-8B37-469C-9F9D-51AFC91FEB7B";

            /// <summary>
            /// Guid for a data type container
            /// </summary>
            public static readonly Guid DataTypeContainerGuid = new Guid(DataTypeContainer);

            /// <summary>
            /// Guid for a doc type container
            /// </summary>
            public const string DocumentTypeContainer = "2F7A2769-6B0B-4468-90DD-AF42D64F7F16";

            /// <summary>
            /// Guid for a doc type container
            /// </summary>
            public static readonly Guid DocumentTypeContainerGuid = new Guid(DocumentTypeContainer);

            /// <summary>
            /// Guid for a doc type container
            /// </summary>
            public const string MediaTypeContainer = "42AEF799-B288-4744-9B10-BE144B73CDC4";

            /// <summary>
            /// Guid for a doc type container
            /// </summary>
            public static readonly Guid MediaTypeContainerGuid = new Guid(MediaTypeContainer);

            /// <summary>
            /// Guid for a Content Item object.
            /// </summary>
            public const string ContentItem = "10E2B09F-C28B-476D-B77A-AA686435E44A";

            /// <summary>
            /// Guid for a Content Item Type object.
            /// </summary>
            public const string ContentItemType = "7A333C54-6F43-40A4-86A2-18688DC7E532";

            /// <summary>
            /// Guid for the Content Recycle Bin.
            /// </summary>
            public const string ContentRecycleBin = "01BB7FF2-24DC-4C0C-95A2-C24EF72BBAC8";

            /// <summary>
            /// Guid for a DataType object.
            /// </summary>
            public const string DataType = "30A2A501-1978-4DDB-A57B-F7EFED43BA3C";

            /// <summary>
            /// Guid for a DataType object.
            /// </summary>
            public static readonly Guid DataTypeGuid = new Guid(DataType);

            /// <summary>
            /// Guid for a Document object.
            /// </summary>
            public const string Document = "C66BA18E-EAF3-4CFF-8A22-41B16D66A972";
            
            /// <summary>
            /// Guid for a Document object.
            /// </summary>
            public static readonly Guid DocumentGuid = new Guid(Document);

            /// <summary>
            /// Guid for a Document Blueprint object.
            /// </summary>
            public const string DocumentBlueprint = "6EBEF410-03AA-48CF-A792-E1C1CB087ACA";

            /// <summary>
            /// Guid for a Document object.
            /// </summary>
            public static readonly Guid DocumentBlueprintGuid = new Guid(DocumentBlueprint);

            /// <summary>
            /// Guid for a Document Type object.
            /// </summary>
            public const string DocumentType = "A2CB7800-F571-4787-9638-BC48539A0EFB";

            /// <summary>
            /// Guid for a Document Type object.
            /// </summary>
            public static readonly Guid DocumentTypeGuid = new Guid(DocumentType);

            /// <summary>
            /// Guid for a Media object.
            /// </summary>
            public const string Media = "B796F64C-1F99-4FFB-B886-4BF4BC011A9C";

            /// <summary>
            /// Guid for a Document object.
            /// </summary>
            public static readonly Guid MediaGuid = new Guid(Media);

            /// <summary>
            /// Guid for the Media Recycle Bin.
            /// </summary>
            public const string MediaRecycleBin = "CF3D8E34-1C1C-41e9-AE56-878B57B32113";

            /// <summary>
            /// Guid for a Media Type object.
            /// </summary>
            public const string MediaType = "4EA4382B-2F5A-4C2B-9587-AE9B3CF3602E";

            /// <summary>
            /// Guid for a Media Type object.
            /// </summary>
            public static readonly Guid MediaTypeGuid = new Guid(MediaType);

            /// <summary>
            /// Guid for a Member object.
            /// </summary>
            public const string Member = "39EB0F98-B348-42A1-8662-E7EB18487560";

            /// <summary>
            /// Guid for a Media Type object.
            /// </summary>
            public static readonly Guid MemberGuid = new Guid(Member);

            /// <summary>
            /// Guid for a Member Group object.
            /// </summary>
            public const string MemberGroup = "366E63B9-880F-4E13-A61C-98069B029728";

            /// <summary>
            /// Guid for a Member Group object.
            /// </summary>
            public static readonly Guid MemberGroupGuid = new Guid(MemberGroup);

            /// <summary>
            /// Guid for a Member Type object.
            /// </summary>
            public const string MemberType = "9B5416FB-E72F-45A9-A07B-5A9A2709CE43";

            /// <summary>
            /// Guid for a Member Type object.
            /// </summary>
            public static readonly Guid MemberTypeGuid = new Guid(MemberType);

            /// <summary>
            /// Guid for a Stylesheet object.
            /// </summary>
            [Obsolete("This no longer exists in the database")]
            public const string Stylesheet = "9F68DA4F-A3A8-44C2-8226-DCBD125E4840";

            [Obsolete("This no longer exists in the database")]
            internal const string StylesheetProperty = "5555da4f-a123-42b2-4488-dcdfb25e4111";

            /// <summary>
            /// Guid for the System Root.
            /// </summary>
            public const string SystemRoot = "EA7D8624-4CFE-4578-A871-24AA946BF34D";

            /// <summary>
            /// Guid for a Template object.
            /// </summary>
            public const string Template = "6FBDE604-4178-42CE-A10B-8A2600A2F07D";

            /// <summary>
            /// Guid for a Template object.
            /// </summary>
            public static readonly Guid TemplateTypeGuid = new Guid(Template);

            /// <summary>
            /// Guid for a Lock object.
            /// </summary>
            public const string LockObject = "87A9F1FF-B1E4-4A25-BABB-465A4A47EC41";

            /// <summary>
            /// Guid for a Lock object.
            /// </summary>
            public static readonly Guid LockObjectGuid = new Guid(LockObject);

            /// <summary>
            /// Guid for a relation type.
            /// </summary>
            public const string RelationType = "B1988FAD-8675-4F47-915A-B3A602BC5D8D";

            /// <summary>
            /// Guid for a relation type.
            /// </summary>
            public static readonly Guid RelationTypeGuid = new Guid(RelationType);

            /// <summary>
            /// Guid for a Forms Form.
            /// </summary>
            public const string FormsForm = "F5A9F787-6593-46F0-B8FF-BFD9BCA9F6BB";

            /// <summary>
            /// Guid for a Forms Form.
            /// </summary>
            public static readonly Guid FormsFormGuid = new Guid(FormsForm);

            /// <summary>
            /// Guid for a Forms PreValue Source.
            /// </summary>
            public const string FormsPreValue = "42D7BF9B-A362-4FEE-B45A-674D5C064B70";

            /// <summary>
            /// Guid for a Forms PreValue Source.
            /// </summary>
            public static readonly Guid FormsPreValueGuid = new Guid(FormsPreValue);

            /// <summary>
            /// Guid for a Forms DataSource.
            /// </summary>
            public const string FormsDataSource = "CFED6CE4-9359-443E-9977-9956FEB1D867";

            /// <summary>
            /// Guid for a Forms DataSource.
            /// </summary>
            public static readonly Guid FormsDataSourceGuid = new Guid(FormsDataSource);

            /// <summary>
            /// Guid for a Language.
            /// </summary>
            public const string Language = "6B05D05B-EC78-49BE-A4E4-79E274F07A77";

            /// <summary>
            /// Guid for a Forms DataSource.
            /// </summary>
            public static readonly Guid LanguageGuid = new Guid(Language);
        }
    }
}