/// <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); }
/// <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); }
/// <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); }
/// <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); }