public void DataReceived(object o, RawTransponderDataEventArgs args) { //Add or update tracks foreach (var track in args.TransponderData) { TrackOperations.AddOrUpdate(track); } //Check if tracks are in airspace foreach (var track in TrackOperations.GetAll()) { track.WithinAirspace = Airspace.CalculateWithinAirspace(track.Position); } //Check for Separations if (TrackOperations.GetAll().Count > 1) { SeparationOperations.CheckForSeparations(TrackOperations.GetAll().ToList()); } //Check for outdated separations UpdateOldSeparations(); //Display everything OutputTerminal(); }
public void UpdateOldSeparations() { // Find all separations var separationEvents = SeparationRepository.GetAll(); // Find all tracks var tracks = TrackOperations.GetAll().ToList(); // Find all tracks still on separationlist var possiblyOutdatedSeparations = separationEvents .Select(separations => tracks.FirstOrDefault(t => t.Tag == separations.Tag1)).ToList(); // Find all tracks that shouldnt be on separationlist var outdatedSeparations = SeparationOperations.CheckForOutdatedSeparationEvents(possiblyOutdatedSeparations); // Now delete all of these foreach (string sep in outdatedSeparations) { var split = sep.Split(';'); var separationToRemove = SeparationRepository.Get(split[0], split[1]); if (separationToRemove != null) { SeparationRepository.DeleteSeperationEvent(separationToRemove); } } }