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 UpdateEnableOrDisableStatusData(IMetricCacheReadObject metric) { var statusService = Context.BulbService; IBulbCacheReadObject data = null; var processDate = DateTime.Now; if (metric.CanProcess) { var unknownSignal = BulbSignal.CreateUnknown(metric.AccountId, processDate); data = statusService.SetSignal(metric.StatusDataId, unknownSignal); } else { var disableSignal = BulbSignal.CreateDisable(metric.AccountId, processDate); data = statusService.SetSignal(metric.StatusDataId, disableSignal); } //Context.ComponentService.CalculateAllStatuses(metric.AccountId, metric.ComponentId); return(data); }
public void EnableMetric(Guid accountId, Guid metricId) { var cache = new AccountCache(accountId); IMetricCacheReadObject metricRead = null; // изменим метрику using (var metric = cache.Metrics.Write(metricId)) { metricRead = metric; metric.Enable = true; metric.BeginSave(); } // обновим колбаски var statusService = Context.BulbService; var processDate = DateTime.Now; var unknownSignal = BulbSignal.CreateUnknown(accountId, processDate); var data = statusService.SetSignal(metricRead.StatusDataId, unknownSignal); Context.ComponentService.CalculateAllStatuses(accountId, metricRead.ComponentId); // return data; }
public void DisableMetric(Guid accountId, SetMetricDisableRequestData requestData) { if (requestData == null) { throw new ArgumentNullException("requestData"); } var metricId = requestData.MetricId; var cache = new AccountCache(accountId); IMetricCacheReadObject metricRead = null; // изменим метрику using (var metric = cache.Metrics.Write(metricId)) { metricRead = metric; metric.Enable = false; metric.DisableToDate = requestData.ToDate; metric.DisableComment = requestData.Comment; metric.BeginSave(); } // обновим колбаски UpdateEnableOrDisableStatusData(metricRead); }
protected IMetricCacheReadObject GetActualMetricInternal(IMetricCacheReadObject metric, DateTime processDate) { if (metric == null) { throw new ArgumentNullException("metric"); } // обновим галочку "включено" if (metric.Enable == false && metric.DisableToDate.HasValue && metric.DisableToDate < processDate) { using (var metricWrite = AllCaches.Metrics.Write(metric)) { metricWrite.Enable = true; metricWrite.BeginSave(); metric = metricWrite; } } var statusService = Context.BulbService; var data = statusService.GetRaw(metric.AccountId, metric.StatusDataId); // если надо выключить if (metric.CanProcess == false && data.Status != MonitoringStatus.Disabled) { UpdateEnableOrDisableStatusData(metric); return(metric); } // если надо включить if (metric.CanProcess && data.Status == MonitoringStatus.Disabled) { UpdateEnableOrDisableStatusData(metric); return(metric); } // если значение актуально, вернем его сразу if (data.Actual(processDate)) { return(metric); } // значение метрики не актуальное // сохраняем пробел using (var metricWrite = AllCaches.Metrics.Write(metric)) { var metricType = AllCaches.MetricTypes.Read(new AccountCacheRequest() { AccountId = metric.AccountId, ObjectId = metric.MetricTypeId }); processDate = metricWrite.ActualDate; // чтобы НЕ было пробела var actualDate = EventHelper.InfiniteActualDate; var noSignalColor = metricWrite.NoSignalColor ?? metricType.NoSignalColor ?? ObjectColor.Red; var status = MonitoringStatusHelper.Get(noSignalColor); SetMetricValue(metricType, metricWrite, null, processDate, actualDate, status, "Нет сигнала", false); metricWrite.BeginSave(); return(metric); } }