public bool Salvar(IEspecificidade especificidade)
        {
            TermoCPFARLDa         _da = new TermoCPFARLDa();
            EspecificidadeDa      _daEspecificidade     = new EspecificidadeDa();
            DominialidadeDa       _daDominialidade      = new DominialidadeDa();
            CaracterizacaoBus     caracterizacaoBus     = new CaracterizacaoBus();
            CaracterizacaoValidar caracterizacaoValidar = new CaracterizacaoValidar();
            List <Dependencia>    dependencias          = new List <Dependencia>();
            TermoCPFARL           esp             = especificidade as TermoCPFARL;
            List <Caracterizacao> caracterizacoes = caracterizacaoBus.ObterCaracterizacoesEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault());
            List <PessoaLst>      destinatarios   = _daEspecificidade.ObterInteressados(esp.ProtocoloReq.Id);
            List <ReservaLegal>   reservas;
            int idCaracterizacao;
            int tipo;

            RequerimentoAtividade(esp);

            if (esp.Atividades[0].Id != ConfiguracaoAtividade.ObterId((int)eAtividadeCodigo.ReservaLegal))
            {
                Validacao.Add(Mensagem.TermoCPFARLMsg.AtividadeInvalida(esp.Atividades[0].NomeAtividade));
            }

            if (esp.Destinatarios.Count == 0)
            {
                Validacao.Add(Mensagem.Especificidade.DestinatarioObrigatorio("Termo_Destinatario"));
            }
            else
            {
                esp.Destinatarios.ForEach(x =>
                {
                    if (destinatarios.SingleOrDefault(y => y.Id == x.Id) == null)
                    {
                        Validacao.Add(Mensagem.Especificidade.DestinatarioDesassociado("Termo_Destinatario", x.Nome));
                    }
                    else
                    {
                        tipo = _daEspecificidade.ObterDadosPessoa(x.Id).Tipo;
                        if (tipo == 3 || tipo == 4)
                        {
                            Validacao.Add(Mensagem.TermoCPFARLMsg.DestinatarioNaoPermitido);
                        }
                    }
                });
            }

            idCaracterizacao = caracterizacaoBus.Existe(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), eCaracterizacao.Dominialidade);
            if (idCaracterizacao > 0)
            {
                dependencias = caracterizacaoBus.ObterDependencias(idCaracterizacao, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);
                if (caracterizacaoValidar.DependenciasAlteradas(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(), (int)eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao, dependencias) != String.Empty)
                {
                    Validacao.Add(Mensagem.TermoCPFARLMsg.CaracterizacaoDeveEstarValida(caracterizacoes.Single(x => x.Tipo == eCaracterizacao.Dominialidade).Nome));
                }
                else
                {
                    reservas = new List <ReservaLegal>();

                    Dominialidade dominialidade = _daDominialidade.ObterPorEmpreendimento(especificidade.Titulo.EmpreendimentoId.GetValueOrDefault(0));
                    dominialidade.Dominios.ForEach(x => { x.ReservasLegais.ForEach(reserva => { reservas.Add(reserva); }); });

                    if (reservas == null || reservas.Count == 0)
                    {
                        Validacao.Add(Mensagem.TermoCPFARLMsg.ArlInexistente);
                    }
                    else
                    {
                        if (reservas.Exists(x => x.SituacaoVegetalId == (int)eReservaLegalSituacaoVegetal.NaoCaracterizada || x.SituacaoVegetalId == (int)eReservaLegalSituacaoVegetal.EmUso))
                        {
                            Validacao.Add(Mensagem.TermoCPFARLMsg.ARLSituacaoVegetalInvalida);
                        }

                        if (reservas.Exists(x => x.SituacaoId != (int)eReservaLegalSituacao.Proposta))
                        {
                            Validacao.Add(Mensagem.TermoCPFARLMsg.DominioSituacaoInvalida);
                        }

                        if (reservas.Exists(x => x.LocalizacaoId == (int)eReservaLegalLocalizacao.CompensacaoMatriculaCedente ||
                                            x.LocalizacaoId == (int)eReservaLegalLocalizacao.CompensacaoMatriculaReceptora ||
                                            x.LocalizacaoId == (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoCedente ||
                                            x.LocalizacaoId == (int)eReservaLegalLocalizacao.CompensacaoEmpreendimentoReceptora))
                        {
                            Validacao.Add(Mensagem.TermoCPFARLMsg.LocalizacaoInvalida);
                        }
                    }
                }
            }
            else
            {
                Validacao.Add(Mensagem.TermoCPFARLMsg.DominialidadeInexistente);
            }

            return(Validacao.EhValido);
        }
