internal void AtualizarGeoEmp(SimuladorGeo projeto, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(
                    @"declare " +
                    "v_srid number:=0; " +
                    "v_count number:=0; " +
                    "v_geo mdsys.sdo_geometry; " +
                    "begin " +
                    "select to_number(c.valor) into v_srid from cnf_configuracao c where c.chave = 'SRID_BASE'; " +
                    "v_geo := mdsys.sdo_geometry(2001, v_srid, mdsys.sdo_point_type(:x, :y, null), null, null); " +
                    "select count(*) into v_count from geo_emp_localizacao l where l.projeto = :projeto; " +
                    "if v_count = 0 then  " +
                    "insert into {0}geo_emp_localizacao(id,projeto,geometry,tid) values ({0}seq_geo_emp_localizacao.nextval, :projeto, v_geo, :tid); " +
                    "else  " +
                    "update {0}geo_emp_localizacao g set g.geometry =v_geo, g.tid=:tid where g.projeto = :projeto; " +
                    "end if; " +
                    "end;", EsquemaBancoPublicoGeo);

                comando.AdicionarParametroEntrada("projeto", projeto.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("x", projeto.EastingDecimal, DbType.Decimal);
                comando.AdicionarParametroEntrada("y", projeto.NorthingDecimal, DbType.Decimal);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                bancoDeDados.ExecutarNonQuery(comando);

                bancoDeDados.Commit();
            }
        }
        internal void Editar(SimuladorGeo simulador, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Projeto Geográfico

                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"update {0}tmp_projeto_geo p set p.situacao = :situacao,
				mecanismo_elaboracao = :mecanismo_elaboracao, p.easting = :easting, p.norhting = :northing, 
				p.menor_x = :menor_x, p.menor_y = :menor_y, p.maior_x = :maior_x, p.maior_y = :maior_y where p.id = :id"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("id", simulador.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("situacao", simulador.SituacaoId, DbType.Int32);
                comando.AdicionarParametroEntrada("mecanismo_elaboracao", simulador.MecanismoElaboracaoId, DbType.Int32);

                comando.AdicionarParametroEntrada("easting", simulador.EastingDecimal, DbType.Decimal);
                comando.AdicionarParametroEntrada("northing", simulador.NorthingDecimal, DbType.Decimal);

                comando.AdicionarParametroEntrada("menor_x", simulador.MenorX, DbType.Decimal);
                comando.AdicionarParametroEntrada("menor_y", simulador.MenorY, DbType.Decimal);
                comando.AdicionarParametroEntrada("maior_x", simulador.MaiorX, DbType.Decimal);
                comando.AdicionarParametroEntrada("maior_y", simulador.MaiorY, DbType.Decimal);

                bancoDeDados.ExecutarNonQuery(comando);

                #endregion

                bancoDeDados.Commit();
            }
        }
        internal int?Criar(SimuladorGeo simulador, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Projeto Geográfico

                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"insert into {0}tmp_projeto_geo p (id, situacao, mecanismo_elaboracao, cpf,
				menor_x, menor_y, maior_x, maior_y, tid) values ({0}seq_tmp_projeto_geo.nextval, 1, :mecanismo_elaboracao, :cpf,
				:menor_x, :menor_y, :maior_x, :maior_y, :tid) returning p.id into :id"                , EsquemaBanco);

                comando.AdicionarParametroEntrada("mecanismo_elaboracao", simulador.MecanismoElaboracaoId, DbType.Int32);
                comando.AdicionarParametroEntrada("cpf", DbType.String, 15, simulador.Cpf);
                comando.AdicionarParametroEntrada("menor_x", simulador.MenorX, DbType.Decimal);
                comando.AdicionarParametroEntrada("menor_y", simulador.MenorY, DbType.Decimal);
                comando.AdicionarParametroEntrada("maior_x", simulador.MaiorX, DbType.Decimal);
                comando.AdicionarParametroEntrada("maior_y", simulador.MaiorY, DbType.Decimal);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                comando.AdicionarParametroSaida("id", DbType.Int32);

                bancoDeDados.ExecutarNonQuery(comando);

                simulador.Id = Convert.ToInt32(comando.ObterValorParametro("id"));

                #endregion

                bancoDeDados.Commit();

                return(simulador.Id);
            }
        }
        internal void Salvar(SimuladorGeo simulador, BancoDeDados banco = null)
        {
            if (simulador == null)
            {
                throw new Exception("O Projeto geográfico é nulo.");
            }

            if (simulador.Id <= 0)
            {
                Criar(simulador, banco);
            }
            else
            {
                Editar(simulador, banco);
            }
        }
