public Bulb CreateBulb( Guid accountId, DateTime createDate, EventCategory eventCategory, Guid ownerId) { var result = new Bulb() { Id = Guid.NewGuid(), StartDate = createDate, EndDate = createDate, ActualDate = EventHelper.InfiniteActualDate, EventCategory = eventCategory, Count = 1, HasSignal = false, Status = MonitoringStatus.Unknown, Message = "Нет данных", UpTimeStartDate = createDate, CreateDate = createDate, StatusEventId = Guid.Empty }; var accountDbContext = Context.GetAccountDbContext(accountId); accountDbContext.Bulbs.Add(result); accountDbContext.SaveChanges(); var request = new AccountCacheRequest() { AccountId = accountId, ObjectId = result.Id }; using (var wStatus = AllCaches.StatusDatas.Write(request)) { AddStatusEvent(accountId, wStatus, ownerId); wStatus.BeginSave(); } // выгрузим, т.к. сейчас неполные данные, еще не установлен ComponentId AllCaches.StatusDatas.Unload(request); return(result); }
public void Remove(Bulb entity) { Context.Bulbs.Remove(entity); }
//public IBulbCacheReadObject Disable(Guid accountId, Guid statusId) //{ // var processDate = DateTime.Now; // var signal = new BulbSignal() // { // AccountId = accountId, // ActualDate = EventHelper.InfiniteActualDate, // чтобы статус был актуален вечно // StartDate = processDate, // ProcessDate = processDate, // Status = MonitoringStatus.Disabled, // Message = "Объект выключен", // NoSignalImportance = EventImportance.Unknown // при выключении пробел будет серым // }; // var statusData = ProlongOrChangeStatus(signal, statusId); // // родителя не обновляем, т.к. его возможно нужно пересчитывать, а для этого нужно знать всех детей, а мы их не знаем // //UpdateParentByChild(statusData); // return statusData; //} protected Guid?GetParentStatusId(Guid accountId, Bulb data) { // если это колбаска проверки if (data.EventCategory == EventCategory.UnitTestStatus) { var unitTestRepository = Context.GetAccountDbContext(accountId).GetUnitTestRepository(); var unitTest = unitTestRepository.GetById(data.GetOwnerId()); return(unitTest.Component.UnitTestsStatusId); } // если это колбаска метрики if (data.EventCategory == EventCategory.MetricStatus) { var metricRepository = Context.GetAccountDbContext(accountId).GetMetricRepository(); var metric = metricRepository.GetById(data.GetOwnerId()); return(metric.Component.MetricsStatusId); } var componentRepository = Context.GetAccountDbContext(accountId).GetComponentRepository(); var component = componentRepository.GetById(data.GetOwnerId()); // если это колбаска событий if (data.EventCategory == EventCategory.ComponentEventsStatus) { return(component.InternalStatusId); } // если это колбаска проверок if (data.EventCategory == EventCategory.ComponentUnitTestsStatus) { return(component.InternalStatusId); } // если это колбаска метрик if (data.EventCategory == EventCategory.ComponentMetricsStatus) { return(component.InternalStatusId); } // если это колбаска дочерних компонентов if (data.EventCategory == EventCategory.ComponentChildsStatus) { return(component.InternalStatusId); } // если это колбаска внутреннего статуса if (data.EventCategory == EventCategory.ComponentInternalStatus) { return(component.ExternalStatusId); } // если это колбаска внешнего статуса if (data.EventCategory == EventCategory.ComponentExternalStatus) { if (component.Parent == null) { return(null); } return(component.Parent.ChildComponentsStatusId); } throw new Exception("Неизвестный тип колбаски " + data.EventCategory); }
public Bulb Add(Bulb entity) { Context.Bulbs.Add(entity); Context.SaveChanges(); return(entity); }