public StringBuilder GetTextoAto(DtoInfAto dtoInfAto) { StringBuilder textoDoc = new StringBuilder(); FilesConfig fileConfig = new FilesConfig(); DtoDadosAto dtoDadosAto = new DtoDadosAto { Id = dtoInfAto.IdAto, IdTipoAto = dtoInfAto.IdTipoAto, IdLivro = dtoInfAto.IdLivro, IdModeloDoc = dtoInfAto.IdModeloDoc, IdPrenotacao = dtoInfAto.IdPrenotacao, NumMatricula = dtoInfAto.NumMatricula, DataRegPrenotacao = dtoInfAto.DataRegPrenotacao, DataAto = dtoInfAto.DataAto }; DadosAtoSimplificado dadosAto = new DadosAtoSimplificado { IdAto = dtoInfAto.IdAto, IdTipoAto = dtoInfAto.IdTipoAto, IdLivro = dtoInfAto.IdLivro, IdModeloDoc = dtoInfAto.IdModeloDoc, IdPrenotacao = dtoInfAto.IdPrenotacao, NumMatricula = dtoInfAto.NumMatricula, DataRegPrenotacao = dtoInfAto.DataRegPrenotacao, DataAto = dtoInfAto.DataAto }; if (dtoInfAto.IdAto.HasValue && (dtoInfAto.IdAto > 0)) { //dtoDadosAto = GetDadosAto(dtoInfAto.IdAto ?? 0); //todo: catregar do ato fazer } else { dtoDadosAto.ListaCamposValor.AddRange(this.GetListCamposPovoados("Ato", dadosAto)); dtoDadosAto.ListaCamposValor.AddRange(this.GetListCamposPovoados("Prenotacao", dadosAto)); dtoDadosAto.ListaCamposValor.AddRange(this.GetListCamposPovoados("Imovel", dadosAto)); dtoDadosAto.Pessoas = this.GetListPessoas(dtoInfAto.IdTipoAto, dtoInfAto.ListIdsPessoas, dtoInfAto.IdPrenotacao).ToList(); //obter filename string fileName = Path.Combine(dtoInfAto.ServerPath, fileConfig.GetModeloDocFileName(dtoInfAto.IdModeloDoc)); //dtoDadosAto.Pessoas = this.GerarFichas using (AtoWordDocx atoWordDocx = new AtoWordDocx(this, dtoInfAto.IdCtaAcessoSist, fileName)) { StringBuilder textoTmp = new StringBuilder(); // Get content from each paragraph foreach (Paragraph paragraph in atoWordDocx.WordDocument.GetChildElements(true, ElementType.Paragraph)) { textoTmp.Append(paragraph.Content.ToString()); } string texto = textoTmp.ToString(); if (texto != "") { string strAto = string.Empty; string strBloco = string.Empty; bool flagBloco = false; TipoPessoaPrenotacao tipoPes = TipoPessoaPrenotacao.indefinido; for (int i = 0; i < texto.Length; i++) { if (texto[i] == '[') { i++; string nomeCampo = string.Empty; string resultadoQuery = string.Empty; while (texto[i] != ']') { nomeCampo += texto[i].ToString().Trim(); i++; if (i >= texto.Length || texto[i] == '[') { throw new FormatException("Arquivo com campos corrompidos, verifique o modelo"); } } //Buscar dado da pessoa aqui //resultadoQuery = "teste query"; var CampoValor = dtoDadosAto.ListaCamposValor.Where(c => c.Campo == nomeCampo).FirstOrDefault(); if (CampoValor != null) { resultadoQuery = StringFunctions.Capitalize(CampoValor.Valor); } else { var CampoOutorgado = dtoDadosAto.Pessoas .Where(p => p.TipoPessoa == TipoPessoaPrenotacao.outorgado).FirstOrDefault().ListaCamposValor .Where(c => c.Campo == nomeCampo).FirstOrDefault(); if (CampoOutorgado != null) { resultadoQuery = StringFunctions.Capitalize(CampoOutorgado.Valor); } else { var CampoOutorgante = dtoDadosAto.Pessoas .Where(p => p.TipoPessoa == TipoPessoaPrenotacao.outorgante).FirstOrDefault().ListaCamposValor .Where(c => c.Campo == nomeCampo).FirstOrDefault(); if (CampoOutorgante != null) { resultadoQuery = StringFunctions.Capitalize(CampoOutorgante.Valor); } } } if (!string.IsNullOrEmpty(resultadoQuery)) { strAto += resultadoQuery; } else { strAto += "[" + nomeCampo + "]"; } } else if (texto[i] == '<') { i++; string tipoTag = string.Empty; while (texto[i] != '>') { tipoTag += texto[i].ToString().Trim(); i++; if (i >= texto.Length || texto[i] == '<') { throw new FormatException("Tags de repetição corrompidas, verifique o modelo"); } } i++; if (flagBloco) { strAto += GetTextoBloco(tipoPes, dtoDadosAto.Pessoas, strBloco); } if (tipoTag.ToLower().Equals("outorgantes")) { tipoPes = TipoPessoaPrenotacao.outorgante; } else if (tipoTag.Equals("outorgados")) { tipoPes = TipoPessoaPrenotacao.outorgado; } strBloco = string.Empty; flagBloco = !flagBloco; } else { //caso não seja um campo somente adiciona o caractere strAto += texto[i].ToString(); } strBloco += texto[i].ToString(); } // Populando campo de retorno textoDoc.Append($"<p>{strAto}</p>"); } } } return(textoDoc); }
/// <summary> /// Get Lista de campos povoados com os valores /// </summary> /// <param name="entidade"></param> /// <param name="IdTipoAto"></param> /// <returns></returns> #region Private Methods private List <DtoCamposValor> GetListCamposPovoados(string entidade, DadosAtoSimplificado dadosAto) { List <DtoCamposValor> listaCamposValor = new List <DtoCamposValor>(); if (entidade.ToLower() == "ato") { var listaCamposAto = this.UfwCartNew.Repositories.RepositoryAto.GetListCamposAto(dadosAto.IdTipoAto, this.IdCtaAcessoSist); foreach (var campo in listaCamposAto) { if (campo.Campo.ToLower() == "idlivro") { listaCamposValor.Add(new DtoCamposValor { Campo = campo.NomeCampo, Valor = dadosAto.IdLivro.ToString() }); } if (campo.Campo.ToLower() == "dataato") { listaCamposValor.Add(new DtoCamposValor { Campo = campo.NomeCampo, Valor = dadosAto.DataAto.HasValue ? dadosAto.DataAto.Value.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) : "" }); } } } if (entidade.ToLower() == "prenotacao") { var listaCamposPrenotacao = this.UfwCartNew.Repositories.RepositoryAto.GetListCamposPrenotacao(dadosAto.IdTipoAto, this.IdCtaAcessoSist); foreach (var campo in listaCamposPrenotacao) { if (campo.Campo.ToLower() == "idprenotacao") { listaCamposValor.Add(new DtoCamposValor { Campo = campo.NomeCampo, Valor = dadosAto.IdPrenotacao.ToString() }); } if (campo.Campo.ToLower() == "dataregprenotacao") { listaCamposValor.Add(new DtoCamposValor { Campo = campo.NomeCampo, Valor = dadosAto.DataRegPrenotacao.HasValue ? dadosAto.DataRegPrenotacao.Value.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) : "" }); } } } if (entidade.ToLower() == "imovel") { var listaCamposImovel = this.UfwCartNew.Repositories.RepositoryAto.GetListCamposImovel(dadosAto.IdTipoAto, this.IdCtaAcessoSist); DtoDadosImovel imovel = this.GetDadosImovel(dadosAto.IdPrenotacao, dadosAto.NumMatricula); Type imovelType = imovel.GetType(); PropertyInfo[] propertyInfo = imovelType.GetProperties(); foreach (var campo in listaCamposImovel) { var prop = propertyInfo.Where(p => p.Name == campo.Campo).FirstOrDefault(); if (prop != null) { var propValue = prop.GetValue(imovel); if (propValue != null) { listaCamposValor.Add(new DtoCamposValor { Campo = campo.NomeCampo, Valor = propValue.ToString().Trim() }); } } } } return(listaCamposValor); }