Beispiel #5
0
        internal bool EnviarArquivo(SimuladorGeo projeto)
        {
            if (String.IsNullOrWhiteSpace(projeto.Easting))
            {
                Validacao.Add(Mensagem.SimuladorGeo.EastingObrigatorio);
            }
            else if (!ValidacoesGenericasBus.ValidarDecimal(projeto.Easting, 7, 4))
            {
                Validacao.Add(Mensagem.SimuladorGeo.EastingInvalido);
            }

            if (String.IsNullOrWhiteSpace(projeto.Northing))
            {
                Validacao.Add(Mensagem.SimuladorGeo.NorthingObrigatorio);
            }
            else if (!ValidacoesGenericasBus.ValidarDecimal(projeto.Northing, 7, 4))
            {
                Validacao.Add(Mensagem.SimuladorGeo.NorthingInvalido);
            }

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

            SimuladorGeoDa da = new SimuladorGeoDa();

            if (da.PontoForaMBR(projeto.Easting, projeto.Northing))
            {
                Validacao.Add(Mensagem.Sistema.CoordenadaForaMBR);
                return(false);
            }

            if (projeto.ArquivoEnviado.Extensao != ".zip")
            {
                Validacao.Add(Mensagem.SimuladorGeo.ArquivoAnexoNaoEhZip);
                return(false);
            }

            return(Validacao.EhValido);
        }
