/// <summary> /// Lista a sequnece de cidade /// </summary> /// <returns>Um inteiro, número da sequence</returns> private int Sequence() { try { //Abre conexão conn.Open(); //Sql da consulta sql = "select "; //Executa consulta conn.ExecuteReader(sql); ECidade cidade = ConvertList(conn)[0]; int sequence = cidade.IsnCidade; //Retorna Item return(sequence); } catch (Exception e) { //Exceção throw e; } finally { //Fecha conexão conn.Close(); } }
/// <summary> /// Altera um novo cidade /// </summary> /// <param name="usuario">Recebe a entidade cidade como parametro</param> /// <returns>Altera corretamente retorna true</returns> public bool Alterar(ECidade cidade) { try { //Abre conexão conn.Open(); //Lista de parametros Object[] param = new Object[4]; param[0] = Sequence(); param[1] = cidade.estado.IsnEstado; param[2] = cidade.DscCidade; param[3] = cidade.FlgAtivo; //Sql do Update string sql = "Update into tb_cidade set dsc_cidade = '{2}', flg_ativo = '{3}', isn_estado = {1} where isn_cidade = {0})"; //Comando executado conn.ExecuteNonQuery(sql, param); //retorno return(true); } catch (Exception e) { //Execeção retorna false //*******************Temos que melhorar o tratamento de exceções************ return(false); } finally { //Conexão fechada conn.Close(); } }
/// <summary> /// Insere uma novo cidade /// </summary> /// <param name="usuario">Recebe a entidade cidade como parametro</param> /// <returns>Inserido corretamente retorna true</returns> public bool Inserir(ECidade cidade) { try { //Abre conexão conn.Open(); //Lista de parametros Object[] param = new Object[4]; param[0] = Sequence(); param[1] = cidade.estado.IsnEstado; param[2] = cidade.DscCidade; param[3] = cidade.FlgAtivo; //Sql do Insert string sql = "Insert into tb_cidade (isn_cidade,isn_estado, dsc_cidade, flg_ativo) values ({0} , {1} , '{2}', '{3}')"; //Comando executado conn.ExecuteNonQuery(sql, param); //retorno return(true); } catch (Exception e) { //Execeção retorna false //*******************Temos que melhorar o tratamento de exceções************ return(false); } finally { //Conexão fechada conn.Close(); } }
public string Buscar(string encomenda, List <Trecho> trechosCadastrados) { string[] informacoesEncomenda = encomenda.Split(Constantes.CaracterDelimitador); ECidade cidadeOrigem = (ECidade)Enum.Parse(typeof(ECidade), informacoesEncomenda[0], true); ECidade cidadeDestino = (ECidade)Enum.Parse(typeof(ECidade), informacoesEncomenda[1], true); Trecho trechoDireto = trechosCadastrados.FirstOrDefault(t => t.CidadeOrigem == cidadeOrigem && t.CidadeDestino == cidadeDestino); if (trechoDireto != null) { return($"{trechoDireto.CidadeOrigem.ToString()} {trechoDireto.CidadeDestino.ToString()} {trechoDireto.QuantidadeDias}"); } List <Trecho> trechosParaDestino = trechosCadastrados.Where(t => t.CidadeOrigem == cidadeOrigem).ToList(); int maximoRotas = 8; List <Trecho> rotasEncontradas = BuscarProximaRota(cidadeOrigem, cidadeDestino, trechosParaDestino, trechosCadastrados, maximoRotas); if (rotasEncontradas != null) { Trecho ultimoRotaEncontrada = rotasEncontradas.Last(); Trecho proximaRota = trechosParaDestino.FirstOrDefault(t => t.CidadeDestino == ultimoRotaEncontrada.CidadeOrigem); rotasEncontradas.Add(proximaRota); rotasEncontradas.Reverse(); int totalDias = rotasEncontradas.Sum(t => t.QuantidadeDias); return($"{String.Join(" ", rotasEncontradas.Select(x => String.Join(" ", x.CidadeOrigem.ToString())))} {cidadeDestino.ToString()} {totalDias}"); } return($"{cidadeOrigem.ToString()} {cidadeDestino.ToString()} N/D"); }
/// <summary> /// Faz a conversão das listas /// </summary> /// <param name="conexao">Recebe a conexão</param> /// <returns>Lista convertida</returns> private List <ECidade> ConvertList(ConexaoPostGre conexao) { List <ECidade> lst = new List <ECidade>(); ECidade contrato; while (conexao.Reader.Read()) { contrato = new ECidade(); contrato.IsnCidade = conexao.Reader.GetInt32(0); contrato.estado = new FEstado().Buscar(conexao.Reader.GetInt32(1)); contrato.DscCidade = conexao.Reader.GetString(2); contrato.FlgAtivo = conexao.Reader.GetBoolean(3); lst.Add(contrato); } return(lst); }
private List <Trecho> BuscarProximaRota(ECidade cidadeOrigem, ECidade cidadeDestino, List <Trecho> trechosParaDestino, List <Trecho> trechosCadastrados, int maximoRotas) { List <Trecho> rotasEncontradas = new List <Trecho>(); // Valida se já esgotou todas as possibilidades de rotas. if (maximoRotas == 0) { return(null); } if (!trechosParaDestino.Any(t => t.CidadeDestino == cidadeDestino)) { List <Trecho> proximasRotas = trechosCadastrados .Where(t => t.CidadeDestino != cidadeOrigem && trechosParaDestino.Select(d => d.CidadeDestino).Contains(t.CidadeOrigem)) .ToList(); rotasEncontradas = BuscarProximaRota(cidadeOrigem, cidadeDestino, proximasRotas, trechosCadastrados, maximoRotas - 1); if (rotasEncontradas != null) { Trecho ultimoRotaEncontrada = rotasEncontradas.Last(); // Validação para não inserir duplicadamente a rota para a cidade de destino. if (!proximasRotas.Any(t => t.CidadeOrigem == ultimoRotaEncontrada.CidadeOrigem && t.CidadeDestino == ultimoRotaEncontrada.CidadeDestino)) { Trecho proximaRota = proximasRotas.FirstOrDefault(t => t.CidadeDestino == ultimoRotaEncontrada.CidadeOrigem); rotasEncontradas.Add(proximaRota); } return(rotasEncontradas); } return(null); } Trecho trechoDestino = trechosParaDestino.First(t => t.CidadeDestino == cidadeDestino); rotasEncontradas.Add(trechoDestino); return(rotasEncontradas); }