public UpdateMetricResponse UpdateMetric(Guid accountId, UpdateMetricRequestData data) { if (data == null) { throw new ArgumentNullException("data"); } var request = GetRequest <UpdateMetricRequest>(accountId); request.Data = data; var dispatcher = DispatcherHelper.GetDispatcherService(); return(dispatcher.UpdateMetric(request)); }
public void UpdateMetric(Guid accountId, UpdateMetricRequestData data) { var cache = new AccountCache(accountId); using (var metric = cache.Metrics.Write(data.MetricId)) { metric.ConditionRed = data.AlarmCondition; metric.ConditionYellow = data.WarningCondition; metric.ConditionGreen = data.SuccessCondition; metric.ElseColor = data.ElseColor; metric.ActualTime = TimeSpanHelper.FromSeconds(data.ActualTimeSecs); metric.NoSignalColor = data.NoSignalColor; metric.BeginSave(); } cache.Metrics.Read(data.MetricId).WaitSaveChanges(); }
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)); } }