private bool VerificarCoordenada(Coordenada coordenada, string prefixo)
        {
            CoordenadaMsg msg = new CoordenadaMsg(prefixo);

            if (coordenada.LocalColeta.GetValueOrDefault() <= 0)
            {
                Validacao.Add(msg.LocalColetaObrigatorio);
            }

            if (coordenada.FormaColeta.GetValueOrDefault() <= 0)
            {
                Validacao.Add(msg.FormaColetaObrigatorio);
            }

            CoordenadaBus.Validar(coordenada, prefixo, true);

            if (!Validacao.EhValido)
            {
                return(false);
            }

            if (_da.PontoForaMBR(coordenada.EastingUtm.GetValueOrDefault(), coordenada.NorthingUtm.GetValueOrDefault()))
            {
                Validacao.Add(Mensagem.Sistema.CoordenadaForaMBR);
                return(false);
            }

            return(Validacao.EhValido);
        }
        private bool VerificarCoordenadaComAbrangencia(Coordenada coordenada, string prefixo)
        {
            if (CoordenadaBus.Validar(coordenada, prefixo, true))
            {
                coordenada.Datum.Sigla = ListaCredenciadoBus.Datuns.SingleOrDefault(x => Equals(x.Id, coordenada.Datum.Id)).Sigla;
            }

            if (!Validacao.EhValido)
            {
                return(false);
            }

            if (_da.PontoForaMBR(coordenada.EastingUtm.GetValueOrDefault(), coordenada.NorthingUtm.GetValueOrDefault()))
            {
                Validacao.Add(Mensagem.Sistema.CoordenadaForaMBR);
                return(false);
            }

            return(Validacao.EhValido);
        }
