public List <string> BuscaResultado(string[] trechoLines, string[] encomendaLines) { var nodes = Nodes.GetNodes(trechoLines); var trechos = Trechos.ReadFromList(encomendaLines); var resultado = new List <string>(); foreach (Trecho trecho in trechos) { var node1 = (from n in nodes where n.Label == trecho.Origem.Label select n).First(); var node2 = (from n in nodes where n.Label == trecho.Destino.Label select n).First(); var result = BuscaMaisCurto(node1, node2); string line = ""; int dist = 0; for (int i = 0; i < result.Length; i++) { var node = result[i]; line += node.Label + " "; if (i > 0) { var edge = (from ed in node.Edges where ed.Node2 == node && ed.Node1 == result[i - 1] select ed).First(); dist += edge.Value; } } resultado.Add(line + dist); } return(resultado); }
/// <summary> /// Retrieves a list of flight Trechos /// </summary> /// <param name="route2">class UberAir</param> /// <param name="route1">class UberAir </param> /// <param name="uberFlightD">class UberAir </param> /// <returns>Return with List of flight Trechos</returns> internal List <Trechos> FillStretchUberPlanes(UberAir route2, UberAir route1, UberAir uberFlightD) { Logger?.LogDebug("'{0}' has been invoked", nameof(FillStretchUberPlanes)); Trechos trechos; List <Trechos> listTrechos; try { listTrechos = new List <Trechos>(); if (route2 != null) { trechos = new Trechos(); trechos.origem = route2.aeroporto_origem; trechos.destino = route2.aeroporto_destino; trechos.saida = route2.data.AddTicks(route2.horario_saida.Ticks); trechos.chegada = route2.data.AddTicks(route2.horario_chegada.Ticks); trechos.operadora = "UberAir"; trechos.preco = route2.preco; listTrechos.Add(trechos); } if (route1 != null) { trechos = new Trechos(); trechos.origem = route1.aeroporto_origem; trechos.destino = route1.aeroporto_destino; trechos.saida = route1.data.AddTicks(route1.horario_saida.Ticks); trechos.chegada = route1.data.AddTicks(route1.horario_chegada.Ticks); trechos.operadora = "UberAir"; trechos.preco = route1.preco; listTrechos.Add(trechos); } if (uberFlightD != null) { trechos = new Trechos(); trechos.origem = uberFlightD.aeroporto_origem; trechos.destino = uberFlightD.aeroporto_destino; trechos.saida = uberFlightD.data.AddTicks(uberFlightD.horario_saida.Ticks); trechos.chegada = uberFlightD.data.AddTicks(uberFlightD.horario_chegada.Ticks); trechos.operadora = "UberAir"; trechos.preco = uberFlightD.preco; listTrechos.Add(trechos); } return(listTrechos); } catch (Exception ex) { Logger?.LogCritical("There was an error on '{0}' invocation: {1}", nameof(FillStretchUberPlanes), ex.Message); return(null); } }
/// <summary> /// Retrieves a list of flight Trechos /// </summary> /// <param name="route2">class NineNinePlanes</param> /// <param name="route1">class NineNinePlanes </param> /// <param name="nineFlightD">class NineNinePlanes </param> /// <returns>Return with List of flight Trechos</returns> internal List <Trechos> FillStretch99Planes(NineNinePlanes route2 = null, NineNinePlanes route1 = null, NineNinePlanes nineFlightD = null) { Logger?.LogDebug("'{0}' has been invoked", nameof(FillStretch99Planes)); Trechos trechos; List <Trechos> listTrechos; try { listTrechos = new List <Trechos>(); if (route2 != null) { trechos = new Trechos(); trechos.origem = route2.origem; trechos.destino = route2.destino; trechos.saida = route2.data_saida.AddTicks(route2.saida.Ticks); trechos.chegada = route2.data_saida.AddTicks(route2.chegada.Ticks); trechos.operadora = "99Planes"; trechos.preco = route2.valor; listTrechos.Add(trechos); } if (route1 != null) { trechos = new Trechos(); trechos.origem = route1.origem; trechos.destino = route1.destino; trechos.saida = route1.data_saida.AddTicks(route1.saida.Ticks); trechos.chegada = route1.data_saida.AddTicks(route1.chegada.Ticks); trechos.operadora = "99Planes"; trechos.preco = route1.valor; listTrechos.Add(trechos); } if (nineFlightD != null) { trechos = new Trechos(); trechos.origem = nineFlightD.origem; trechos.destino = nineFlightD.destino; trechos.saida = nineFlightD.data_saida.AddTicks(nineFlightD.saida.Ticks); trechos.chegada = nineFlightD.data_saida.AddTicks(nineFlightD.chegada.Ticks); trechos.operadora = "99Planes"; trechos.preco = nineFlightD.valor; listTrechos.Add(trechos); } return(listTrechos); } catch (Exception ex) { Logger?.LogCritical("There was an error on '{0}' invocation: {1}", nameof(FillStretch99Planes), ex.Message); return(null); } }
/// <summary> /// Retrieves a list of disponible flight /// </summary> /// <param name="_aeroOri">Origin airport </param> /// <param name="_aeroDes">Destiny airport </param> /// <param name="_data">Data of Flight </param> /// <param name="listNine">"List of 99planes flight </param> /// <param name="listUberAir">List of UberAir flight </param> /// <returns>Return with List of disponible flight</returns> internal List <FlightList> ReturnFlightList(string _aeroOri, string _aeroDes, DateTime _data, List <NineNinePlanes> listNine, List <UberAir> listUberAir) { Logger?.LogDebug("'{0}' has been invoked", nameof(ReturnFlightList)); List <FlightList> FlightList = new List <FlightList>(); List <NineNinePlanes> FiltNineDest = new List <NineNinePlanes>(); List <UberAir> FiltUberDest = new List <UberAir>(); List <Trechos> listTrechos; try { foreach (NineNinePlanes NinePlane in listNine) { if (NinePlane.destino.ToString().ToUpper() == _aeroDes.ToUpper() && NinePlane.data_saida >= _data) { FiltNineDest.Add(NinePlane); } } foreach (UberAir UberPlane in listUberAir) { if (UberPlane.aeroporto_destino.ToString().ToUpper() == _aeroDes.ToUpper() && UberPlane.data >= _data) { FiltUberDest.Add(UberPlane); } } Trechos trechos; foreach (NineNinePlanes NineFlightD in FiltNineDest) { if (NineFlightD.origem == _aeroOri && NineFlightD.destino == _aeroDes) { listTrechos = FillStretch99Planes(null, null, NineFlightD); FlightList.Add(FillFlightList(_aeroOri, _aeroDes, listTrechos)); continue; } foreach (NineNinePlanes Route1 in listNine) { trechos = new Trechos(); listTrechos = new List <Trechos>(); bool validate = false; if (Route1.destino == NineFlightD.origem && NineFlightD.data_saida.AddTicks(NineFlightD.saida.Ticks) >= Route1.data_saida.AddTicks(Route1.chegada.Ticks)) { if (Route1.origem == _aeroOri && Route1.destino == NineFlightD.origem && (NineFlightD.data_saida.AddTicks(NineFlightD.saida.Ticks) - Route1.data_saida.AddTicks(Route1.chegada.Ticks)).TotalHours < 12) { listTrechos = FillStretch99Planes(null, Route1, NineFlightD); validate = true; } if (!validate) { foreach (NineNinePlanes Route2 in listNine) { if (Route2.origem == _aeroOri && Route2.destino == Route1.origem && Route1.data_saida.AddTicks(Route1.saida.Ticks) >= Route2.data_saida.AddTicks(Route2.chegada.Ticks)) { if ((Route1.data_saida.AddTicks(Route1.saida.Ticks) - Route2.data_saida.AddTicks(Route2.chegada.Ticks)).TotalHours < 12 && (NineFlightD.data_saida.AddTicks(NineFlightD.saida.Ticks) - Route1.data_saida.AddTicks(Route1.chegada.Ticks)).TotalHours < 12) { listTrechos = FillStretch99Planes(Route2, Route1, NineFlightD); validate = true; break; } } } } } if (validate) { FlightList.Add(FillFlightList(_aeroOri, _aeroDes, listTrechos)); } } } foreach (UberAir UberFlightD in FiltUberDest) { if (UberFlightD.aeroporto_origem == _aeroOri && UberFlightD.aeroporto_destino == _aeroDes) { listTrechos = FillStretchUberPlanes(null, null, UberFlightD); FlightList.Add(FillFlightList(_aeroOri, _aeroDes, listTrechos)); continue; } foreach (UberAir Route1 in listUberAir) { trechos = new Trechos(); listTrechos = new List <Trechos>(); bool validate = false; if (Route1.aeroporto_destino == UberFlightD.aeroporto_origem && UberFlightD.data.AddTicks(UberFlightD.horario_saida.Ticks) >= Route1.data.AddTicks(Route1.horario_chegada.Ticks)) { if (Route1.aeroporto_origem == _aeroOri && Route1.aeroporto_destino == UberFlightD.aeroporto_origem && (UberFlightD.data.AddTicks(UberFlightD.horario_saida.Ticks) - Route1.data.AddTicks(Route1.horario_chegada.Ticks)).TotalHours < 12) { listTrechos = FillStretchUberPlanes(null, Route1, UberFlightD); validate = true; } if (!validate) { foreach (UberAir Route2 in listUberAir) { if (Route2.aeroporto_origem == _aeroOri && Route2.aeroporto_destino == Route1.aeroporto_origem && Route1.data.AddTicks(Route1.horario_saida.Ticks) >= Route2.data.AddTicks(Route2.horario_chegada.Ticks)) { if ((Route1.data.AddTicks(Route1.horario_saida.Ticks) - Route2.data.AddTicks(Route2.horario_chegada.Ticks)).TotalHours < 12 && (UberFlightD.data.AddTicks(UberFlightD.horario_saida.Ticks) - Route1.data.AddTicks(Route1.horario_chegada.Ticks)).TotalHours < 12) { listTrechos = FillStretchUberPlanes(Route2, Route1, UberFlightD); validate = true; break; } } } } } if (validate) { FlightList.Add(FillFlightList(_aeroOri, _aeroDes, listTrechos)); } } } return(FlightList); } catch (Exception ex) { Logger?.LogCritical("There was an error on '{0}' invocation: {1}", nameof(ReturnFlightList), ex.Message); return(null); } }