Beispiel #6
0
        public SimuladorGeo VerificarCpf(string cpf)
        {
            SimuladorGeo simualdor = new SimuladorGeo();

            try
            {
                if (!_validar.VerificarCpf(cpf))
                {
                    return(simualdor);
                }

                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioPublicoGeo))
                {
                    bancoDeDados.IniciarTransacao();

                    simualdor = _da.Obter(cpf, bancoDeDados);

                    if (simualdor == null || simualdor.Id == 0)
                    {
                        simualdor.Cpf = cpf;
                        simualdor.MecanismoElaboracaoId = (int)eSimuladorGeoMecanismo.Simulador;
                        simualdor.SituacaoId            = (int)eSimuladorGeoSituacao.EmElaboracao;
                        _da.Salvar(simualdor, bancoDeDados);
                    }

                    bancoDeDados.Commit();
                }

                simualdor.ArquivoEnviado = simualdor.Arquivos.FirstOrDefault(x => x.Tipo == (int)eSimuladorGeoArquivoTipo.ArquivoEnviado) ?? new SimuladorGeoArquivo();
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(simualdor);
        }
        internal SimuladorGeo Obter(string cpf, BancoDeDados banco = null, bool simplificado = false, bool finalizado = false)
        {
            SimuladorGeo projeto = new SimuladorGeo();

            string tabela = finalizado ? "crt_projeto_geo" : "tmp_projeto_geo";

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Projeto Geográfico

                Comando comando = bancoDeDados.CriarComando(@"select g.id, ls.id situacao_id, ls.texto situacao_texto,
					lm.id mecanismo_elaboracao_id, lm.texto mecanismo_elaboracao_texto, g.easting, g.norhting northing,
					g.menor_x, g.menor_y, g.maior_x, g.maior_y, g.tid 
					from {0}tmp_projeto_geo g, {0}lov_crt_projeto_geo_situacao ls, {0}lov_crt_projeto_geo_mecanismo lm 
					where g.situacao = ls.id 
					and g.mecanismo_elaboracao = lm.id(+) 
					and g.cpf = :cpf"                    , EsquemaBanco);

                comando.AdicionarParametroEntrada("cpf", DbType.String, 20, cpf);

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        projeto     = new SimuladorGeo();
                        projeto.Id  = Convert.ToInt32(reader["id"]);
                        projeto.Tid = reader["tid"].ToString();
                        projeto.Cpf = cpf;

                        if (reader["situacao_id"] != null && !Convert.IsDBNull(reader["situacao_id"]))
                        {
                            projeto.SituacaoId    = Convert.ToInt32(reader["situacao_id"]);
                            projeto.SituacaoTexto = reader["situacao_texto"].ToString();
                        }

                        if (reader["mecanismo_elaboracao_id"] != null && !Convert.IsDBNull(reader["mecanismo_elaboracao_id"]))
                        {
                            projeto.MecanismoElaboracaoId    = Convert.ToInt32(reader["mecanismo_elaboracao_id"]);
                            projeto.MecanismoElaboracaoTexto = reader["mecanismo_elaboracao_texto"].ToString();
                        }

                        if (reader["easting"] != null && !Convert.IsDBNull(reader["easting"]))
                        {
                            projeto.Easting = Convert.ToDecimal(reader["easting"]).ToString("F4");
                        }

                        if (reader["northing"] != null && !Convert.IsDBNull(reader["northing"]))
                        {
                            projeto.Northing = Convert.ToDecimal(reader["northing"]).ToString("F4");
                        }

                        if (reader["menor_x"] != null && !Convert.IsDBNull(reader["menor_x"]))
                        {
                            projeto.MenorX = Convert.ToDecimal(reader["menor_x"]);
                        }

                        if (reader["menor_y"] != null && !Convert.IsDBNull(reader["menor_y"]))
                        {
                            projeto.MenorY = Convert.ToDecimal(reader["menor_y"]);
                        }

                        if (reader["maior_x"] != null && !Convert.IsDBNull(reader["maior_x"]))
                        {
                            projeto.MaiorX = Convert.ToDecimal(reader["maior_x"]);
                        }

                        if (reader["maior_y"] != null && !Convert.IsDBNull(reader["maior_y"]))
                        {
                            projeto.MaiorY = Convert.ToDecimal(reader["maior_y"]);
                        }
                    }

                    reader.Close();
                }

                if (projeto.Id <= 0 || simplificado)
                {
                    return(projeto);
                }

                //Busca os arquivos
                if (projeto.Id > 0)
                {
                    projeto.Arquivos = ObterArquivos(projeto.Id, banco: bancoDeDados, finalizado: finalizado);
                }

                #endregion
            }

            return(projeto);
        }
        internal SimuladorGeo Obter(int id, BancoDeDados banco = null, bool simplificado = false, bool finalizado = false)
        {
            SimuladorGeo simulador = new SimuladorGeo();

            string tabela = finalizado ? "crt_projeto_geo" : "tmp_projeto_geo";

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Projeto Geográfico

                Comando comando = bancoDeDados.CriarComando(@"select g.id, ls.id situacao_id, ls.texto situacao_texto,
					lm.id mecanismo_elaboracao_id, lm.texto mecanismo_elaboracao_texto, g.easting, g.norhting northing,
					g.menor_x, g.menor_y, g.maior_x, g.maior_y, g.tid 
					from {0}tmp_projeto_geo g, {0}lov_crt_projeto_geo_situacao ls, {0}lov_crt_projeto_geo_nivel ln, {0}lov_crt_projeto_geo_mecanismo lm         
					where g.situacao = ls.id 
					and g.nivel_precisao = ln.id(+) 
					and g.mecanismo_elaboracao = lm.id(+) 
					and g.id = :id"                    , EsquemaBanco);

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

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    if (reader.Read())
                    {
                        simulador     = new SimuladorGeo();
                        simulador.Id  = id;
                        simulador.Tid = reader["tid"].ToString();

                        if (reader["situacao_id"] != null && !Convert.IsDBNull(reader["situacao_id"]))
                        {
                            simulador.SituacaoId    = Convert.ToInt32(reader["situacao_id"]);
                            simulador.SituacaoTexto = reader["situacao_texto"].ToString();
                        }

                        if (reader["mecanismo_elaboracao_id"] != null && !Convert.IsDBNull(reader["mecanismo_elaboracao_id"]))
                        {
                            simulador.MecanismoElaboracaoId    = Convert.ToInt32(reader["mecanismo_elaboracao_id"]);
                            simulador.MecanismoElaboracaoTexto = reader["mecanismo_elaboracao_texto"].ToString();
                        }

                        if (reader["easting"] != null && !Convert.IsDBNull(reader["easting"]))
                        {
                            simulador.Easting = Convert.ToDecimal(reader["easting"]).ToString("N4");
                        }

                        if (reader["northing"] != null && !Convert.IsDBNull(reader["northing"]))
                        {
                            simulador.Northing = Convert.ToDecimal(reader["northing"]).ToString("N4");
                        }

                        if (reader["menor_x"] != null && !Convert.IsDBNull(reader["menor_x"]))
                        {
                            simulador.MenorX = Convert.ToDecimal(reader["menor_x"]);
                        }

                        if (reader["menor_y"] != null && !Convert.IsDBNull(reader["menor_y"]))
                        {
                            simulador.MenorY = Convert.ToDecimal(reader["menor_y"]);
                        }

                        if (reader["maior_x"] != null && !Convert.IsDBNull(reader["maior_x"]))
                        {
                            simulador.MaiorX = Convert.ToDecimal(reader["maior_x"]);
                        }

                        if (reader["maior_y"] != null && !Convert.IsDBNull(reader["maior_y"]))
                        {
                            simulador.MaiorY = Convert.ToDecimal(reader["maior_y"]);
                        }
                    }

                    reader.Close();
                }

                if (simulador.Id <= 0 || simplificado)
                {
                    return(simulador);
                }

                #endregion
            }

            return(simulador);
        }