Ejemplo n.º 2
0
        internal Termo ObterDadosPDF(int titulo, BancoDeDados banco = null)
        {
            Termo termo = new Termo();

            termo.Dominialidade = new DominialidadePDF();
            List <int> destinatarioIds = new List <int>();
            PessoaPDF  pessoa          = null;
            DateTime   dataEmissao;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Título

                DadosPDF dados = DaEsp.ObterDadosTitulo(titulo, bancoDeDados);
                termo.Titulo         = dados.Titulo;
                termo.Protocolo      = dados.Protocolo;
                termo.Empreendimento = dados.Empreendimento;
                termo.Dominialidade  = new DominialidadePDF(new DominialidadeBus().ObterPorEmpreendimento(dados.Empreendimento.Id.GetValueOrDefault()));

                #endregion

                #region Especificidade

                Comando comando = bancoDeDados.CriarComando(@"select e.data_emissao_titulo_anterior, e.numero_averbacao from {0}esp_termo_comp_pfarlr e where e.titulo = :titulo", EsquemaBanco);

                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        dataEmissao           = reader.GetValue <DateTime>("data_emissao_titulo_anterior");
                        termo.NumeroAverbacao = reader.GetValue <string>("numero_averbacao");

                        GerenciadorConfiguracao _config = new GerenciadorConfiguracao(new ConfiguracaoSistema());
                        termo.Titulo.TituloAnteriorMesEmissao = _config.Obter <List <String> >(ConfiguracaoSistema.KeyMeses).ElementAt(dataEmissao.Month - 1);
                        termo.Titulo.TituloAnteriorDiaEmissao = dataEmissao.Day.ToString();
                        termo.Titulo.TituloAnteriorAnoEmissao = dataEmissao.Year.ToString();
                    }

                    reader.Close();
                }

                #endregion

                #region Informacões do cartorio

                comando = bancoDeDados.CriarComando(@"select stragg(distinct ' nº ' || b.numero_cartorio || ', folha(s) ' || b.numero_folha || ' do livro nº ' || b.numero_livro ||
													', no ' || b.nome_cartorio) cartorio from {0}esp_termo_comp_pfarlr a, {0}crt_dominialidade_reserva b, {0}tab_titulo t
													where b.dominio in (select id from {0}crt_dominialidade_dominio where dominialidade =  (select id from {0}crt_dominialidade 
													where empreendimento = t.empreendimento and t.id = a.titulo)) and a.titulo = :titulo and t.id = a.titulo"                                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);

                termo.InformacoesRegistro = bancoDeDados.ExecutarScalar <string>(comando);

                #endregion

                #region Interessado

                comando = bancoDeDados.CriarComando(@" select t.destinatario from {0}esp_termo_comp_pfarlr_destina t, {0}esp_termo_comp_pfarlr e where t.especificidade = e.id and e.titulo = :titulo ", EsquemaBanco);
                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);
                destinatarioIds    = bancoDeDados.ExecutarList <int>(comando);
                termo.Interessados = new List <PessoaPDF>();
                foreach (int destId in destinatarioIds)
                {
                    pessoa = _daEsp.ObterDadosPessoa(destId, dados.Empreendimento.Id, banco);
                    pessoa.VinculoTipoTexto = pessoa.VinculoTipoTexto == "Outro" ? "Representante" : pessoa.VinculoTipoTexto;
                    termo.Interessados.Add(pessoa);
                }

                #endregion

                #region ARLs

                comando = bancoDeDados.CriarComando(@"select r.identificacao, r.arl_croqui, null coordenadaN, null coordenadaE,
													r.situacao_vegetal from {0}crt_dominialidade_reserva r, {0}esp_termo_comp_pfarlr e where e.titulo = :titulo
													and r.dominio in (select id from {0}crt_dominialidade_dominio where dominialidade = :dominialidade)"                                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);
                comando.AdicionarParametroEntrada("dominialidade", termo.Dominialidade.Id, DbType.Int32);

                AreaReservaLegalPDF areaARLPdf = null;

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    termo.RLFormacao   = new List <AreaReservaLegalPDF>();
                    termo.RLPreservada = new List <AreaReservaLegalPDF>();

                    while (reader.Read())
                    {
                        areaARLPdf = new AreaReservaLegalPDF()
                        {
                            Tipo          = reader.GetValue <int>("situacao_vegetal"),
                            AreaCroqui    = Convert.ToDecimal(reader.GetValue <string>("arl_croqui")).ToStringTrunc(),
                            CoordenadaE   = reader.GetValue <string>("coordenadaE"),
                            CoordenadaN   = reader.GetValue <string>("coordenadaN"),
                            Identificacao = reader.GetValue <string>("identificacao")
                        };

                        if (areaARLPdf.Tipo == (int)eReservaLegalSituacaoVegetal.Preservada)
                        {
                            termo.RLPreservada.Add(areaARLPdf);
                        }
                        else if (areaARLPdf.Tipo == (int)eReservaLegalSituacaoVegetal.EmRecuperacao)
                        {
                            termo.RLFormacao.Add(areaARLPdf);
                        }
                    }

                    reader.Close();
                }

                termo.RLTotalPreservada = termo.RLPreservada.Sum(x => Convert.ToDecimal(x.AreaCroqui)).ToStringTrunc();
                termo.RLTotalFormacao   = termo.RLFormacao.Sum(x => Convert.ToDecimal(x.AreaCroqui)).ToStringTrunc();

                #endregion

                #region ARLs - Coordenadas

                comando = bancoDeDados.CriarComando(@"select arl.codigo, c.empreendimento, c.id dominialidade, pr.id, trunc(arl_o.column_value, 2) coordenada
													from {0}crt_dominialidade c, {0}crt_projeto_geo pr, {0}crt_dominialidade_reserva cr, {1}geo_arl arl,
													table(geometria9i.pontoIdeal(arl.geometry).SDO_ORDINATES) arl_o where c.id = :dominialidade and pr.empreendimento
													= c.empreendimento and arl.codigo = :codigo and pr.caracterizacao = 1 and cr.dominio in (select id from 
													{0}crt_dominialidade_dominio where dominialidade = c.id) and cr.identificacao = arl.codigo 
													and arl.projeto = pr.id"                                                    , EsquemaBanco, EsquemaBancoGeo);

                comando.AdicionarParametroEntrada("dominialidade", termo.Dominialidade.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("codigo", DbType.String);

                foreach (var item in termo.RLFormacao)
                {
                    comando.SetarValorParametro("codigo", item.Identificacao);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            item.CoordenadaE = reader.GetValue <string>("coordenada");
                        }

                        if (reader.Read())
                        {
                            item.CoordenadaN = reader.GetValue <string>("coordenada");
                        }

                        reader.Close();
                    }
                }

                foreach (var item in termo.RLPreservada)
                {
                    comando.SetarValorParametro("codigo", item.Identificacao);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            item.CoordenadaE = reader.GetValue <string>("coordenada");
                        }

                        if (reader.Read())
                        {
                            item.CoordenadaN = reader.GetValue <string>("coordenada");
                        }

                        reader.Close();
                    }
                }

                #endregion
            }

            return(termo);
        }
