public StatusEndpoint(Scheduler scheduler, SchedulerDatabase db)
            : base("/status")
        {
            Get["/"] = _ =>
                new StatusModel
                {
                    State = scheduler.State
                };

            Put["/"] = _ =>
            {
                var status = this.Bind<StatusModel>();

                if (status.State == SystemState.ClearData)
                {
                    db.ClearAll();
                }
                else if (scheduler.State != status.State)
                {
                    Console.WriteLine("System status set to {0}", status.State);
                    scheduler.State = status.State;
                }

                return new StatusModel
                {
                    UserKey = Program.UserKey,
                    State = scheduler.State
                };
            };
        }
        public FlightsModule(SchedulerDatabase db, Scheduler scheduler)
            : base("/flights")
        {
            _db = db;
            _scheduler = scheduler;

            // Get all flights
            Get["/"] = _ => _db.Flights
                .Select(f => new
                {
                    f.Flight,
                    f.Arrives
                });

            // Add flights
            Post["/"] = parameters =>
            {
                throw new NotImplementedException("Delete this line to complete the first stage");

                // This API POSTs a list of flights at a time instead of individual flights.
                var flights = this.Bind<IEnumerable<FlightModel>>().ToList();
                _db.AddFlights(flights);
                // An example of a flight scheduling call. This currently does nothing.
                foreach (var flight in flights)
                {
                    _scheduler.ScheduleFlight(flight);
                }
                return null;
            };
        }
        public FlightsModule(SchedulerDatabase db, Scheduler scheduler)
            : base("/flights")
        {
            _db = db;
            _scheduler = scheduler;

            // Get all flights
            Get["/"] = _ => _db.Flights
                .Select(f => new
                {
                    f.Flight,
                    f.Arrives
                });

            // Add flights
            Post["/"] = parameters =>
            {
                // This API POSTs a list of flights at a time instead of individual flights.
                var flights = this.Bind<IEnumerable<FlightModel>>().ToList();
                _db.AddFlights(flights);

                if (_db.Gates.Any())
                {
                    foreach (var flight in flights)
                    {
                        _scheduler.ScheduleFlight(flight);
                    }
                }
                return null;
            };
        }