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));
        }
Exemple #2
0
        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);
        }