Ejemplo n.º 1
0
        public JsonResult Distance(Exponent.ADSB.ADSBQuery QueryData)
        {
            var ADSB = new Exponent.ADSB.Live();
            var Data = ADSB.GetFlightStatus(DSN, QueryData);

            return(Json(Data, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 2
0
        public JsonResult Index(Exponent.ADSB.ADSBQuery QueryData)
        {
            var ADSB = new Exponent.ADSB.Live();
            var Data = ADSB.FlightStat(DSN, false, QueryData);

            return(Json(Data, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 3
0
        public ActionResult Dashboard()
        {
            Exponent.ADSB.ADSBQuery Params = new Exponent.ADSB.ADSBQuery();
            using (SqlConnection CN = new SqlConnection(DSN)) {
                CN.Open();
                Params.GetDefaults(CN);
                CN.Close();
            }

            return(View(Params));
        }
Ejemplo n.º 4
0
        public ActionResult FullScreen(Exponent.ADSB.ADSBQuery Params)
        {
            using (SqlConnection CN = new SqlConnection(DSN)) {
                CN.Open();
                Params.GetDefaults(CN);
                CN.Close();
            }

            ViewBag.Organisations = GetOrganisations();
            ViewBag.Pilots        = GetPilot(0);
            return(View(Params));
        }
Ejemplo n.º 5
0
        public JsonResult ADSBData()
        {
            if (!exLogic.User.hasAccess("FLIGHT.MAP"))
            {
                var oResult = new {
                    Status  = "Error",
                    Message = "Do not have access"
                };
                return(Json(oResult, JsonRequestBehavior.AllowGet));
            }

            Exponent.ADSB.ADSBQuery QueryData = new Exponent.ADSB.ADSBQuery();
            using (SqlConnection CN = new SqlConnection(DSN)) {
                CN.Open();
                QueryData.GetDefaults(CN);
                CN.Close();
            }
            var ADSB = new Exponent.ADSB.Live();
            var Data = ADSB.FlightStat(DSN, false, QueryData);

            //  var Data = "";
            return(Json(Data, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 6
0
        private List <FlightPosition> getLivePositions(Exponent.ADSB.ADSBQuery QueryData = null)
        {
            if (QueryData == null)
            {
                QueryData = new ADSBQuery();
            }
            if (QueryData.tracking_adsb_commercial == 0 &
                QueryData.tracking_adsb_rpas == 0 &&
                QueryData.tracking_adsb_skycommander == 0)
            {
                QueryData.tracking_adsb_commercial = 1;
            }
            var           PositionDatas = new List <FlightPosition>();
            StringBuilder Filter        = new StringBuilder();
            StringBuilder WHERE         = new StringBuilder();
            StringBuilder SQL           = new StringBuilder(@"
      select
        [FlightId],
        [Heading],
        [TailNumber],
        [CallSign],
        [Lon],
        [Lat],
        [Speed],
        HeadingHistory,
        [Altitude],
        [AdsbDate],
        FlightSource,
        HexCode
      from
        AdsbLive
      ");

            if (QueryData.adsb_omdb == 1 || QueryData.adsb_omdw == 1 || QueryData.adsb_omsj == 1)
            {
                if (QueryData.adsb_omdb == 1)
                {
                    if (Filter.Length > 0)
                    {
                        Filter.AppendLine(" OR");
                    }
                    Filter.Append("[OMDB] <= " + QueryData.ATCRadious);
                }

                if (QueryData.adsb_omdw == 1)
                {
                    if (Filter.Length > 0)
                    {
                        Filter.AppendLine(" OR");
                    }
                    Filter.Append("[OMDW] <= " + QueryData.ATCRadious);
                }

                if (QueryData.adsb_omsj == 1)
                {
                    if (Filter.Length > 0)
                    {
                        Filter.AppendLine(" OR");
                    }
                    Filter.Append("[OMSJ] <= " + QueryData.ATCRadious);
                }

                WHERE.Append("(");
                WHERE.Append(Filter);
                WHERE.Append(")");
                Filter.Clear();
            }

            Filter.Append(QueryData.getTrackingFilter());
            if (Filter.Length > 0)
            {
                if (WHERE.Length > 0)
                {
                    WHERE.AppendLine(" AND");
                }
                WHERE.Append(Filter);
                Filter.Clear();
            }

            if (WHERE.Length > 0)
            {
                SQL.AppendLine(" WHERE");
                SQL.Append(WHERE);
            }


            using (var Cmd = new SqlCommand(SQL.ToString(), CN)) {
                var RS = Cmd.ExecuteReader();
                while (RS.Read())
                {
                    int    fSpeed       = RS.GetOrdinal("Speed");
                    int    fHeading     = RS.GetOrdinal("Heading");
                    string FlightSource = RS["FlightSource"].ToString();
                    var    Position     = new FlightPosition {
                        FlightID     = RS["FlightId"].ToString(),
                        Heading      = RS.IsDBNull(fHeading) ? 0 : (Double)RS.GetDecimal(fHeading),
                        TailNumber   = RS["TailNumber"].ToString(),
                        CallSign     = RS["CallSign"].ToString(),
                        Lon          = (Double)RS.GetDecimal(RS.GetOrdinal("Lon")),
                        Lat          = (Double)RS.GetDecimal(RS.GetOrdinal("Lat")),
                        Speed        = RS.IsDBNull(fSpeed) ? 0 : (Double)RS.GetDecimal(fSpeed),
                        Altitude     = (Double)RS.GetDecimal(RS.GetOrdinal("Altitude")),
                        ADSBDate     = RS.GetDateTime(RS.GetOrdinal("AdsbDate")),
                        History      = getHistory(RS["HeadingHistory"].ToString()),
                        FlightSource = FlightSource,
                        HexCode      = RS["HexCode"].ToString().ToUpper()
                    };
                    if (FlightSource == "SkyCommander")
                    {
                        if (Position.Altitude < 0)
                        {
                            Position.Altitude = 0;
                        }
                        if ((Position.Altitude >= QueryData.minAltitude && Position.Altitude <= QueryData.maxAltitude) &&
                            (Position.Speed >= QueryData.minSpeed && Position.Speed <= QueryData.maxSpeed))
                        {
                            PositionDatas.Add(Position);
                        }
                    }
                    else
                    {
                        PositionDatas.Add(Position);
                    }
                } //while
                RS.Close();
            }     //using

            //Find the breaches and alerts for SkyCommander
            foreach (var Position in PositionDatas.Where(e => e.FlightSource == "SkyCommander").ToList())
            {
                Position.SetBreachFlights(CN, QueryData);
                Position.SetAlertFlights(CN, QueryData);
            }

            return(PositionDatas);
        }
Ejemplo n.º 7
0
        public List <FlightStatus> GetFlightStatus(String DSN, Exponent.ADSB.ADSBQuery QueryData)
        {
            var    Dist = new List <FlightStatus>();
            String SQL  = $@"Select 
        ADSBDetail.FromHexCode,
        ADSBDetail.ToHexCode,
        ADSBDetail.VerticalDistance,
        ADSBDetail.HorizontalDistance,
        CASE
          WHEN HorizontalDistance <= {QueryData.hBreach} AND VerticalDistance <= {QueryData.vBreach * FeetToKiloMeter} Then 'Breach'
          WHEN HorizontalDistance <= {QueryData.hAlert} AND VerticalDistance <= {QueryData.vAlert * FeetToKiloMeter} Then 'Alert'
          Else 'Safe'
        END as StatusModel
      FROM
        ADSBDetail
      WHERE
        HorizontalDistance <= {QueryData.hAlert} AND VerticalDistance <= {QueryData.vAlert * FeetToKiloMeter}";

            using (CN = new SqlConnection(DSN)) {
                CN.Open();
                using (var Cmd = new SqlCommand(SQL, CN)) {
                    var RS = Cmd.ExecuteReader();
                    while (RS.Read())
                    {
                        Dist.Add(new FlightStatus {
                            FromHexCode = RS["FromHexCode"].ToString(),
                            ToHexCode   = RS["ToHexCode"].ToString(),
                            vDistance   = toDouble(RS["VerticalDistance"].ToString()),
                            hDistance   = toDouble(RS["HorizontalDistance"].ToString()),
                            Status      = RS["StatusModel"].ToString()
                        });
                    } //while
                    RS.Close();
                }     //using (var Cmd)

                //Find the safe operating RPS - not in above condition
                var FromFlightIDs = Dist.Select(e => $"'{e.FromHexCode}'").ToArray();
                var AllIDs        = String.Join(",", FromFlightIDs);

                SQL = $@"Select DISTINCT ADSBDetail.FromFlightID
          FROM
            ADSBDetail
          WHERE
            HorizontalDistance > {QueryData.hAlert} AND VerticalDistance > {QueryData.vAlert * FeetToKiloMeter}";
                if (!String.IsNullOrWhiteSpace(AllIDs))
                {
                    SQL = SQL + $"AND ADSBDetail.FromFlightID NOT IN ({AllIDs})";
                }

                using (var Cmd = new SqlCommand(SQL, CN)) {
                    var RS = Cmd.ExecuteReader();
                    while (RS.Read())
                    {
                        Dist.Add(new FlightStatus {
                            FromHexCode = RS["HexCode"].ToString(),
                            ToHexCode   = "",
                            vDistance   = 0,
                            hDistance   = 0,
                            Status      = "Safe"
                        });
                    } //while
                    RS.Close();
                }     //using (var Cmd)

                //Save changes to query data if updated.
                if (QueryData.IsQueryChanged == 1)
                {
                    QueryData.SetDefaults(CN);
                }

                CN.Close();
            }//using (CN)
            return(Dist);
        }