/// <summary>
        /// Criação da camada de Domínio - Domain Service ou BLL (Business Logic Layer)
        /// </summary>
        /// <param name="projetoDoContexto"></param>
        /// <param name="entidade"></param>
        /// <param name="contextoDoBanco"></param>
        /// <param name="efMetadata"></param>
        private void ServicoTipado(Project projeto, CodeType entidade, TipoDoModelo contextoDoBanco, ModelMetadata efMetadata)
        {
            //// Os serviços sempre devem estar no mesmo projeto que as entidades
            //var namespaceDoServico = ScaffoldHelpers.ObterNamespaceAnterior(entidade.Namespace.FullName) + "." + Constantes.Pastas.Servicos;

            //// Get the selected code type
            //var defaultNamespace = (project.Name + ".BLL");

            //string modelTypeVariable = GetTypeVariable(codeType.Name);

            //string BLLName = codeType.Name + "Service";
            //string outputFolderPath = Path.Combine(selectionRelativePath, BLLName);

            //// Setup the scaffolding item creation parameters to be passed into the T4 template.
            //var parameters = new Dictionary<string, object>()
            //{
            //    {"ModelType", codeType},
            //    {"Namespace", defaultNamespace},
            //    {"dbContext", dbContextClass.ShortTypeName},
            //    {"MetadataModel", efMetadata},
            //    {"EntitySetVariable", modelTypeVariable},
            //    {"RequiredNamespaces", new HashSet<string>(){codeType.Namespace.FullName, (project.Name + ".Models")}}
            //};

            //// Add the custom scaffolding item from T4 template.
            //this.AddFileFromTemplate(project,
            //    outputFolderPath,
            //    "BLL",
            //    parameters,
            //    skipIfExists: _viewModel.SkipIfExists);
        }
        /// <summary>
        /// Criação do MVC API Controller
        /// </summary>
        /// <param name="projeto"></param>
        /// <param name="entidade"></param>
        /// <param name="diretorioRelativo"></param>
        /// <param name="namespacePadrao"></param>
        /// <param name="namespaceDoContexto"></param>
        /// <param name="efMetadata"></param>
        private void NgControle(
            Project projeto,
            CodeType entidade,
            string diretorioRelativo,
            string namespacePadrao,
            TipoDoModelo contextoDoBanco,
            ModelMetadata efMetadata
            )
        {
            diretorioRelativo = diretorioRelativo + Constantes.Pastas.Controles + "\\";

            // Pasta de Modelos
            //var namespaceDoModelo = string.Empty;

            //if (string.IsNullOrEmpty(namespacePadrao))
            //    namespaceDoModelo = projeto.Name + "." + Constantes.Pastas.Modelos;
            //else
            //    namespaceDoModelo = namespacePadrao + "." + Constantes.Pastas.Modelos;

            // Os serviços sempre devem estar no mesmo projeto que as entidades
            var namespaceDoServico = ScaffoldHelpers.ObterNamespaceAnterior(entidade.Namespace.FullName) + "." + Constantes.Pastas.Servicos;

            // Pastas de Controles
            if (string.IsNullOrEmpty(namespacePadrao))
            {
                namespacePadrao = (projeto.Name + "." + Constantes.Pastas.Controles);
            }
            else
            {
                namespacePadrao += "." + Constantes.Pastas.Controles;
            }

            string arquivoDeDestino = Path.Combine(diretorioRelativo, entidade.Name + "Controller");

            // Define os parâmetros do scaffold. Modo de transmitir os dados da entidade e o namespace
            var parametros = ScaffoldHelpers.ParametrosDoTemplate(entidade, namespacePadrao, contextoDoBanco, efMetadata, entidade.Namespace.FullName, namespaceDoServico, contextoDoBanco.CodeType.Namespace.FullName);

            // Adiciona a classe base dos controles API com Authorize
            this.AddFileFromTemplate(
                projeto,
                Path.Combine(diretorioRelativo, "SecurityAPIController"),
                Constantes.Pastas.Controles + "\\SecurityAPI",
                ScaffoldHelpers.ParametrosDoTemplate(entidade, namespacePadrao, contextoDoBanco, efMetadata),
                true
                );

            // Adiciona o template T4 do CONTROLE
            this.AddFileFromTemplate(
                projeto,
                arquivoDeDestino,
                Constantes.Pastas.Controles + "\\MVVM",
                parametros,
                _viewModel.IgnorarSeExitir
                );
        }
        // Criação da área

        // Criação da ViewModel, em um modelo MVVM com AngularJS

        /// <summary>
        /// Criação da View usando AngularJS
        /// </summary>
        /// <param name="projetoCorrente"></param>
        /// <param name="entidade"></param>
        /// <param name="diretorioRelativo"></param>
        /// <param name="namespacePadrao"></param>
        /// <param name="contextoDoBanco"></param>
        /// <param name="efMetadata"></param>
        private void NgVisao(Project projeto, CodeType entidade, string diretorioRelativo, string namespacePadrao, TipoDoModelo contextoDoBanco, ModelMetadata efMetadata)
        {
            throw new NotImplementedException();
        }
 /// <summary>
 /// Criação do Repositório na camada de Persistência - Infrastructure.Data
 /// </summary>
 /// <param name="projetoDoContexto"></param>
 /// <param name="entidade"></param>
 /// <param name="contextoDoBanco"></param>
 /// <param name="efMetadata"></param>
 private void RepositorioTipado(Project projetoDoContexto, CodeType entidade, TipoDoModelo contextoDoBanco, ModelMetadata efMetadata)
 {
     throw new NotImplementedException();
 }
Beispiel #5
0
        /// <summary>
        /// Define os parâmetros do scaffold
        /// </summary>
        /// <param name="entidade"></param>
        /// <param name="namespacePadrao"></param>
        /// <param name="metaData"></param>
        /// <param name="modelNamespace"></param>
        /// <param name="tipoNamespace"></param>
        /// <returns></returns>
        public static Dictionary <string, object> ParametrosDoTemplate(CodeType entidade, string namespacePadrao, TipoDoModelo contextoDoBanco, ModelMetadata metaData, params string[] dependencias)
        {
            var nomeDaEntidade = PrimeiraLetraMaiuscula(entidade.Name);

            return(new Dictionary <string, object>()
            {
                { "ModelType", entidade },
                { "Namespace", namespacePadrao },
                { "dbContext", contextoDoBanco.ShortTypeName },
                { "MetadataModel", metaData },
                { "EntitySetVariable", nomeDaEntidade },
                { "RequiredNamespaces", new HashSet <string>(dependencias) }
            });
        }