Beispiel #1
0
        /// <summary>
        /// Handles requests to save a single aircraft's data.
        /// </summary>
        /// <param name="args"></param>
        private void SingleAircraftSave(RequestReceivedEventArgs args)
        {
            if (args.Request.HttpMethod == "POST")
            {
                var json = new SingleAircraftSaveResultsJson();

                try {
                    var aircraftJson = args.Request.ReadBodyAsString(Encoding.UTF8);
                    json.Aircraft = JsonConvert.DeserializeObject <BaseStationAircraft>(aircraftJson);

                    if (json.Aircraft.ModeS != null && json.Aircraft.ModeS.Length == 6)
                    {
                        if (json.Aircraft.Registration != null)
                        {
                            json.Aircraft.Registration = json.Aircraft.Registration.ToUpper();
                        }
                        if (json.Aircraft.ICAOTypeCode != null)
                        {
                            json.Aircraft.ICAOTypeCode = json.Aircraft.ICAOTypeCode.ToUpper();
                        }
                        if (json.Aircraft.OperatorFlagCode != null)
                        {
                            json.Aircraft.OperatorFlagCode = json.Aircraft.OperatorFlagCode.ToUpper();
                        }
                        json.Aircraft.LastModified = DateTime.Now;

                        if (json.Aircraft.AircraftID == 0)
                        {
                            _BaseStationDatabase.InsertAircraft(json.Aircraft);
                        }
                        else
                        {
                            _BaseStationDatabase.UpdateAircraft(json.Aircraft);
                        }

                        ++_UpdateCount;
                        UpdateStatusTotals();
                    }
                } catch (Exception ex) {
                    var aircraftID = json.Aircraft == null ? "<no aircraft>" : json.Aircraft.AircraftID.ToString();
                    var icao       = json.Aircraft == null ? "<no aircraft>" : json.Aircraft.ModeS;
                    json.Exception = LogException(ex, "Exception caught during DatabaseEditor SingleAircraftSave ({0}/{1}): {2}", aircraftID, icao, ex.ToString());
                }

                SendJsonResponse(args, json);
            }
        }
        public SingleAircraftSaveResultsJson Save([FromBody] BaseStationAircraft aircraft)
        {
            var result = new SingleAircraftSaveResultsJson();
            var plugin = Plugin.Singleton;

            try {
                result.Aircraft = aircraft;

                if (CustomConvert.Icao24(aircraft?.ModeS) > 0)
                {
                    aircraft.Registration     = aircraft?.Registration?.ToUpper().Trim();
                    aircraft.ICAOTypeCode     = aircraft?.ICAOTypeCode?.ToUpper().Trim();
                    aircraft.OperatorFlagCode = aircraft?.OperatorFlagCode?.ToUpper().Trim();
                    aircraft.LastModified     = DateTime.Now;

                    if (aircraft.UserString1 == "Missing")
                    {
                        aircraft.UserString1 = null;
                    }

                    if (aircraft.AircraftID == 0)
                    {
                        aircraft.FirstCreated = aircraft.LastModified;
                        plugin.BaseStationDatabase.InsertAircraft(aircraft);
                    }
                    else
                    {
                        plugin.BaseStationDatabase.UpdateAircraft(aircraft);
                    }

                    plugin.IncrementUpdateCount();
                    plugin.UpdateStatusTotals();
                }
            } catch (Exception ex) {
                var aircraftID = aircraft == null ? "<no aircraft>" : aircraft.AircraftID.ToString();
                var icao       = aircraft == null ? "<no aircraft>" : aircraft.ModeS;
                result.Exception = plugin.LogException(ex, "Exception caught during DatabaseEditor SingleAircraftSave ({0}/{1}): {2}", aircraftID, icao, ex.ToString());
            }

            return(result);
        }