Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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
     });
 }
Exemplo n.º 3
0
        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);
        }