public JsonResult Distance(Exponent.ADSB.ADSBQuery QueryData) { var ADSB = new Exponent.ADSB.Live(); var Data = ADSB.GetFlightStatus(DSN, QueryData); return(Json(Data, JsonRequestBehavior.AllowGet)); }
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)); }
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)); }
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)); }
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)); }
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); }
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); }