public override ITemplateFileConfig GetTemplateFileConfig()
 {
     return(new TemplateFileConfig(
                fileName: $"{ComponentName.ToKebabCase()}.component",
                fileExtension: "html",
                relativeLocation: $"{string.Join("/", Model.GetParentFolderNames())}/{(Model.GetAngularComponentSettings().InOwnFolder() ? $"/{ComponentName.ToKebabCase()}" : "")}"));
 }
        public override ITemplateFileConfig GetTemplateFileConfig()
        {
            var moduleTemplate = ExecutionContext.FindTemplateInstance <Module.AngularModuleTemplate.AngularModuleTemplate>(Module.AngularModuleTemplate.AngularModuleTemplate.TemplateId, Model.Module);

            return(new TemplateFileConfig(
                       fileName: $"{ComponentName.ToKebabCase()}.component",
                       fileExtension: "scss",
                       relativeLocation: $"{string.Join("/", Model.GetParentFolderNames())}/{(Model.GetAngularComponentSettings().InOwnFolder() ? $"/{ComponentName.ToKebabCase()}" : "")}"
                       ));
        }
        /// <summary>
        /// Create the template output
        /// </summary>
        public override string TransformText()
        {
            this.Write("import { Component, OnInit } from \'@angular/core\';");

            #line 11 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetImports()));

            #line default
            #line hidden
            this.Write("\r\n\r\n@Component({\r\n  selector: \'");

            #line 14 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetSelector()));

            #line default
            #line hidden
            this.Write("\',\r\n  templateUrl: \'./");

            #line 15 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ComponentName.ToKebabCase()));

            #line default
            #line hidden
            this.Write(".component.html\',\r\n  styleUrls: [\'./");

            #line 16 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ComponentName.ToKebabCase()));

            #line default
            #line hidden
            this.Write(".component.scss\']\r\n})\r\nexport class ");

            #line 18 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(ClassName));

            #line default
            #line hidden
            this.Write(" implements OnInit {\r\n");

            #line 19 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            foreach (var model in Model.Inputs)
            {
            #line default
            #line hidden
                this.Write("  ");

            #line 20 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(model.Name));

            #line default
            #line hidden
                this.Write(": ");

            #line 20 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(model.TypeReference)));

            #line default
            #line hidden
                this.Write(";\r\n");

            #line 21 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            }

            #line default
            #line hidden

            #line 22 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            foreach (var model in Model.Outputs)
            {
            #line default
            #line hidden
                this.Write("  @");

            #line 23 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(this.UseType("Output", "@angular/core")));

            #line default
            #line hidden
                this.Write("() ");

            #line 23 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(model.Name));

            #line default
            #line hidden
                this.Write(" = new ");

            #line 23 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(this.UseType("EventEmitter", "@angular/core")));

            #line default
            #line hidden
                this.Write("<");

            #line 23 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(model.TypeReference)));

            #line default
            #line hidden
                this.Write(">();\r\n");

            #line 24 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            }

            #line default
            #line hidden

            #line 25 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            foreach (var model in Model.Models)
            {
            #line default
            #line hidden
                this.Write("  ");

            #line 26 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(model.Name));

            #line default
            #line hidden
                this.Write(": ");

            #line 26 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(GetTypeName(model.TypeReference)));

            #line default
            #line hidden
                this.Write(";\r\n");

            #line 27 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            }

            #line default
            #line hidden
            this.Write("\r\n  //@IntentCanAdd()\r\n  constructor(");

            #line 30 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetConstructorParams()));

            #line default
            #line hidden
            this.Write(") { }\r\n\r\n  ");

            #line 32 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(this.IntentIgnoreDecorator()));

            #line default
            #line hidden
            this.Write("\r\n  ngOnInit() {");

            #line 33 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(GetDecoratorsOutput(x => x.OnInit())));

            #line default
            #line hidden
            this.Write("\r\n  }\r\n");

            #line 35 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            foreach (var command in Model.Commands)
            {
            #line default
            #line hidden
                this.Write("\r\n  ");

            #line 37 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(this.IntentIgnoreBodyDecorator()));

            #line default
            #line hidden
                this.Write("\r\n  ");

            #line 38 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(command.Name.ToCamelCase()));

            #line default
            #line hidden
                this.Write("(");

            #line 38 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(GetParameters(command)));

            #line default
            #line hidden
                this.Write("): ");

            #line 38 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(GetReturnType(command)));

            #line default
            #line hidden
                this.Write(" {\r\n    // write your business logic here for this command\r\n  }\r\n");

            #line 41 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            }

            #line default
            #line hidden

            #line 42 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            foreach (var navigation in Model.NavigateToComponents().Where(x => x.IsNavigable))
            {
            #line default
            #line hidden

            #line 43 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(GetNavigationCommand(navigation)));

            #line default
            #line hidden
                this.Write("\r\n");

            #line 44 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            }

            #line default
            #line hidden

            #line 45 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            foreach (var navigation in Model.NavigateBackComponents().Where(x => x.IsNavigable))
            {
            #line default
            #line hidden

            #line 46 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(GetNavigationCommand(navigation)));

            #line default
            #line hidden
                this.Write("\r\n");

            #line 47 "C:\Dev\Intent.Modules.Web\Intent.Modules.Angular\Templates\Component\AngularComponentTsTemplate\AngularComponentTsTemplate.tt"
            }

            #line default
            #line hidden
            this.Write("}\r\n");
            return(this.GenerationEnvironment.ToString());
        }