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); } }
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); }
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); }
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); }