public ActionResult Get(DateTime relative_to, bool?sync_all)
        {
            var flights = DataBaseCalls.GetFlights(_context, relative_to);
            var output  = from flight in flights select FactoryFlightDTO(relative_to, flight);

            var addedOutput = output.ToList();
            var flightsData = new List <FlightDTO>();

            if (this.Request.QueryString.ToString().Contains("sync_all"))
            {
                var servers = DataBaseCalls.GetServers(_context);
                foreach (var server in servers)
                {
                    using (var client = new HttpClient())
                    {
                        var response = client.GetAsync(server.ServerURL + "api/Flights?relative_to="
                                                       + DateTime.Now.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'")).Result;
                        if (response.IsSuccessStatusCode)
                        {
                            var    responseContent = response.Content;
                            string responseString  = responseContent.ReadAsStringAsync().Result;
                            var    array           = JsonConvert.DeserializeObject(responseString);
                            flightsData.AddRange(((JArray)array).Select(x => FactoryJSONFlightDTO(x)).ToList());
                        }
                    }
                }
            }
            addedOutput.AddRange(flightsData);
            return(Ok(addedOutput));
        }
        public async Task <IActionResult> Post(ServerDTO serverDTO)
        {
            Server server = new Server
            {
                ServerId  = serverDTO.ServerId,
                ServerURL = serverDTO.ServerURL
            };
            await DataBaseCalls.AddServer(_context, server);

            return(Created("", null));
        }
        public async Task <ActionResult <ServerDTO> > Get()
        {
            var servers = await DataBaseCalls.GetListOfServers(_context);

            return(Ok(from server in servers
                      select new ServerDTO
            {
                ServerId = server.ServerId,
                ServerURL = server.ServerURL
            }));
        }
        public async Task <ActionResult <FlightPlanDTO> > Get(string id)
        {
            var flightPlans = DataBaseCalls.FindFlightPlanId(_context, id);
            var output      = from flightPlan in flightPlans
                              select new FlightPlanDTO
            {
                Passengers      = flightPlan.Passengers,
                CompanyName     = flightPlan.CompanyName,
                InitialLocation = FactoryInitialLocationDTO(flightPlan),
                Segments        = (from location in flightPlan.Segments
                                   select FactoryLocationDTO(location)).ToArray()
            };
            var outputAsync = await output.FirstAsync <FlightPlanDTO>();

            return(outputAsync);
        }
        public async Task <ActionResult> Post(FlightPlanDTO flightPlanDTO)
        {
            FlightPlan flightPlan = new FlightPlan
            {
                Passengers      = flightPlanDTO.Passengers,
                CompanyName     = flightPlanDTO.CompanyName,
                InitialLocation = FactoryInitialLocation(flightPlanDTO),
                Segments        = (FactoryLocation(flightPlanDTO)).ToList()
            };
            string lastId = !_context.FlightPlans.Include(item => item.Flight)
                            .OrderByDescending(
                item => item.Flight.FlightIdentifier).Any() ? "AAAA-0000"
                                                    : _context.FlightPlans.Include(item => item.Flight)
                            .OrderByDescending(item => item.Flight.FlightIdentifier)
                            .First().Flight.FlightIdentifier;
            Flight flight = FactoryFlight(flightPlan, lastId);
            await DataBaseCalls.AddAFlightPlanAndAFlight(_context, flightPlan, flight);

            return(Created("", null));
        }
        public async Task <IActionResult> Delete(string id)
        {
            await DataBaseCalls.DeleteServer(_context, id);

            return(NoContent());
        }
        public async Task <IActionResult> Delete(string id)
        {
            await DataBaseCalls.RemoveFlight(_context, id);

            return(NoContent());
        }