Ejemplo n.º 3
0
        internal Termo ObterDadosPDF(int titulo, BancoDeDados banco = null)
        {
            Termo termo = new Termo();

            termo.Dominialidade = new DominialidadePDF();
            List <int> destinatarioIds = new List <int>();
            PessoaPDF  pessoa          = null;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Título

                DadosPDF dados = DaEsp.ObterDadosTitulo(titulo, bancoDeDados);
                termo.Titulo         = dados.Titulo;
                termo.Protocolo      = dados.Protocolo;
                termo.Empreendimento = dados.Empreendimento;
                termo.Dominialidade  = new DominialidadePDF(new DominialidadeBus().ObterPorEmpreendimento(dados.Empreendimento.Id.GetValueOrDefault()));

                #endregion

                #region Especificidade

                List <ReservaLegalPDF> reservas = new List <ReservaLegalPDF>();
                termo.Dominialidade.Dominios.ForEach(dominio => { dominio.ReservasLegais.ForEach(r => { reservas.Add(r); }); });

                #endregion

                #region Interessado

                Comando comando = bancoDeDados.CriarComando(@" select t.destinatario from {0}esp_termo_comp_pfarl_destinat t, {0}esp_termo_comp_pfarl e where t.especificidade = e.id and e.titulo = :titulo ", EsquemaBanco);
                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);
                destinatarioIds    = bancoDeDados.ExecutarList <int>(comando);
                termo.Interessados = new List <PessoaPDF>();
                foreach (int destId in destinatarioIds)
                {
                    pessoa = _daEsp.ObterDadosPessoa(destId, dados.Empreendimento.Id, banco);
                    pessoa.VinculoTipoTexto = pessoa.VinculoTipoTexto == "Outro" ? "Representante" : pessoa.VinculoTipoTexto;
                    termo.Interessados.Add(pessoa);
                }

                #endregion

                #region ARLs

                comando = bancoDeDados.CriarComando(@"select r.identificacao, r.arl_croqui, null coordenadaN, null coordenadaE,
													r.situacao, r.situacao_vegetal from {0}crt_dominialidade_reserva r, {0}esp_termo_comp_pfarl e
													where e.titulo = :titulo and r.dominio in (select id from {0}crt_dominialidade_dominio 
													where dominialidade = :dominialidade)"                                                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);
                comando.AdicionarParametroEntrada("dominialidade", termo.Dominialidade.Id, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    termo.RLFormacao   = new List <AreaReservaLegalPDF>();
                    termo.RLPreservada = new List <AreaReservaLegalPDF>();

                    while (reader.Read())
                    {
                        int situacaoVegetal = reader.GetValue <int>("situacao_vegetal");
                        int situacao        = reader.GetValue <int>("situacao");

                        switch (situacaoVegetal)
                        {
                        case (int)eReservaLegalSituacaoVegetal.Preservada:

                            if (situacao == (int)eReservaLegalSituacao.Proposta)
                            {
                                termo.RLPreservada.Add(new AreaReservaLegalPDF
                                {
                                    AreaCroqui    = Convert.ToDecimal(reader.GetValue <string>("arl_croqui")).ToStringTrunc(),
                                    CoordenadaE   = reader.GetValue <string>("coordenadaE"),
                                    CoordenadaN   = reader.GetValue <string>("coordenadaN"),
                                    Identificacao = reader.GetValue <string>("identificacao")
                                });
                            }
                            break;

                        case (int)eReservaLegalSituacaoVegetal.EmRecuperacao:

                            if (situacao == (int)eReservaLegalSituacao.Proposta)
                            {
                                termo.RLFormacao.Add(new AreaReservaLegalPDF
                                {
                                    AreaCroqui    = Convert.ToDecimal(reader.GetValue <string>("arl_croqui")).ToStringTrunc(),
                                    CoordenadaE   = reader.GetValue <string>("coordenadaE"),
                                    CoordenadaN   = reader.GetValue <string>("coordenadaN"),
                                    Identificacao = reader.GetValue <string>("identificacao")
                                });
                            }
                            break;
                        }
                    }

                    reader.Close();
                }

                termo.RLTotalPreservada = termo.RLPreservada.Sum(x => Convert.ToDecimal(x.AreaCroqui)).ToStringTrunc();
                termo.RLTotalFormacao   = termo.RLFormacao.Sum(x => Convert.ToDecimal(x.AreaCroqui)).ToStringTrunc();

                #endregion

                #region ARLs - Coordenadas

                comando = bancoDeDados.CriarComando(@"select arl.codigo, c.empreendimento, c.id dominialidade, pr.id, trunc(arl_o.column_value, 2) coordenada
													from {0}crt_dominialidade c, {0}crt_projeto_geo pr, {0}crt_dominialidade_reserva cr, {1}geo_arl arl,
													table(geometria9i.pontoIdeal(arl.geometry).SDO_ORDINATES) arl_o where pr.empreendimento = c.empreendimento
													and c.id = :dominialidade and arl.codigo = :codigo and pr.caracterizacao = 1 and cr.identificacao = arl.codigo
													and cr.dominio in (select id from {0}crt_dominialidade_dominio dm where dm.dominialidade = c.id)
													and arl.projeto = pr.id"                                                    , EsquemaBanco, EsquemaBancoGeo);

                comando.AdicionarParametroEntrada("dominialidade", termo.Dominialidade.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("codigo", DbType.String);

                foreach (var item in termo.RLFormacao)
                {
                    comando.SetarValorParametro("codigo", item.Identificacao);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            item.CoordenadaE = reader.GetValue <string>("coordenada");
                        }

                        if (reader.Read())
                        {
                            item.CoordenadaN = reader.GetValue <string>("coordenada");
                        }

                        reader.Close();
                    }
                }

                foreach (var item in termo.RLPreservada)
                {
                    comando.SetarValorParametro("codigo", item.Identificacao);

                    using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                    {
                        if (reader.Read())
                        {
                            item.CoordenadaE = reader.GetValue <string>("coordenada");
                        }

                        if (reader.Read())
                        {
                            item.CoordenadaN = reader.GetValue <string>("coordenada");
                        }

                        reader.Close();
                    }
                }

                #endregion
            }

            return(termo);
        }
        internal Outros ObterDadosPDF(int titulo, BancoDeDados banco = null)
        {
            Outros                    outros        = new Outros();
            InformacaoCorteBus        infoCorteBus  = new InformacaoCorteBus();
            InformacaoCorte           infoCorte     = null;
            InformacaoCorteInformacao infoCorteInfo = null;
            int infoCorteInfoId = 0;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Dados do Titulo

                DadosPDF dados = DaEsp.ObterDadosTitulo(titulo, bancoDeDados);

                outros.Titulo = dados.Titulo;
                outros.Titulo.SetorEndereco = DaEsp.ObterEndSetor(outros.Titulo.SetorId);
                outros.Protocolo            = dados.Protocolo;
                outros.Empreendimento       = dados.Empreendimento;

                #endregion

                #region Especificidade

                Comando comando = bancoDeDados.CriarComando(@" select e.destinatario, e.informacao_corte from {0}esp_out_informacao_corte e where e.titulo = :titulo ", EsquemaBanco);

                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        outros.Destinatario = _daEsp.ObterDadosPessoa(reader.GetValue <int>("destinatario"), outros.Empreendimento.Id, bancoDeDados);
                        infoCorteInfoId     = reader.GetValue <int>("informacao_corte");
                    }

                    reader.Close();
                }

                #endregion

                #region Dominialidade

                DominialidadeBus _dominialidadeBus = new DominialidadeBus();

                outros.Dominialidade = new DominialidadePDF(_dominialidadeBus.ObterPorEmpreendimento(outros.Empreendimento.Id.GetValueOrDefault(), banco: bancoDeDados));

                #endregion

                #region Informação de corte

                infoCorte = infoCorteBus.ObterPorEmpreendimento(outros.Empreendimento.Id.GetValueOrDefault(), banco: bancoDeDados);

                if (infoCorte != null)
                {
                    infoCorteInfo = infoCorte.InformacoesCortes.SingleOrDefault(x => x.Id == infoCorteInfoId);

                    if (infoCorteInfo != null)
                    {
                        outros.InformacaoCorteInfo = new InformacaoCorteInfoPDF(infoCorteInfo);
                    }
                }

                #endregion
            }

            return(outros);
        }