/// <summary>
        /// Builds up rows for a report that wants information on flights for many aircraft simultaneously.
        /// </summary>
        /// <param name="args"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        private FlightReportJson CreateManyAircraftReport(RequestReceivedEventArgs args, Parameters parameters)
        {
            FlightReportJson json = new FlightReportJson();

            json.FromDate = FormatReportDate(parameters.FromDate);
            json.ToDate   = FormatReportDate(parameters.ToDate);

            bool hasNonDatabaseCriteria = parameters.IsMilitary || parameters.WakeTurbulenceCategory != null || parameters.Species != null;

            if (!hasNonDatabaseCriteria)
            {
                json.CountRows = BaseStationDatabase.GetCountOfFlights(parameters);
            }

            var dbFlights = BaseStationDatabase.GetFlights(
                parameters,
                hasNonDatabaseCriteria ? -1 : parameters.FromRow,
                hasNonDatabaseCriteria ? -1 : parameters.ToRow,
                parameters.SortField1, parameters.SortAscending1,
                parameters.SortField2, parameters.SortAscending2);

            if (hasNonDatabaseCriteria)
            {
                dbFlights = dbFlights.Where(f => {
                    bool matches = f.Aircraft != null;
                    if (matches)
                    {
                        if (parameters.IsMilitary)
                        {
                            var codeBlock = StandingDataManager.FindCodeBlock(f.Aircraft.ModeS);
                            matches       = matches && codeBlock != null && codeBlock.IsMilitary;
                        }
                        if (parameters.Species != null || parameters.WakeTurbulenceCategory != null)
                        {
                            var aircraftType = StandingDataManager.FindAircraftType(f.Aircraft.ICAOTypeCode);
                            if (parameters.Species != null)
                            {
                                matches = matches && aircraftType != null && aircraftType.Species == parameters.Species;
                            }
                            if (parameters.WakeTurbulenceCategory != null)
                            {
                                matches = matches && aircraftType != null && aircraftType.WakeTurbulenceCategory == parameters.WakeTurbulenceCategory;
                            }
                        }
                    }
                    return(matches);
                }).ToList();

                json.CountRows = dbFlights.Count;

                int limit  = parameters.ToRow == -1 || parameters.ToRow < parameters.FromRow ? int.MaxValue : (parameters.ToRow - Math.Max(0, parameters.FromRow)) + 1;
                int offset = parameters.FromRow < 0 ? 0 : parameters.FromRow;
                dbFlights = dbFlights.Skip(offset).Take(limit).ToList();
            }

            TranscribeDatabaseRecordsToJson(dbFlights, json.Flights, json.Aircraft, json.Airports, json.Routes, args, parameters);

            return(json);
        }
Esempio n. 2
0
        /// <summary>
        /// Updates the schema.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ButtonUpdateSchema_Click(object sender, EventArgs e)
        {
            var database = new BaseStationDatabase()
            {
                ConnectionString = Options.ConnectionString,
                CanUpdateSchema  = true,
            };
            var scriptOutput = database.UpdateSchema();

            MessageBox.Show(String.Join(Environment.NewLine, scriptOutput), SqlServerStrings.SchemaUpdatedTitle);
        }
Esempio n. 3
0
        /// <summary>
        /// Updates the schema using the connection details passed across and returns an array of output lines from the update script.
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="timeoutSeconds"></param>
        /// <returns></returns>
        public string[] UpdateSchema(string connectionString, int timeoutSeconds)
        {
            var database = new BaseStationDatabase()
            {
                ConnectionString      = connectionString,
                CommandTimeoutSeconds = timeoutSeconds,
                CanUpdateSchema       = true,
            };
            var scriptOutput = database.UpdateSchema();

            return(scriptOutput);
        }
        /// <summary>
        /// Creates the JSON for a report that describes a single aircraft and the flights it has undertaken.
        /// </summary>
        /// <param name="args"></param>
        /// <param name="parameters"></param>
        /// <param name="findByIcao"></param>
        /// <returns></returns>
        private AircraftReportJson CreateSingleAircraftReport(RequestReceivedEventArgs args, Parameters parameters, bool findByIcao)
        {
            AircraftReportJson json = new AircraftReportJson()
            {
                CountRows = 0,
                GroupBy   = "",
            };

            var aircraftIdentifier = findByIcao ? parameters.Icao : parameters.Registration;

            if (!String.IsNullOrEmpty(aircraftIdentifier))
            {
                var aircraft = findByIcao ? BaseStationDatabase.GetAircraftByCode(aircraftIdentifier)
                                          : BaseStationDatabase.GetAircraftByRegistration(aircraftIdentifier);
                if (aircraft != null)
                {
                    // Remove all criteria that is used to identify an aircraft
                    parameters.Icao         = null;
                    parameters.Registration = null;
                    parameters.Operator     = null;
                    parameters.Country      = null;

                    json.Aircraft = CreateReportAircraftJson(aircraft, args);

                    json.CountRows = BaseStationDatabase.GetCountOfFlightsForAircraft(aircraft, parameters);
                    var dbFlights = BaseStationDatabase.GetFlightsForAircraft(aircraft, parameters,
                                                                              parameters.FromRow, parameters.ToRow,
                                                                              parameters.SortField1, parameters.SortAscending1,
                                                                              parameters.SortField2, parameters.SortAscending2);

                    TranscribeDatabaseRecordsToJson(dbFlights, json.Flights, null, json.Airports, json.Routes, args, parameters);
                }
            }

            if (json.Aircraft == null)
            {
                json.Aircraft = new ReportAircraftJson()
                {
                    IsUnknown = true,
                };
            }

            return(json);
        }
Esempio n. 5
0
        /// <summary>
        /// Updates the schema using the connection details passed across and returns an array of output lines from the update script.
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="timeoutSeconds"></param>
        /// <returns></returns>
        public string[] UpdateSchema(string connectionString, int timeoutSeconds)
        {
            var database = new BaseStationDatabase()
            {
                ConnectionString      = connectionString,
                CommandTimeoutSeconds = timeoutSeconds,
                CanUpdateSchema       = true,
            };
            var scriptOutput = database.UpdateSchema();

            if (scriptOutput == null ||
                scriptOutput.Length == 0 ||
                (scriptOutput.Length == 1 && String.IsNullOrEmpty(scriptOutput[0]))
                )
            {
                scriptOutput = new string[] { SqlServerStrings.SchemaUpdateFailed };
            }

            return(scriptOutput);
        }