Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public void Remove(Bulb entity)
 {
     Context.Bulbs.Remove(entity);
 }
Exemplo n.º 3
0
        //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);
        }
Exemplo n.º 4
0
 public Bulb Add(Bulb entity)
 {
     Context.Bulbs.Add(entity);
     Context.SaveChanges();
     return(entity);
 }