// Get flights from all the servers in the data base. public async Task <FlightsFromServers> GetFlightsFromServers(List <Server> servers, DateTime time) { List <Flights> flights = new List <Flights>(); bool isError = false; // Get flights. foreach (Server server in servers.ToList()) { List <Flights> flights1 = new List <Flights>(); string result = await GetRequestFromServer(server, time); // Server did not responded. if (result == null) { continue; } flights1 = CreateFlightsFromServer(result, time, server); // Server response is invalid. if (flights1 == null) { isError = true; } else { flights.AddRange(flights1); } } FlightsFromServers flightsFromServers = new FlightsFromServers(flights, isError); return(flightsFromServers); }
public async Task <ActionResult <List <Flights> > > Get([FromQuery] string relative_to) { try { string urlRequest = Request.QueryString.Value; List <Flights> flights = new List <Flights>(); FlightsFromServers flightsFromServers = new FlightsFromServers(flights, false); if (urlRequest.Contains("sync_all")) { flightsFromServers = await manager.GetAllFlights(relative_to, true); } else { flightsFromServers = await manager.GetAllFlights(relative_to, false); } // At least one response in not valid. if (flightsFromServers.IsError) { return(BadRequest()); } return(Ok(flightsFromServers.FlightsList)); } catch (Exception e) { return(NotFound(e.Message)); } }
// Get all the flights from the data base and from external servers if needed. public async Task <FlightsFromServers> GetAllFlights(string dateTime, bool isExternal) { DateTime time = DateTime.Parse(dateTime).ToUniversalTime(); List <Flights> flights = new List <Flights>(); List <Server> servers = new List <Server>(); flights = dataAccess.GetFlights(time); FlightsFromServers flightsFromServersInternal = new FlightsFromServers(flights, false); if (isExternal) { servers.AddRange(dataAccess.GetServers()); FlightsFromServers flightsFromServersExernal = await GetFlightsFromServers(servers, time); flightsFromServersInternal.FlightsList.AddRange(flightsFromServersExernal.FlightsList); flightsFromServersInternal.IsError = flightsFromServersExernal.IsError; //return flightsFromServersInternal; } return(flightsFromServersInternal); }