コード例 #1
0
        public async Task <ActionResult <IEnumerable <Flight> > > GetFlights([FromQuery(Name = "relative_to")] string relativeTime)
        {
            DateTime relativeTo;

            if (!DateTime.TryParse(relativeTime, out relativeTo))
            {
                return(null);
            }
            //set the utc time zone
            relativeTo = relativeTo.ToUniversalTime();

            List <Flight> flightsList = new List <Flight>();

            if (Request != null && Request.Query.ContainsKey("sync_all"))
            {
                List <string> serverIdKeysList = memoryCache.Get("serverListKeys") as List <string>;
                if (serverIdKeysList != null)
                {
                    IEnumerable <Flight> remoteflights;
                    remoteflights = await GetFlightsRemoteServers(serverIdKeysList, relativeTime);

                    flightsList.AddRange(remoteflights);
                }
            }
            //list of keys of flight plans in our server
            List <string> fpListOfKeys = memoryCache.Get("flightListKeys") as List <string>;

            if (fpListOfKeys != null)
            {
                foreach (var id in fpListOfKeys)
                {
                    FlightPlan fp;

                    fp = memoryCache.Get <FlightPlan>(id);
                    Flight flight = flightManager.CreateUpdatedFlight(fp, relativeTo);

                    if (flight != null)
                    {
                        flightsList.Add(flight);
                    }
                }
            }
            return(flightsList);
        }