public void UpdateFlightBeacon(FlightBeaconBase flightBeacon) { Requires.NotNull(flightBeacon); Requires.NotNull(flightBeacon.FlightId); using (var context = DataContext.Instance()) { var rep = context.GetRepository <FlightBeaconBase>(); rep.Update("SET PassOrder=@0, PassedDistance=@1 WHERE FlightId=@2 AND BeaconId=@3", flightBeacon.PassOrder, flightBeacon.PassedDistance, flightBeacon.FlightId, flightBeacon.BeaconId); } }
public void AddFlightBeacon(FlightBeaconBase flightBeacon) { Requires.NotNull(flightBeacon); Requires.NotNull(flightBeacon.FlightId); using (var context = DataContext.Instance()) { context.Execute(System.Data.CommandType.Text, "IF NOT EXISTS (SELECT * FROM {databaseOwner}{objectQualifier}Albatros_Balises_FlightBeacons " + "WHERE FlightId=@0 AND BeaconId=@1) " + "INSERT INTO {databaseOwner}{objectQualifier}Albatros_Balises_FlightBeacons (FlightId, BeaconId, PassOrder, PassedDistance) " + "SELECT @0, @1, @2, @3", flightBeacon.FlightId, flightBeacon.BeaconId, flightBeacon.PassOrder, flightBeacon.PassedDistance); } }
public void ProcessFlightBeacons(int flightId, DateTime flightStart, IEnumerable <PathBeacon> path) { DeleteFlightBeaconsByFlight(flightId); var passOrder = 1; foreach (var b in path) { var newBeacon = new FlightBeaconBase() { FlightId = flightId, BeaconId = b.BeaconId, PassedDistance = 0, PassOrder = b.PassOrder }; AddFlightBeacon(newBeacon); passOrder += 1; } }
public void DeleteFlightBeacon(FlightBeaconBase flightBeacon) { DeleteFlightBeacon(flightBeacon.FlightId, flightBeacon.BeaconId); }
public static Flight AddFlightToUser(int portalId, int userId, string igcText, int beaconPassDistanceMeters) { var path = new BalisesPath(portalId, userId, new IgcFile(igcText), beaconPassDistanceMeters); var flight = FlightRepository.Instance.FindFlight(portalId, userId, path.Igc.DetectedStart); if (flight == null) { var f = new FlightBase() { EntryMethod = 1, TakeoffTime = path.Igc.DetectedStart, DurationMins = (int)path.Igc.FlightTime.TotalMinutes, Distance = path.OfficialDistance, MaxHeight = path.Igc.MaxAltitude, MaxVario = path.Igc.MaxVario, MaxSpeed = path.Igc.MaxSpeed, AverageSpeed = path.Igc.AverageSpeed, LandingCoords = path.Igc.Landing.ToSwissCoordinates(), LandingDescription = path.Landing.Description, LandingLatitude = path.Igc.Landing.Latitude, LandingLongitude = path.Igc.Landing.Longitude, LandingAltitude = path.Igc.Landing.Altitude, LandingTime = path.Igc.DetectedLandingTime, LandingBeaconId = (path.Landing.Code.Contains("ATT") ? path.Landing.BeaconId : -1), PortalId = portalId, UserId = userId, TakeoffCoords = path.Igc.Takeoff.ToSwissCoordinates(), TakeoffDescription = path.TakeOff.Description, TakeoffLatitude = path.Igc.Takeoff.Latitude, TakeoffLongitude = path.Igc.Takeoff.Longitude, TakeoffAltitude = path.Igc.Takeoff.Altitude, Summary = path.Igc.Report(), Status = (path.PassedBeacons.Count == 0 ? 3 : 0), ValidatedOnDate = new System.DateTime(1900, 1, 1), Category = (path.Igc.GliderType.ToUpper() == "PARA" ? 0 : 1), TotalPoints = 0 }; f.RecalculateTotals(path.PassedBeacons); FlightRepository.Instance.AddFlight(ref f, userId); foreach (var pt in path.PassedBeacons) { var fb = new FlightBeaconBase() { FlightId = f.FlightId, BeaconId = pt.BeaconId, PassedDistance = pt.PassedDistance, PassOrder = pt.PassOrder }; FlightBeaconRepository.Instance.AddFlightBeacon(fb); } var fullPath = string.Format("{0}\\Albatros\\Balises\\{1}", PortalSettings.Current.HomeDirectoryMapPath, userId); if (!System.IO.Directory.Exists(fullPath)) { System.IO.Directory.CreateDirectory(fullPath); } fullPath += "\\" + string.Format("path-{0}.igc", f.FlightId); using (var s = new System.IO.StreamWriter(fullPath)) { s.Write(igcText); } flight = FlightRepository.Instance.GetFlight(portalId, f.FlightId); } return(flight); }