예제 #3
0
        public Resultados <Empreendimento> Filtrar(Filtro <ListarEmpreendimentoFiltro> filtros, BancoDeDados banco = null)
        {
            Resultados <Empreendimento> retorno = new Resultados <Empreendimento>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                string  comandtxt = string.Empty;
                Comando comando   = bancoDeDados.CriarComando("");

                #region Adicionando Filtros

                comandtxt += comando.FiltroAnd("e.codigo", "codigo", filtros.Dados.Codigo);

                comandtxt += comando.FiltroAndLike("e.denominador", "denominador", filtros.Dados.Denominador, true);

                comandtxt += comando.FiltroAndLike("e.cnpj", "cnpj", filtros.Dados.CNPJ);

                comandtxt += comando.FiltroIn("e.empreendimento_id", String.Format(@"select r.empreendimento from {0}tab_empreendimento_responsavel r, {0}lst_pessoa p where p.pessoa_id = r.responsavel 
				and p.cpf_cnpj like :responsavel_cpf_cnpj ||'%'"                , (string.IsNullOrEmpty(EsquemaBanco) ? "" : ".")), "responsavel_cpf_cnpj", filtros.Dados.Responsavel.CpfCnpj);

                if (!ValidacoesGenericasBus.Cpf(filtros.Dados.Responsavel.CpfCnpj) && !ValidacoesGenericasBus.Cnpj(filtros.Dados.Responsavel.CpfCnpj))
                {
                    comandtxt += comando.FiltroIn("e.empreendimento_id", String.Format(@"select r.empreendimento from {0}tab_empreendimento_responsavel r, {0}lst_pessoa p  
					where p.pessoa_id = r.responsavel and upper(p.nome_razao_social) like upper('%'|| :responsavel_nome ||'%')"                    , (string.IsNullOrEmpty(EsquemaBanco) ? "" : ".")), "responsavel_nome", filtros.Dados.Responsavel.NomeRazao);
                }

                comandtxt += comando.FiltroAnd("e.segmento_id", "segmento_id", filtros.Dados.Segmento);

                comandtxt += comando.FiltroAnd("e.municipio_id", "municipio_id", filtros.Dados.MunicipioId);

                if (filtros.Dados.MunicipioId.GetValueOrDefault() <= 0)
                {
                    comandtxt += comando.FiltroAnd("e.estado_id", "estado_id", filtros.Dados.EstadoId);
                }

                comandtxt += comando.FiltroAnd("e.atividade_id", "atividade_id", filtros.Dados.Atividade.Id);

                comandtxt += comando.FiltroAnd("e.cnpj", "cnpj_empreemdimento", filtros.Dados.CnpjEmpreemdimento);

                comandtxt += comando.FiltroIn("e.empreendimento_id", String.Format(@"select p.empreendimento_id from {0}lst_protocolo p where p.numero_completo = :protocolo_numero", (string.IsNullOrEmpty(EsquemaBanco) ? "" : ".")), "protocolo_numero", filtros.Dados.Protocolo.NumeroTexto);

                //Filtro de abrangencia
                if (!string.IsNullOrEmpty(filtros.Dados.AreaAbrangencia) && filtros.Dados.Coordenada != null)
                {
                    //Transforma as coordenadas
                    filtros.Dados.Coordenada = CoordenadaBus.TransformarCoordenada(filtros.Dados.Coordenada);
                    Double abrangencia = Convert.ToDouble(filtros.Dados.AreaAbrangencia);

                    comandtxt += String.Format(@" and e.empreendimento_id in (select e.empreendimento from {0}geo_emp_localizacao e where sdo_relate(e.geometry, 
					{0}coordenada.utm2spatialrect(:x1, :y1, :f1, :x2, :y2, :f2, 0), 'MASK=ANYINTERACT QUERYTYPE=WINDOW')='TRUE')"                    ,
                                               (string.IsNullOrEmpty(EsquemaBancoGeo) ? "" : EsquemaBancoGeo + "."));

                    comando.AdicionarParametroEntrada("x1", (filtros.Dados.Coordenada.EastingUtm - abrangencia), DbType.Double);
                    comando.AdicionarParametroEntrada("y1", (filtros.Dados.Coordenada.NorthingUtm - abrangencia), DbType.Double);
                    comando.AdicionarParametroEntrada("f1", filtros.Dados.Coordenada.FusoUtm, DbType.Int32);

                    comando.AdicionarParametroEntrada("x2", (filtros.Dados.Coordenada.EastingUtm + abrangencia), DbType.Double);
                    comando.AdicionarParametroEntrada("y2", (filtros.Dados.Coordenada.NorthingUtm + abrangencia), DbType.Double);
                    comando.AdicionarParametroEntrada("f2", filtros.Dados.Coordenada.FusoUtm, DbType.Int32);
                }

                if (filtros.Dados.EmpreendimentoCompensacao > 0)
                {
                    comandtxt += string.Format(@" and e.empreendimento_id in (select empreendimento from crt_dominialidade where id in (select dominialidade from 
					crt_dominialidade_dominio where id in (select dominio from crt_dominialidade_reserva where cedente_receptor = 1 and emp_compensacao = :emp_compensacao))) "                    , (string.IsNullOrEmpty(EsquemaBanco) ? "" : EsquemaBanco + "."));

                    comando.AdicionarParametroEntrada("emp_compensacao", filtros.Dados.EmpreendimentoCompensacao, DbType.Int32);
                }

                List <String> ordenar = new List <String>();
                List <String> colunas = new List <String>()
                {
                    "codigo", "segmento_texto", "denominador", "cnpj"
                };

                if (filtros.OdenarPor > 0)
                {
                    ordenar.Add(colunas.ElementAtOrDefault(filtros.OdenarPor - 1));
                }
                else
                {
                    ordenar.Add("denominador");
                }

                #endregion

                #region Quantidade de registro do resultado

                comando.DbCommand.CommandText = String.Format("select count(*) from {0}lst_empreendimento e where e.id > 0" + comandtxt,
                                                              (string.IsNullOrEmpty(EsquemaBanco) ? "" : EsquemaBanco + "."));

                retorno.Quantidade = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando));

                comando.AdicionarParametroEntrada("menor", filtros.Menor);
                comando.AdicionarParametroEntrada("maior", filtros.Maior);

                comandtxt = String.Format(@"select e.empreendimento_id id, e.codigo, e.denominador, e.cnpj, e.segmento_texto from {0}lst_empreendimento e where e.id > 0"
                                          + comandtxt + DaHelper.Ordenar(colunas, ordenar), (string.IsNullOrEmpty(EsquemaBanco) ? "" : EsquemaBanco + "."));

                comando.DbCommand.CommandText = @"select * from (select a.*, rownum rnum from ( " + comandtxt + @") a) where rnum <= :maior and rnum >= :menor";

                #endregion

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    #region Adicionando os dados na classe de retorno

                    Empreendimento empreendimento;

                    while (reader.Read())
                    {
                        empreendimento               = new Empreendimento();
                        empreendimento.Id            = reader.GetValue <Int32>("id");
                        empreendimento.Codigo        = reader.GetValue <Int64>("codigo");
                        empreendimento.Denominador   = reader.GetValue <String>("denominador");
                        empreendimento.CNPJ          = reader.GetValue <String>("cnpj");
                        empreendimento.SegmentoTexto = reader.GetValue <String>("segmento_texto");
                        retorno.Itens.Add(empreendimento);
                    }

                    reader.Close();

                    #endregion
                }
            }

            return(retorno);
        }