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); }
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)); }
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)); } }