public DeleteMetricResponse DeleteMetric(Guid accountId, DeleteMetricRequestData data) { var request = GetRequest <DeleteMetricRequest>(accountId); request.Data = data; var dispatcher = DispatcherHelper.GetDispatcherService(); return(dispatcher.DeleteMetric(request)); }
public JsonResult Delete(Guid id, string fake) { try { var dispatcher = GetDispatcherClient(); var data = new DeleteMetricRequestData() { MetricId = id, UpdateComponentStatus = true }; dispatcher.DeleteMetric(CurrentUser.AccountId, data).Check(); return(GetSuccessJsonResponse()); } catch (Exception exception) { MvcApplication.HandleException(exception); return(GetErrorJsonResponse(exception)); } }
public void DeleteMetric(Guid accountId, DeleteMetricRequestData data) { if (data == null) { throw new ArgumentNullException("data"); } if (data.MetricId == null) { throw new ParameterRequiredException("MetricId"); } // удаляем метрику Guid componentId; Guid statusDataId; Guid componentMetricsStatusDataId; var metricRequest = new AccountCacheRequest() { AccountId = accountId, ObjectId = data.MetricId.Value }; using (var metric = AllCaches.Metrics.Write(metricRequest)) { componentId = metric.ComponentId; statusDataId = metric.StatusDataId; metric.IsDeleted = true; metric.BeginSave(); metric.WaitSaveChanges(); } // Проверим лимиты var limitChecker = AccountLimitsCheckerManager.GetCheckerForAccount(accountId); limitChecker.RefreshMetricsCount(); // удаляем колбасу метрики var statusDataRequest = new AccountCacheRequest() { AccountId = accountId, ObjectId = statusDataId }; using (var statusData = AllCaches.StatusDatas.Write(statusDataRequest)) { statusData.IsDeleted = true; statusData.BeginSave(); } // удаляем ссылку на метрику в компоненте var componentRequest = new AccountCacheRequest() { AccountId = accountId, ObjectId = componentId }; using (var component = AllCaches.Components.Write(componentRequest)) { componentMetricsStatusDataId = component.MetricsStatusId; component.WriteChilds.Delete(data.MetricId.Value); component.BeginSave(); } // обновим колбасу метрик компонента var componentMetricsStatusDataIds = new List <Guid>(); var component1 = AllCaches.Components.Find(componentRequest); foreach (var metricRef in component1.Metrics.GetAll()) { var metric = AllCaches.Metrics.Find(new AccountCacheRequest() { AccountId = accountId, ObjectId = metricRef.Id }); if (metric == null) { throw new Exception("metric == null"); } if (metric.IsDeleted) { continue; } componentMetricsStatusDataIds.Add(metric.StatusDataId); } Context.BulbService.CalculateByChilds( accountId, componentMetricsStatusDataId, componentMetricsStatusDataIds); }