Exemple #1
0
        public IMetricCacheReadObject CreateMetric(Guid accountId, CreateMetricRequestData data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            var meticType = GetOrCreateType(accountId, data.MetricName);
            var metricId  = CreateMetric(accountId, data.ComponentId, meticType.Id);
            var cache     = new AccountCache(accountId);

            using (var metric = cache.Metrics.Write(metricId))
            {
                metric.ActualTime      = TimeSpanHelper.FromSeconds(data.ActualTimeSecs);
                metric.NoSignalColor   = data.NoSignalColor;
                metric.ConditionRed    = data.AlarmCondition;
                metric.ConditionYellow = data.WarningCondition;
                metric.ConditionGreen  = data.SuccessCondition;
                metric.ElseColor       = data.ElseColor;
                metric.BeginSave();
            }
            var metrikRead = cache.Metrics.Read(metricId);

            metrikRead.WaitSaveChanges();
            return(metrikRead);
        }
Exemple #2
0
        public CreateMetricResponse CreateMetric(Guid accountId, CreateMetricRequestData data)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }
            var request = GetRequest <CreateMetricRequest>(accountId);

            request.Data = data;
            var dispatcher = DispatcherHelper.GetDispatcherService();

            return(dispatcher.CreateMetric(request));
        }
Exemple #3
0
        public ActionResult Edit(EditModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            try
            {
                var component = GetComponentById(model.ComponentId.Value);
                if (model.Id == null)
                {
                    var oldMetric = component.Metrics.FirstOrDefault(x => x.IsDeleted == false && x.MetricTypeId == model.MetricTypeId);
                    if (oldMetric != null)
                    {
                        ModelState.AddModelError("MetricTypeId", "Метрика данного типа уже есть у компонента");
                        return(View(model));
                    }
                }

                var  client = GetDispatcherClient();
                Guid metricId;

                if (model.Id.HasValue)
                {
                    metricId = model.Id.Value;
                    var updateData = new UpdateMetricRequestData()
                    {
                        MetricId         = model.Id.Value,
                        AlarmCondition   = model.ConditionRed,
                        WarningCondition = model.ConditionYellow,
                        SuccessCondition = model.ConditionGreen,
                        ElseColor        = model.ElseColor.GetSelectedOne(),
                        ActualTimeSecs   = TimeSpanHelper.GetSeconds(model.ActualTime),
                        NoSignalColor    = model.NoSignalColor.GetSelectedOne()
                    };
                    client.UpdateMetric(CurrentUser.AccountId, updateData).Check();
                }
                else
                {
                    var metricType = GetMetricTypeById(model.MetricTypeId.Value);
                    var createData = new CreateMetricRequestData()
                    {
                        ComponentId      = model.ComponentId.Value,
                        MetricName       = metricType.SystemName,//todo сделать отдельную версию, где передается MetricTypeId
                        AlarmCondition   = model.ConditionRed,
                        WarningCondition = model.ConditionYellow,
                        SuccessCondition = model.ConditionGreen,
                        ElseColor        = model.ElseColor.GetSelectedOne(),
                        NoSignalColor    = model.NoSignalColor.GetSelectedOne(),
                        ActualTimeSecs   = TimeSpanHelper.GetSeconds(model.ActualTime)
                    };
                    metricId = client.CreateMetric(CurrentUser.AccountId, createData).Data.MetricId;
                }
                return(RedirectToAction("Show", new { id = metricId }));
            }
            catch (UserFriendlyException exception)
            {
                SetCommonError(exception);
                if (model.Id.HasValue)
                {
                    model.Metric = GetMetricById(model.Id.Value);
                }
                return(View(model));
            }
        }