#pragma warning disable 1591
#pragma warning disable 0108
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by Rainbow JS CodeGeneration.
//     (https://github.com/asmagin/rainbow-js-codegeneration)
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace <%= solutionX %>.<%= moduleTypeX %>.<%= moduleNameX %>.Models
{
    using System;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.Linq;
    using System.Text;
    using Glass.Mapper.Sc.Configuration.Attributes;
    using Glass.Mapper.Sc.Configuration;
    using Glass.Mapper.Sc.Fields;
    using Sitecore.Globalization;
    using Sitecore.Data;
    using Sitecore.Data.Items;

    {{#each options.Using}}
    using {{this}};
    {{/each}}

    {{#each templates}}

    /// <summary>
    /// {{this.AsInterface}} Interface
    /// <para>Path: {{this.Path}}</para>
    /// <para>ID: {{this.ID}}</para>
    /// </summary>
    [SitecoreType(TemplateId="{{this.ID}}")]
    public partial interface {{this.AsInterface}}: {{#each this.BaseTemplates}}{{this.AsInterface}}, {{/each}}IGlassBase
    {
        {{#each this.Fields}}

        /// <summary>
        /// The {{this.PropertyName}} field.
        /// <para>Field Type: {{this.Type}}</para>
        /// <para>Field ID: {{this.ID}}</para>
        /// </summary>
        [SitecoreField("{{this.Name}}")]
        {{{this.AsPropertyType}}} {{this.AsProperty}} {get; set;}
        {{/each}}

    }


    /// <summary>
    /// {{this.AsClass}} Class
    /// <para>Path: {{this.Path}}</para>
    /// <para>ID: {{this.ID}}</para>
    /// </summary>
    [SitecoreType(TemplateId="{{this.ID}}")]
    public partial class {{this.AsClass}}: GlassBase, {{this.AsInterface}}
    {
        /// <summary>
        /// The TemplateId string for {{this.Path}}
        /// </summary>
        public const string TemplateId = "{{this.ID}}";

        {{#each this.Fields}}
        /// <summary>
        /// The {{this.Name}} field.
        /// <para>Field Type: {{this.Type}}</para>
        /// <para>Field ID: {{this.ID}}</para>
        /// </summary>
        [SitecoreField("{{this.Name}}")]
        public {{{this.AsPropertyType}}} {{this.AsProperty}} {get; set;}
        public const string {{this.AsProperty}}FieldId = "{{this.ID}}";
        public const string {{this.AsProperty}}FieldName = "{{this.Name}}";

        {{/each}}
    }

    {{/each}}
}