protected ObjectColor GetColor(IMetricTypeCacheReadObject metricType, IMetricCacheReadObject metric, double?value) { var conditionRed = metric.ConditionRed ?? metricType.ConditionRed; var conditionYellow = metric.ConditionYellow ?? metricType.ConditionYellow; var conditionGreen = metric.ConditionGreen ?? metricType.ConditionGreen; var color = metric.ElseColor ?? metricType.ElseColor ?? ObjectColor.Gray; var parameters = new[] { new KeyValuePair <string, double?>("value", value) }; if (ConditionChecker.Check(parameters, conditionRed)) { color = ObjectColor.Red; } else if (ConditionChecker.Check(parameters, conditionYellow)) { color = ObjectColor.Yellow; } else if (ConditionChecker.Check(parameters, conditionGreen)) { color = ObjectColor.Green; } return(color); }
public static MetricInfo GetMetricInfo( IMetricCacheReadObject metric, IMetricTypeCacheReadObject metricType, IBulbCacheReadObject bulb) { if (metric == null) { return(null); } if (metricType == null) { throw new ArgumentNullException("metricType"); } if (bulb == null) { throw new ArgumentNullException("bulb"); } return(new MetricInfo() { ComponentId = metric.ComponentId, SystemName = metricType.SystemName, Value = metric.Value, BeginDate = metric.BeginDate, ActualDate = metric.ActualDate, Status = bulb.Status }); }
protected IBulbCacheReadObject SetMetricValue( IMetricTypeCacheReadObject metricType, MetricCacheWriteObject metric, double?value, DateTime processDate, DateTime actualDate, MonitoringStatus status, string message, bool hasSignal) { // Обновим текущие значения var equal = (value == null && metric.Value == null) || (value == metric.Value); if (!equal) { metric.BeginDate = processDate; } metric.ActualDate = actualDate; metric.Value = value; // Обновим статус метрики var statusService = Context.BulbService; var noSignalColor = metric.NoSignalColor ?? metricType.NoSignalColor ?? ObjectColor.Red; var noSignalImportance = EventImportanceHelper.Get(noSignalColor); var signal = new BulbSignal() { AccountId = metric.AccountId, ActualDate = metric.ActualDate, StartDate = metric.BeginDate, IsSpace = !hasSignal, EventId = Guid.Empty, Message = message, NoSignalImportance = noSignalImportance, ProcessDate = processDate, Status = status }; var statusData = statusService.SetSignal(metric.StatusDataId, signal); // сохраним историю var color = ObjectColorHelper.Get(status); var history = new MetricHistory() { ComponentId = metric.ComponentId, MetricTypeId = metric.MetricTypeId, Value = value, BeginDate = processDate, ActualDate = actualDate, Color = color, StatusEventId = statusData.StatusEventId, HasSignal = hasSignal }; var accountDbContext = Context.GetAccountDbContext(metric.AccountId); var historyRepository = accountDbContext.GetMetricHistoryRepository(); historyRepository.Add(history); Context.SaveChanges(); return(statusData); }