public ActionResult EditarNumeracao(int id) { ConfiguracaoDocumentoFitossanitario _listaCompletaIntervalos = _bus.ObterPorAno(DateTime.Now.Year); DocumentoFitossanitario intervaloSelecionado = _listaCompletaIntervalos.DocumentoFitossanitarioIntervalos.FirstOrDefault(x => x.ID == id); return(View("EditarNumeracao", intervaloSelecionado)); }
internal ConfiguracaoDocumentoFitossanitario Obter(bool simplificado = false, BancoDeDados banco = null) { ConfiguracaoDocumentoFitossanitario retorno = new ConfiguracaoDocumentoFitossanitario(); using (BancoDeDados bancoDedados = BancoDeDados.ObterInstancia(banco)) { Comando comando = bancoDedados.CriarComando(@"select id, tid from cnf_doc_fitossanitario", EsquemaBanco); using (IDataReader reader = bancoDedados.ExecutarReader(comando)) { if (reader.Read()) { retorno.ID = reader.GetValue <int>("id"); retorno.Tid = reader.GetValue <string>("tid"); } reader.Close(); } if (retorno == null || retorno.ID < 1 || simplificado) { return(retorno); } #region Intervalos comando = bancoDedados.CriarComando(@"select i.id, i.tid, i.tipo_documento, lt.texto tipo_documento_texto, i.tipo, i.numero_inicial, i.numero_final from cnf_doc_fito_intervalo i, lov_doc_fitossanitarios_tipo lt where lt.id = i.tipo_documento and i.configuracao = :configuracao" , EsquemaBanco); comando.AdicionarParametroEntrada("configuracao", retorno.ID, DbType.Int32); using (IDataReader reader = bancoDedados.ExecutarReader(comando)) { DocumentoFitossanitario item = null; while (reader.Read()) { item = new DocumentoFitossanitario(); item.ID = reader.GetValue <int>("id"); item.TID = reader.GetValue <string>("tid"); item.TipoDocumentoID = reader.GetValue <int>("tipo_documento"); item.TipoDocumentoTexto = reader.GetValue <string>("tipo_documento_texto"); item.Tipo = reader.GetValue <int>("tipo"); item.NumeroInicial = reader.GetValue <long>("numero_inicial"); item.NumeroFinal = reader.GetValue <long>("numero_final"); retorno.DocumentoFitossanitarioIntervalos.Add(item); } reader.Close(); } #endregion } return(retorno); }
public ActionResult ValidarIntervalo(DocumentoFitossanitario intervalo, List <DocumentoFitossanitario> intervalos) { _validar.ValidarIntervalo(intervalo, intervalos); return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros, }, JsonRequestBehavior.AllowGet)); }
public bool ValidarIntervalo(DocumentoFitossanitario intervalo, List <DocumentoFitossanitario> intervalos) { if (intervalo.TipoDocumentoID <= 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.TipoDocumentoObrigatorio(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalo.NumeroInicial <= 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialObrigatorio(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if (intervalo.NumeroInicial.ToString().Length != 10) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialInvalido(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalo.NumeroFinal <= 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalObrigatorio(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if (intervalo.NumeroFinal.ToString().Length != 10) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalInvalido(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if (intervalo.NumeroFinal % 25 != 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalMultiplo25(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalo.NumeroFinal <= intervalo.NumeroInicial) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalMaiorInicial(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalos != null && intervalos.Count > 0) { intervalos.ForEach(item => { if (!intervalo.Equals(item) && intervalo.TipoDocumentoID == item.TipoDocumentoID && ((intervalo.NumeroInicial >= item.NumeroInicial && intervalo.NumeroInicial <= item.NumeroFinal) || (item.NumeroInicial >= intervalo.NumeroInicial && item.NumeroInicial <= intervalo.NumeroFinal))) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialExiste(intervalo.TipoDocumentoTexto)); } }); } return(Validacao.EhValido); }
internal bool ContidoIntervalo(DocumentoFitossanitario intervalo, BancoDeDados banco = null) { using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { Comando comando = bancoDeDados.CriarComando(@" select count(*) from cnf_doc_fito_intervalo t where ((:numero_inicial between t.numero_inicial and t.numero_final) or (t.numero_inicial between :numero_inicial and :numero_final)) and tipo = :tipo and tipo_documento = :tipo_documento and id != :intervalo" , EsquemaBanco); comando.AdicionarParametroEntrada("numero_inicial", intervalo.NumeroInicial, DbType.Int64); comando.AdicionarParametroEntrada("numero_final", intervalo.NumeroFinal, DbType.Int64); comando.AdicionarParametroEntrada("tipo", intervalo.Tipo, DbType.Int32); comando.AdicionarParametroEntrada("tipo_documento", intervalo.TipoDocumentoID, DbType.Int32); comando.AdicionarParametroEntrada("intervalo", intervalo.ID, DbType.Int32); return(bancoDeDados.ExecutarScalar <int>(comando) > 0); } }
public ActionResult SalvarEdicao(ConfiguracaoDocumentoFitossanitario configuracao, string idString, string novoNumInicial, string novoNumFinal) { int id = Convert.ToInt32(idString); DocumentoFitossanitario editar = configuracao.DocumentoFitossanitarioIntervalos.FirstOrDefault(x => x.ID == id); long inicioOriginal = editar.NumeroInicial; long fimOriginal = editar.NumeroFinal; editar.NumeroInicial = Convert.ToInt64(novoNumInicial); editar.NumeroFinal = Convert.ToInt64(novoNumFinal); var intervalos = configuracao.DocumentoFitossanitarioIntervalos.Where(x => x.ID != id).ToList(); //Faz as verificações para ver se o novo intervalo é válido _validar.ValidarIntervalo(editar, intervalos); //Verificações normais relativas a um intervalo //Trazer a lista de todos os numeros já LIBERADOS (CFO/CFOC) ou USADOS (PTV) dentro do intervalo var lista = _bus.ObterLiberadosIntervalo(editar.TipoDocumentoID, inicioOriginal, fimOriginal, editar.Serie); //Verifica se existem números liberados dentro do intervalo modificado //Se existe, verificar se a mudança de range deixa de incluir os números liberados if (lista.Count(x => x < editar.NumeroInicial || x > editar.NumeroFinal) > 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.IntervaloUtilizado()); } else { //Se for válido, remove o item original de Configuração configuracao.DocumentoFitossanitarioIntervalos = intervalos; //Coloca o item com os novos valores em Configuração configuracao.DocumentoFitossanitarioIntervalos.Add(editar); //Salva as edições _bus.Editar(configuracao, id); } return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros, @Url = Url.Action("Configurar", "ConfiguracaoDocumentoFitossanitario", new { Msg = Validacao.QueryParam() }) }, JsonRequestBehavior.AllowGet)); }
public ActionResult Excluir(ConfiguracaoDocumentoFitossanitario configuracao, string idString) { int id = Convert.ToInt32(idString); DocumentoFitossanitario docExcluir = configuracao.DocumentoFitossanitarioIntervalos.FirstOrDefault(x => x.ID == id); //Trazer a lista de todos os numeros já LIBERADOS (CFO/CFOC) ou USADOS (PTV) dentro do intervalo var lista = _bus.ObterLiberadosIntervalo(docExcluir.TipoDocumentoID, docExcluir.NumeroInicial, docExcluir.NumeroFinal, docExcluir.Serie); //Se a lista não é vazia o intervalo não pode ser excluído if (lista.Count() > 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.IntervaloUtilizado()); } else { _bus.Excluir(configuracao, id); } return(Json(new { @EhValido = Validacao.EhValido, @Msg = Validacao.Erros, @Url = Url.Action("Configurar", "ConfiguracaoDocumentoFitossanitario", new { Msg = Validacao.QueryParam() }) }, JsonRequestBehavior.AllowGet)); }
public bool ValidarIntervalo(DocumentoFitossanitario intervalo, List <DocumentoFitossanitario> intervalos) { if (intervalo.TipoDocumentoID <= 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.TipoDocumentoObrigatorio(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalo.NumeroInicial <= 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialObrigatorio(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if (intervalo.NumeroInicial.ToString().Substring(2, 2) != DateTime.Now.Year.ToString().Substring(2, 2)) { var temp1 = intervalo.NumeroInicial.ToString().Substring(2, 2); var temp2 = DateTime.Now.Year.ToString().Substring(2, 2); Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.AnoCorrenteObrigatorio(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString(), "NumeroInicial")); } else if (intervalo.NumeroFinal.ToString().Substring(2, 2) != DateTime.Now.Year.ToString().Substring(2, 2)) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.AnoCorrenteObrigatorio(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString(), "NumeroFinal")); } else if (intervalo.NumeroInicial.ToString().Length != 10 && intervalo.TipoDocumentoTexto == "PTV") { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialInvalido(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if (intervalo.NumeroInicial.ToString().Length != 8 && intervalo.Tipo == 1 && (intervalo.TipoDocumentoTexto == "CFO" || intervalo.TipoDocumentoTexto == "CFOC") && (intervalo.ID <= 0)) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialInvalidoCFOeCFOC(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalo.NumeroInicial.ToString().Length != 8 && intervalo.Tipo == 2 && (intervalo.TipoDocumentoTexto == "CFO" || intervalo.TipoDocumentoTexto == "CFOC") && (intervalo.ID <= 0)) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialInvalido(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if ((intervalo.NumeroFinal.ToString().Length != 8 && intervalo.NumeroFinal.ToString().Length != 10) && (intervalo.TipoDocumentoTexto == "CFO" || intervalo.TipoDocumentoTexto == "CFOC")) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialInvalidoCFOeCFOC(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalo.NumeroFinal <= 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalObrigatorio(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if (intervalo.NumeroFinal.ToString().Length != 10 && intervalo.TipoDocumentoTexto == "PTV") { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalInvalido(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if (intervalo.NumeroFinal.ToString().Length != 8 && intervalo.Tipo == 1 && (intervalo.TipoDocumentoTexto == "CFO" || intervalo.TipoDocumentoTexto == "CFOC") && (intervalo.ID <= 0)) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalInvalidoCFOeCFOC(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalo.NumeroFinal.ToString().Length != 8 && intervalo.Tipo == 2 && (intervalo.TipoDocumentoTexto == "CFO" || intervalo.TipoDocumentoTexto == "CFOC") && (intervalo.ID <= 0)) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalInvalido(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if ((intervalo.NumeroFinal.ToString().Length != 8 && intervalo.NumeroFinal.ToString().Length != 10) && (intervalo.TipoDocumentoTexto == "CFO" || intervalo.TipoDocumentoTexto == "CFOC")) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalInvalidoCFOeCFOC(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } else if (intervalo.NumeroFinal % 25 != 0) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalMultiplo25(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalo.NumeroFinal <= intervalo.NumeroInicial) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroFinalMaiorInicial(((eDocumentoFitossanitarioTipoNumero)intervalo.Tipo).ToString())); } if (intervalos != null && intervalos.Count > 0) { intervalos.ForEach(item => { if (!intervalo.Equals(item) && intervalo.TipoDocumentoID == item.TipoDocumentoID //&& intervalo.Tipo == item.Tipo && (((intervalo.NumeroInicial >= item.NumeroInicial && intervalo.NumeroInicial <= item.NumeroFinal) && ((String.IsNullOrWhiteSpace(intervalo.Serie) && String.IsNullOrWhiteSpace(item.Serie)) || intervalo.Serie == item.Serie)) || ((item.NumeroInicial >= intervalo.NumeroInicial && item.NumeroInicial <= intervalo.NumeroFinal) && ((String.IsNullOrWhiteSpace(intervalo.Serie) && String.IsNullOrWhiteSpace(item.Serie)) || intervalo.Serie == item.Serie)) ) ) { Validacao.Add(Mensagem.ConfiguracaoDocumentoFitossanitario.NumeroInicialExiste(intervalo.TipoDocumentoTexto)); } }); } return(Validacao.EhValido); }
internal Resultados <DocumentoFitossanitario> Filtrar(Filtro <DocumentoFitossanitarioListarFiltros> filtros, BancoDeDados banco = null) { Resultados <DocumentoFitossanitario> retorno = new Resultados <DocumentoFitossanitario>(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { string comandtxt = string.Empty; Comando comando = bancoDeDados.CriarComando(""); #region Adicionando Filtros //comandtxt += comando.FiltroAndLike("p.texto", "texto", filtros.Dados.Texto, true, true); //comandtxt += comando.FiltroAndLike("i.TIPO_DOCUMENTO", "TipoDocumento", filtros.Dados.TipoDocumentoID, true, true); //comandtxt += comando.FiltroAndLike("i.TIPO", "TipoNumeracao", filtros.Dados.TipoNumeracaoID, true, true); //comandtxt += comando.FiltroAndLike("i.NUMERO_INICIAL", "Numero_Inicial", filtros.Dados.Ano, true, true); // comando = bancoDedados.CriarComando(@"select i.id, i.tid, i.tipo_documento, lt.texto tipo_documento_texto, i.tipo, i.numero_inicial, i.numero_final // from cnf_doc_fito_intervalo i, lov_doc_fitossanitarios_tipo lt // where lt.id = i.tipo_documento // and i.configuracao = :configuracao // and substr(i.NUMERO_INICIAL, 3, 2) = " + anoStr + //to_char(sysdate, 'YY') // " order by i.tipo_documento, i.numero_inicial", EsquemaBanco); // comando.AdicionarParametroEntrada("configuracao", retorno.ID, DbType.Int32); List <String> ordenar = new List <String>() { "TipoDocumento", "Numero_Inicial" }; List <String> colunas = new List <String>() { "TipoDocumento", "Numero_Inicial" }; #endregion if (!string.IsNullOrEmpty(filtros.Dados.TipoNumeracaoID) && !string.IsNullOrEmpty(filtros.Dados.TipoDocumentoID) && !string.IsNullOrEmpty(filtros.Dados.Ano)) { // comandtxt += @" union all select p.id, p.texto, p.codigo, p.tid, p.origem, o.texto origem_texto, max(trunc(metaphone.jaro_winkler(:filtro_fonetico,p.texto),5)) // similaridade from tab_profissao p, lov_profissao_origem o where p.origem = o.id and p.texto_fonema like upper('%' || upper(metaphone.gerarCodigo(:filtro_fonetico)) || '%') // and metaphone.jaro_winkler(:filtro_fonetico,p.texto) >= to_number(:limite_similaridade) group by p.id, p.texto, p.codigo, p.tid, p.origem, o.texto"; comandtxt += @"select td.texto TipoDocumento, tn.texto TipoNumeracao, i.NUMERO_INICIAL, i.NUMERO_FINAL, i.SERIE from CNF_DOC_FITO_INTERVALO i, lov_doc_fitossanitarios_tipo td, LOV_DOC_FITOSSANI_TIPO_NUMERO tn where i.TIPO_DOCUMENTO = " + Convert.ToInt32(filtros.Dados.TipoDocumentoID) + " and i.TIPO = " + Convert.ToInt32(filtros.Dados.TipoNumeracaoID) + " and substr(i.NUMERO_INICIAL, 3, 2) = " + filtros.Dados.Ano.Substring(2, 2) + " and i.TIPO_DOCUMENTO = td.ID and i.TIPO = tn.ID"; //comando.AdicionarParametroEntrada("filtro_fonetico", filtros.Dados.Texto, DbType.String); //comando.AdicionarParametroEntrada("limite_similaridade", ConfiguracaoSistema.LimiteSimilaridade, DbType.String); colunas[0] = "TipoDocumento"; ordenar[0] = "TipoDocumento"; } #region Executa a pesquisa nas tabelas //comando.DbCommand.CommandText = "select count(*) from (select p.id, p.texto, p.codigo, p.tid, p.origem, o.texto origem_texto, 0 similaridade from tab_profissao p, lov_profissao_origem o where p.origem = o.id " + comandtxt + ")"; comando.DbCommand.CommandText = "select count(*) from (" + comandtxt + ")"; retorno.Quantidade = Convert.ToInt32(bancoDeDados.ExecutarScalar(comando)); comando.AdicionarParametroEntrada("menor", filtros.Menor); comando.AdicionarParametroEntrada("maior", filtros.Maior); //comandtxt = String.Format(@"select p.id, p.texto, p.codigo, p.tid, p.origem, o.texto origem_texto, 1 similaridade //from tab_profissao p, lov_profissao_origem o where p.origem = o.id {0} {1}", comandtxt, DaHelper.Ordenar(colunas, ordenar, !string.IsNullOrEmpty(filtros.Dados.Texto))); 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)) { DocumentoFitossanitario doc; while (reader.Read()) { doc = new DocumentoFitossanitario(); doc.TipoDocumentoTexto = reader["TipoDocumento"].ToString(); doc.NumeroInicial = Convert.ToInt64(reader["NUMERO_INICIAL"]); doc.NumeroFinal = Convert.ToInt64(reader["NUMERO_FINAL"]); doc.Serie = reader["SERIE"].ToString(); retorno.Itens.Add(doc); //profissao.Id = Convert.ToInt32(reader["id"]); //if (retorno.Itens.Exists(x => x.Id == profissao.Id)) //{ // continue; //} //profissao.Tid = reader["tid"].ToString(); //profissao.Texto = reader["texto"].ToString(); //profissao.Codigo = reader["codigo"].ToString(); //profissao.OrigemId = Convert.ToInt32(reader["origem"]); //retorno.Itens.Add(profissao); } reader.Close(); } } return(retorno); }
internal ConfiguracaoDocumentoFitossanitario ObterPorAno(int ano, bool simplificado = false, BancoDeDados banco = null) { ConfiguracaoDocumentoFitossanitario retorno = new ConfiguracaoDocumentoFitossanitario(); using (BancoDeDados bancoDedados = BancoDeDados.ObterInstancia(banco)) { Comando comando = bancoDedados.CriarComando(@"select id, tid from cnf_doc_fitossanitario", EsquemaBanco); using (IDataReader reader = bancoDedados.ExecutarReader(comando)) { if (reader.Read()) { retorno.ID = reader.GetValue <int>("id"); retorno.Tid = reader.GetValue <string>("tid"); } reader.Close(); } if (retorno == null || retorno.ID < 1 || simplificado) { return(retorno); } #region Intervalos string anoStr = ano.ToString().Substring(2, 2); comando = bancoDedados.CriarComando(@"select i.id, i.tid, i.tipo_documento, lt.texto tipo_documento_texto, i.tipo, i.numero_inicial, i.numero_final, i.serie from cnf_doc_fito_intervalo i, lov_doc_fitossanitarios_tipo lt where lt.id = i.tipo_documento and i.configuracao = :configuracao and substr(i.NUMERO_INICIAL, 3, 2) = :anoStr order by i.tipo_documento, i.numero_inicial", EsquemaBanco); comando.AdicionarParametroEntrada("anoStr", anoStr, DbType.Int32); comando.AdicionarParametroEntrada("configuracao", retorno.ID, DbType.Int32); using (IDataReader reader = bancoDedados.ExecutarReader(comando)) { DocumentoFitossanitario item = null; while (reader.Read()) { item = new DocumentoFitossanitario(); item.ID = reader.GetValue <int>("id"); item.TID = reader.GetValue <string>("tid"); item.TipoDocumentoID = reader.GetValue <int>("tipo_documento"); item.TipoDocumentoTexto = reader.GetValue <string>("tipo_documento_texto"); item.Tipo = reader.GetValue <int>("tipo"); item.NumeroInicial = reader.GetValue <long>("numero_inicial"); item.NumeroFinal = reader.GetValue <long>("numero_final"); item.Serie = reader.GetValue <string>("serie"); retorno.DocumentoFitossanitarioIntervalos.Add(item); } reader.Close(); } retorno.DocumentoFitossanitarioIntervalos = retorno.DocumentoFitossanitarioIntervalos.OrderBy(a => a.NumeroInicial).OrderBy(a => a.Serie).OrderBy(a => a.TipoDocumentoTexto).ToList(); #endregion } return(retorno); }