/// <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(); }
/// <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) } }); }