private static Tuple <AlarmSampleId[], Identity>[] GetAcknowledgeParameters( AlarmCategoryAbstract category, IEnumerable <Tuple <AlarmSampleId[], Identity> > commonAcknowledgeParameters) { var alarmsToAcknowledge = new List <Tuple <AlarmSampleId, Identity> >(); foreach (var tuple in commonAcknowledgeParameters) { alarmsToAcknowledge.AddRange(from alarmSampleId in tuple.Item1 where category.HasAlarm(alarmSampleId.AlarmId) select new Tuple <AlarmSampleId, Identity>(alarmSampleId, tuple.Item2)); } var acknowledgeParameters = category.AlarmsToAcknowledge(); foreach (var tuple in acknowledgeParameters) { alarmsToAcknowledge.AddRange(from alarmSampleId in tuple.Item1 where category.HasAlarm(alarmSampleId.AlarmId) select new Tuple <AlarmSampleId, Identity>(alarmSampleId, tuple.Item2)); } return(alarmsToAcknowledge .GroupBy(t => t.Item2) .Select(g => new Tuple <AlarmSampleId[], Identity>(g.Select(i => i.Item1).ToArray(), g.Key)) .ToArray()); }
private static Tuple<AlarmSampleId[], Identity>[] GetAcknowledgeParameters( AlarmCategoryAbstract category, IEnumerable<Tuple<AlarmSampleId[], Identity>> commonAcknowledgeParameters) { var alarmsToAcknowledge = new List<Tuple<AlarmSampleId, Identity>>(); foreach (var tuple in commonAcknowledgeParameters) { alarmsToAcknowledge.AddRange(from alarmSampleId in tuple.Item1 where category.HasAlarm(alarmSampleId.AlarmId) select new Tuple<AlarmSampleId, Identity>(alarmSampleId, tuple.Item2)); } var acknowledgeParameters = category.AlarmsToAcknowledge(); foreach (var tuple in acknowledgeParameters) { alarmsToAcknowledge.AddRange(from alarmSampleId in tuple.Item1 where category.HasAlarm(alarmSampleId.AlarmId) select new Tuple<AlarmSampleId, Identity>(alarmSampleId, tuple.Item2)); } return alarmsToAcknowledge .GroupBy(t => t.Item2) .Select(g => new Tuple<AlarmSampleId[], Identity>(g.Select(i => i.Item1).ToArray(), g.Key)) .ToArray(); }
private ParametersInfo GetParameters() { var r = new ParametersInfo(); var commonAcknowledgeParameters = _commonCategory.AlarmsToAcknowledge(); var commonCurrentQueries = _commonCategory.QueriesForCurrent(); r.CommonCurrentInfo.AddRange(commonCurrentQueries.Select(q => new Tuple <Action <Alarm[]>, CriteriaType, int>(q.Item4, q.Item1, q.Item3))); var commonHistoryQueries = _commonCategory.QueriesForHistory(); r.CommonHistoryInfo.AddRange(commonHistoryQueries.Select(q => new Tuple <Action <Alarm[]>, CriteriaType, int>(q.Item4, q.Item1, q.Item3))); var commonStatusIsRead = _commonCategory.IsRead(); foreach (var c in _categories.Values) { var parameter = new RemapAlarmsParameter { CategoryId = c.Id }; var addToParameters = false; parameter.AcknowledgeParameters = GetAcknowledgeParameters(c, commonAcknowledgeParameters); if (parameter.AcknowledgeParameters.Any()) { addToParameters = true; } if (c.IsRead() || commonStatusIsRead) { parameter.GetStatus = true; addToParameters = true; } var currentQueries = c.QueriesForCurrent(); var currentCallbacks = currentQueries.Select(q => q.Item4).ToArray(); parameter.CurrentParameters = commonCurrentQueries.Concat(currentQueries) .Select(q => new Tuple <CriteriaType, AlarmSampleId, int>(q.Item1, q.Item2, q.Item3)) .ToArray(); if (parameter.CurrentParameters.Any()) { addToParameters = true; } var historyQueries = c.QueriesForHistory(); var historyCallbacks = historyQueries.Select(q => q.Item4).ToArray(); parameter.HistoryParameters = commonHistoryQueries.Concat(historyQueries) .Select(q => new Tuple <CriteriaType, AlarmSampleId, int>(q.Item1, q.Item2, q.Item3)) .ToArray(); if (parameter.HistoryParameters.Any()) { addToParameters = true; } if (addToParameters) { r.Parameters.Add(new Tuple <RemapAlarmsParameter, Action <Alarm[]>[], Action <Alarm[]>[]>( parameter, currentCallbacks, historyCallbacks)); } } return(r); }