public async Task <IActionResult> TemplateBuilder()
        {
            string type = string.Empty;
            string id   = string.Empty;

            if (QueryParameters != null && QueryParameters.Length > 0)
            {
                type = QueryParameters[0].ToString();
                id   = QueryParameters[1].ToString();
            }
            int templateid = 0;

            int.TryParse(id, out templateid);
            Post post = null;

            if (type != string.Empty && templateid > 0)
            {
                TemplatePost templatePost             = new TemplatePost();
                DynamicComponentController controller = new DynamicComponentController();
                bool isDevelopmentMode = CurrentHostEnvironment.IsDevelopment;
                templatePost.PostTypeFields  = "\"[]\"";
                templatePost.PostTemplateObj = "{}";
                templatePost.TemplateType    = type;
                Template postTemplate;
                templatePost.IsEdit = 0;
                //string componentJsPath = _hostingEnvironment.WebRootPath + "/DynamicPost/PostTemplate/Assets/js/component/exec_component.js";
                //if (System.IO.File.Exists(componentJsPath))
                //{
                //    System.IO.File.Delete(componentJsPath);
                //}
                //string componentJsPathLive = _hostingEnvironment.WebRootPath + "/DynamicPost/PostTemplate/Assets/js/component/exec_component.live.js";
                //if (!isDevelopmentMode && System.IO.File.Exists(componentJsPathLive))
                //{
                //    System.IO.File.Copy(componentJsPathLive, componentJsPath);
                //}

                if (type == "edit")
                {
                    postTemplate = await controller.GetTemplateById(templateid, GetSiteID);

                    if (postTemplate == null || postTemplate.TemplateId == 0)
                    {
                        throw new Exception("Template not found.");
                    }
                    post = await GetPostById(postTemplate.PostId);

                    templatePost.Post            = post;
                    templatePost.PostTypeFields  = post.Form;
                    templatePost.Template        = postTemplate;
                    templatePost.PostTemplateObj = Newtonsoft.Json.JsonConvert.SerializeObject(postTemplate);
                    templatePost.IsEdit          = 1;
                }
                else if (type == "list" || type == "detail")
                {
                    post = await GetPostById(templateid);

                    templatePost.Post                = post;
                    templatePost.PostTypeFields      = post.Form;
                    templatePost.Template            = new Template();
                    templatePost.Template.TemplateId = templateid;
                    if (type == "detail" && post.HasDetail == false)
                    {
                        throw new Exception(post.Name + " does not have detail.");
                    }
                }
                else
                {
                    throw new Exception("Invalid Post Template");
                }
                AddJS(new AssetLocation()
                {
                    FileName = "webbuilder_overrides", FilePath = "/DynamicPost/PostTemplate/Assets/js/webbuilder_overrides.js", Position = AssetPosition.Header
                });
                AddJS("handlebars", "/DynamicPost/Assets/handlebars/handlebars.min.js");
                AddJS("templates", "/DynamicPost/PostTemplate/Assets/js/handlebars/templates.js");
                //AddJS("webbuilder_overrides", "/DynamicPost/PostTemplate/Assets/js/webbuilder_overrides.js");
                AddJS("template_builder", "/DynamicPost/PostTemplate/Assets/js/template_builder.js");
                AddJS("TemplateBuilderPlugins", "/DynamicPost/PostTemplate/Assets/js/TemplateBuilderPlugins.js");
                AddJS("SageMediaManagement", "/cbuilderassets/js/SageMediaManagement.js");
                AddJS("html2canvas", "/DynamicPost/PostTemplate/Assets/js/html2canvas.min.js");
                if (isDevelopmentMode)
                {
                    AddJS("component_template", "/DynamicPost/PostTemplate/Assets/js/component_template.js");
                }
                else
                {
                    AddJS("component_template", "/DynamicPost/PostTemplate/Assets/js/component_template.live.js");
                }
                return(View(templatePost));
            }
            else
            {
                ActionMessage("No post found.", MessageType.Error);
                string redirectURI = nameof(PostTemplate);
                return(RedirectToAction(redirectURI));
            }
        }