private bool TrySaveLap(ILapInfo lapInfo) { try { LapSummaryDto lapSummaryDto = CreateLapSummary(lapInfo); TimedTelemetrySnapshot fistSnapshotsByDistance = lapInfo.LapTelemetryInfo.TimedTelemetrySnapshots.Snapshots.First(x => x.PlayerData.LapDistance < _sessionInfoDto.LayoutLength * 0.5); LapTelemetryDto lapTelemetryDto = new LapTelemetryDto() { LapSummary = lapSummaryDto, DataPoints = lapInfo.LapTelemetryInfo.TimedTelemetrySnapshots.Snapshots.Skip(lapInfo.LapTelemetryInfo.TimedTelemetrySnapshots.Snapshots.ToList().IndexOf(fistSnapshotsByDistance)).ToList() }; Interpolate(lapTelemetryDto, lapTelemetryDto.DataPoints.First().SimulatorSourceInfo.TelemetryInfo.RequiresDistanceInterpolation, lapTelemetryDto.DataPoints.First().SimulatorSourceInfo.TelemetryInfo.RequiresPositionInterpolation); LapSummaryDto previousLapInfo = _sessionInfoDto.LapsSummary.FirstOrDefault(x => x.LapNumber == lapSummaryDto.LapNumber); if (previousLapInfo != null) { _sessionInfoDto.LapsSummary.Remove(previousLapInfo); } _sessionInfoDto.LapsSummary.Add(lapSummaryDto); _telemetryRepository.SaveRecentSessionInformation(_sessionInfoDto, SessionIdentifier); _telemetryRepository.SaveRecentSessionLap(lapTelemetryDto, SessionIdentifier); return(true); } catch (Exception ex) { Logger.Error(ex, "Uanble to Save Telemetry"); return(false); } }