public JsonResult GetTextoAto(InfAtoViewModel dadosAtoViewModel) { bool resp = false; string message = string.Empty; string texto = string.Empty; try { if (dadosAtoViewModel.IdModeloDoc == 0) { throw new NullReferenceException("Modelo de documento não definido!"); } string serverPath = Server.MapPath("~"); using (AppServiceAtos appServiceAtos = new AppServiceAtos(this.UfwCartNew, this.IdCtaAcessoSist)) { DtoInfAto dtoInfAto = new DtoInfAto { IdAto = dadosAtoViewModel.IdAto, IdCtaAcessoSist = this.IdCtaAcessoSist, IdTipoAto = dadosAtoViewModel.IdTipoAto, IdLivro = dadosAtoViewModel.IdLivro, IdPrenotacao = dadosAtoViewModel.IdPrenotacao, IdModeloDoc = dadosAtoViewModel.IdModeloDoc, NumMatricula = dadosAtoViewModel.NumMatricula, ServerPath = serverPath, ListIdsPessoas = dadosAtoViewModel.ListIdsPessoas }; texto = appServiceAtos.GetTextoAto(dtoInfAto).ToString(); } resp = true; } catch (Exception ex) { TypeInfo t = this.GetType().GetTypeInfo(); IOFunctions.GerarLogErro(t, ex); resp = false; message = "Falha, GetTextoAto [" + ex.Message + "]"; } var resultado = new { resposta = resp, msg = message, TextoHtml = texto }; return(Json(resultado)); }
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); }