private void AddOrUpdateControllerImplementations(RamlChooserActionParams parameters, string contractsFolderPath, Project proj,
                                                          WebApiGeneratorModel model, ProjectItem folderItem, string extensionPath)
        {
            templatesManager.CopyServerTemplateToProjectFolder(contractsFolderPath, ControllerImplementationTemplateName,
                                                               Settings.Default.ControllerImplementationTemplateTitle, TemplateSubFolder);
            var controllersFolderItem = VisualStudioAutomationHelper.AddFolderIfNotExists(proj, "Controllers");

            var templatesFolder = Path.Combine(contractsFolderPath, "Templates");
            var controllerImplementationTemplateParams =
                new TemplateParams <ControllerObject>(
                    Path.Combine(templatesFolder, ControllerImplementationTemplateName),
                    controllersFolderItem, "controllerObject", model.Controllers, contractsFolderPath, folderItem,
                    extensionPath, parameters.TargetNamespace, "Controller", false,
                    GetVersionPrefix(parameters.IncludeApiVersionInRoutePrefix, model.ApiVersion))
            {
                TargetFolder     = TargetFolderResolver.GetImplementationControllersFolderPath(proj, parameters.ImplementationControllersFolder),
                RelativeFolder   = parameters.ImplementationControllersFolder,
                Title            = Settings.Default.ControllerImplementationTemplateTitle,
                IncludeHasModels = true,
                HasModels        = model.Objects.Any(o => o.IsScalar == false) || model.Enums.Any(),
                UseAsyncMethods  = parameters.UseAsyncMethods,
                IncludeApiVersionInRoutePrefix = parameters.IncludeApiVersionInRoutePrefix,
                ApiVersion = model.ApiVersion
            };

            codeGenerator.GenerateCodeFromTemplate(controllerImplementationTemplateParams);
        }
        private void AddOrUpdateControllerImplementations(string targetNamespace, string generatedFolderPath, Project proj,
                                                          WebApiGeneratorModel model, ProjectItem folderItem, string extensionPath, bool useAsyncMethods)
        {
            templatesManager.CopyServerTemplateToProjectFolder(generatedFolderPath, ControllerImplementationTemplateName,
                                                               Settings.Default.ControllerImplementationTemplateTitle);
            var controllersFolderItem = VisualStudioAutomationHelper.AddFolderIfNotExists(proj, "Controllers");
            var controllersFolderPath = Path.GetDirectoryName(proj.FullName) + Path.DirectorySeparatorChar + "Controllers" +
                                        Path.DirectorySeparatorChar;
            var templatesFolder = Path.Combine(generatedFolderPath, "Templates");
            var controllerImplementationTemplateParams =
                new TemplateParams <ControllerObject>(Path.Combine(templatesFolder, ControllerImplementationTemplateName),
                                                      controllersFolderItem, "controllerObject", model.Controllers, controllersFolderPath, folderItem,
                                                      extensionPath, targetNamespace, "Controller", false);

            controllerImplementationTemplateParams.Title            = Settings.Default.ControllerImplementationTemplateTitle;
            controllerImplementationTemplateParams.IncludeHasModels = true;
            controllerImplementationTemplateParams.HasModels        = model.Objects.Any() || model.Enums.Any();
            controllerImplementationTemplateParams.UseAsyncMethods  = useAsyncMethods;
            GenerateCodeFromTemplate(controllerImplementationTemplateParams);
        }