private void RemoveApproachesByFilter(FilterSignal filterSignal, Models.Signal signal) { RemoveApproachesFromSignalByDirection(signal); RemoveDetectorsFromSignalByMovement(signal); var approachRepository = ApproachRepositoryFactory.Create(); var excludedApproachIds = filterSignal.FilterApproaches.Where(f => f.Exclude).Select(f => f.ApproachId).ToList(); var excludedApproaches = approachRepository.GetApproachesByIds(excludedApproachIds); foreach (var excludedApproach in excludedApproaches) { var approachesToExclude = signal.Approaches.Where(a => a.DirectionTypeID == excludedApproach.DirectionTypeID && a.ProtectedPhaseNumber == excludedApproach.ProtectedPhaseNumber && a.PermissivePhaseNumber == excludedApproach.PermissivePhaseNumber && a.IsPermissivePhaseOverlap == excludedApproach.IsPermissivePhaseOverlap && a.IsProtectedPhaseOverlap == excludedApproach.IsProtectedPhaseOverlap) .ToList(); foreach (var approachToExclude in approachesToExclude) { signal.Approaches.Remove(approachToExclude); } foreach (var approach in signal.Approaches) { foreach (var filterApproach in filterSignal.FilterApproaches.Where(f => !f.Exclude)) { RemoveDetectorsFromApproachByFilter(filterApproach, approach); } } } }
private static FilterSignal GetFilterSignal(MOE.Common.Models.Signal signal) { var filterSignal = new FilterSignal { Exclude = false, SignalId = signal.SignalID, VersionId = signal.VersionID, Description = signal.SignalDescription }; foreach (var approach in signal.Approaches) { var filterApproach = new FilterApproach { ApproachId = approach.ApproachID, Exclude = false, Description = approach.Description }; foreach (var detector in approach.Detectors) { var filterDetector = new FilterDetector { Id = detector.ID, Exclude = false, Description = detector.Description }; filterApproach.FilterDetectors.Add(filterDetector); } filterSignal.FilterApproaches.Add(filterApproach); } return(filterSignal); }
protected void SetFilterSignal(SignalAggregationMetricOptions options) { List <FilterSignal> filterSignals = new List <FilterSignal>(); var signals = Db.Signals.Take(2); foreach (var signal in signals) { var filterSignal = new FilterSignal { SignalId = signal.SignalID, Exclude = false }; foreach (var approach in signal.Approaches) { var filterApproach = new FilterApproach { ApproachId = approach.ApproachID, Description = String.Empty, Exclude = false }; filterSignal.FilterApproaches.Add(filterApproach); foreach (var detector in approach.Detectors) { filterApproach.FilterDetectors.Add(new FilterDetector { Id = detector.ID, Description = String.Empty, Exclude = false }); } } filterSignals.Add(filterSignal); } options.FilterSignals = filterSignals; options.FilterDirections = new List <FilterDirection>(); options.FilterDirections.Add(new FilterDirection { Description = "", DirectionTypeId = 0, Include = true }); options.FilterDirections.Add(new FilterDirection { Description = "", DirectionTypeId = 1, Include = true }); options.FilterDirections.Add(new FilterDirection { Description = "", DirectionTypeId = 2, Include = true }); options.FilterDirections.Add(new FilterDirection { Description = "", DirectionTypeId = 3, Include = true }); options.FilterMovements = new List <FilterMovement>(); options.FilterMovements.Add(new FilterMovement { Description = "", MovementTypeId = 0, Include = true }); options.FilterMovements.Add(new FilterMovement { Description = "", MovementTypeId = 1, Include = true }); options.FilterMovements.Add(new FilterMovement { Description = "", MovementTypeId = 2, Include = true }); options.FilterMovements.Add(new FilterMovement { Description = "", MovementTypeId = 3, Include = true }); }