Beispiel #9
0
        public SimuladorGeoArquivo EnviarArquivo(SimuladorGeo projeto)
        {
            SimuladorGeoArquivo arquivoEnviado = new SimuladorGeoArquivo();

            try
            {
                if (!_validar.EnviarArquivo(projeto))
                {
                    return(new SimuladorGeoArquivo());
                }

                arquivoEnviado           = projeto.ArquivoEnviado;
                arquivoEnviado.Tipo      = (int)eSimuladorGeoFilaTipo.Dominialidade;
                arquivoEnviado.Etapa     = (int)eSimuladorGeoFilaEtapa.Validacao;
                arquivoEnviado.Situacao  = (int)eSimuladorGeoFilaSituacao.Aguardando;
                arquivoEnviado.Mecanismo = (int)eSimuladorGeoMecanismo.Simulador;

                GerenciadorTransacao.ObterIDAtual();
                SimuladorGeoArquivoBus busArquivo = new SimuladorGeoArquivoBus();

                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioPublicoGeo))
                {
                    bancoDeDados.IniciarTransacao();

                    busArquivo.Copiar(arquivoEnviado);

                    busArquivo.ObterTemporario(arquivoEnviado);

                    arquivoEnviado.IdRelacionamento = _da.ExisteArquivoFila(arquivoEnviado, bancoDeDados);

                    List <SimuladorGeoArquivo> arquivosSalvos = _da.ObterArquivos(arquivoEnviado.ProjetoId, bancoDeDados)
                                                                .Where(x => x.Tipo == (int)eSimuladorGeoArquivoTipo.ArquivoEnviado).ToList();

                    Arquivo arqAnterior = null;

                    if (arquivosSalvos.Count > 0)
                    {
                        SimuladorGeoArquivo arq = arquivosSalvos.FirstOrDefault(x => x.Tipo == (int)eSimuladorGeoArquivoTipo.ArquivoEnviado);
                        try
                        {
                            arqAnterior = busArquivo.Obter((arq ?? new SimuladorGeoArquivo()).Id.GetValueOrDefault());
                            if (arqAnterior != null)
                            {
                                arquivoEnviado.Id = arqAnterior.Id.Value;
                                busArquivo.Deletar(arqAnterior.Caminho);
                            }
                        }
                        catch
                        {
                            ArquivoDa arqDa = new ArquivoDa();
                            if (arqAnterior == null && (arq ?? new SimuladorGeoArquivo()).Id.GetValueOrDefault() > 0)
                            {
                                arqAnterior = busArquivo.ObterDados((arq ?? new SimuladorGeoArquivo()).Id.GetValueOrDefault());
                            }
                            arqDa.MarcarDeletado(arqAnterior.Id.Value, arqAnterior.Caminho, bancoDeDados);
                        }
                    }

                    ArquivoDa _arquivoDa = new ArquivoDa();
                    _arquivoDa.Salvar(arquivoEnviado, null, "PublicoGeo", "PublicoGeo", (int)eExecutorTipo.Publico, null, bancoDeDados);

                    arquivoEnviado.Buffer.Close();
                    arquivoEnviado.Buffer.Dispose();
                    arquivoEnviado.Buffer = null;

                    projeto.MenorX = (projeto.EastingDecimal > 0) ? projeto.EastingDecimal - 5000 : Decimal.Zero;
                    projeto.MenorY = (projeto.NorthingDecimal > 0) ? projeto.NorthingDecimal - 5000 : Decimal.Zero;
                    projeto.MaiorX = (projeto.EastingDecimal > 0) ? projeto.EastingDecimal + 5000 : Decimal.Zero;
                    projeto.MaiorY = (projeto.NorthingDecimal > 0) ? projeto.NorthingDecimal + 5000 : Decimal.Zero;

                    _da.Salvar(projeto, bancoDeDados);

                    //Atualiza a lista de arquivos do projeto
                    _da.AtualizarArquivosImportar(arquivoEnviado, bancoDeDados);

                    if (arquivoEnviado.IdRelacionamento <= 0)
                    {
                        _da.InserirFila(arquivoEnviado, bancoDeDados);
                    }
                    else
                    {
                        _da.AlterarSituacaoFila(arquivoEnviado, bancoDeDados);
                    }

                    _da.AtualizarGeoEmp(projeto, bancoDeDados);

                    bancoDeDados.Commit();
                }

                ObterSituacao(arquivoEnviado);
            }
            catch (Exception exc)
            {
                if (arquivoEnviado != null && arquivoEnviado.Buffer != null)
                {
                    arquivoEnviado.Buffer.Close();
                    arquivoEnviado.Buffer.Dispose();
                    arquivoEnviado.Buffer = null;
                }

                Validacao.AddErro(exc);
            }
            return(arquivoEnviado);
        }