public void AddJournalItem(JournalItem journalItem) { GKDBHelper.Add(journalItem); var gkCallbackResult = new GKCallbackResult(); gkCallbackResult.JournalItems.Add(journalItem); NotifyGKObjectStateChanged(gkCallbackResult); }
public JournalItemViewModel(JournalItem journalItem) { ShowObjectOrPlanCommand = new RelayCommand(OnShowObjectOrPlan); ShowObjectCommand = new RelayCommand(OnShowObject, CanShowInTree); ShowOnPlanCommand = new RelayCommand(OnShowOnPlan, CanShowOnPlan); ShowPropertiesCommand = new RelayCommand(OnShowProperties, CanShowProperties); JournalItem = journalItem; }
public bool FilterStateClass(JournalItem journalItem) { if (JournalFilter.StateClasses.Count > 0) { return JournalFilter.StateClasses.Contains(journalItem.StateClass); } return true; }
public bool FilterEventName(JournalItem journalItem) { if (JournalFilter.EventNames.Count > 0) { return JournalFilter.EventNames.Any(x => x.Name == journalItem.Name); } return true; }
public JournalItemViewModel(JournalItem journalItem) { ShowObjectCommand = new RelayCommand(OnShowObject, CanShowObject); JournalItem = journalItem; InitializeTypeAddressImageSource(journalItem); PresentationName = TypeName + " " + Address; InitializePresentationName(); }
public static void Add(JournalItem journalItem) { try { AddMany(new List<JournalItem>() { journalItem }); } catch (Exception e) { Logger.Error(e, "GKDBHelper.Add"); } }
void InitializeTypeAddressImageSource(JournalItem journalItem) { if (journalItem.DescriptorType == 0) { TypeName = "ГК"; Address = ""; ImageSource = "/Controls;component/Images/Blank.png"; ; return; } Address = journalItem.DescriptorAddress.ToString(); var driver = XManager.Drivers.FirstOrDefault(x => x.DriverTypeNo == journalItem.DescriptorType); if (driver != null) { TypeName = driver.ShortName; if (driver.IsDeviceOnShleif) Address = (journalItem.DescriptorAddress / 256 + 1).ToString() + "." + (journalItem.DescriptorAddress % 256).ToString(); if (!driver.HasAddress) Address = ""; ImageSource = driver.ImageSource; } else { switch (journalItem.DescriptorType) { case 0x100: TypeName = "Зона"; ImageSource = "/Controls;component/Images/zone.png"; break; case 0x101: TypeName = "Задержка"; ImageSource = "/Controls;component/Images/Delay.png"; break; case 0x106: TypeName = "Направление"; ImageSource = "/Controls;component/Images/Blue_Direction.png"; break; case 0x107: TypeName = "ПИМ"; ImageSource = "/Controls;component/Images/Pim.png"; break; } } }
public static JournalItem AddMessage(EventName name, string userName) { var journalItem = new JournalItem() { SystemDateTime = DateTime.Now, DeviceDateTime = DateTime.Now, JournalItemType = JournalItemType.System, StateClass = XStateClass.Norm, Name = name.ToDescription(), ObjectStateClass = XStateClass.Norm, UserName = userName, SubsystemType = XSubsystemType.System }; Add(journalItem); return journalItem; }
public void ConnectionChanged(bool isConnected) { lock (connectionChangedLocker) { if (!isConnected) { ConnectionLostCount++; if (ConnectionLostCount < 3) return; } else ConnectionLostCount = 0; if (IsConnected != isConnected) { var journalItem = new JournalItem() { SystemDateTime = DateTime.Now, DeviceDateTime = DateTime.Now, GKIpAddress = XManager.GetIpAddress(GkDatabase.RootDevice), JournalItemType = JournalItemType.System, StateClass = XStateClass.Unknown, ObjectStateClass = XStateClass.Norm, Name = isConnected ? EventName.Восстановление_связи_с_прибором.ToDescription() : EventName.Потеря_связи_с_прибором.ToDescription() }; AddJournalItem(journalItem); IsConnected = isConnected; if (isConnected) { var hashBytes = GKFileInfo.CreateHash1(XManager.DeviceConfiguration, GkDatabase.RootDevice); var gkFileReaderWriter = new GKFileReaderWriter(); var gkFileInfo = gkFileReaderWriter.ReadInfoBlock(GkDatabase.RootDevice); IsHashFailure = gkFileInfo == null || !GKFileInfo.CompareHashes(hashBytes, gkFileInfo.Hash1); } foreach (var descriptor in GkDatabase.Descriptors) { descriptor.XBase.BaseState.IsConnectionLost = !isConnected; } NotifyAllObjectsStateChanged(); } } }
static void OnNewJournalItem(JournalItem journalItem, bool isAdministrator) { if (NewJournalItem != null) NewJournalItem(journalItem, isAdministrator); }
public static void AddGKMessage(EventName message, string description, XBase xBase, string userName, bool isAdministrator = false) { Guid uid = Guid.Empty; var journalItemType = JournalItemType.System; if (xBase != null) { if (xBase is XDevice) { uid = (xBase as XDevice).UID; journalItemType = JournalItemType.Device; } if (xBase is XZone) { uid = (xBase as XZone).UID; journalItemType = JournalItemType.Zone; } if (xBase is XDirection) { uid = (xBase as XDirection).UID; journalItemType = JournalItemType.Direction; } if (xBase is XDelay) { uid = (xBase as XDelay).UID; journalItemType = JournalItemType.Delay; } if (xBase is XPim) { uid = (xBase as XPim).UID; journalItemType = JournalItemType.Pim; } } var journalItem = new JournalItem() { SystemDateTime = DateTime.Now, DeviceDateTime = DateTime.Now, JournalItemType = journalItemType, StateClass = EventNamesHelper.GetStateClass(message), Name = message.ToDescription(), Description = description, ObjectUID = uid, ObjectStateClass = XStateClass.Norm, UserName = userName, SubsystemType = XSubsystemType.System }; if (xBase != null) { journalItem.ObjectName = xBase.PresentationName; journalItem.GKObjectNo = (ushort)xBase.GKDescriptorNo; } GKDBHelper.Add(journalItem); OnNewJournalItem(journalItem, isAdministrator); var gkCallbackResult = new GKCallbackResult(); gkCallbackResult.JournalItems.Add(journalItem); OnGKCallbackResult(gkCallbackResult); }
public void AddJournalItem(JournalItem journalItem) { if (IsGKAsAService) { SafeOperationCall(() => { FiresecService.AddJournalItem(journalItem); }, "AddJournalItem"); } else { } }
void AddJournalItem(JournalItem journalItem) { GKDBHelper.Add(journalItem); GKCallbackResult.JournalItems.Add(journalItem); }
void OnNewJournalItems(JournalItem journalItem, bool isAdministrator) { if (isAdministrator) { FiresecManager.FiresecService.AddJournalItem(journalItem); } }
static JournalItem ReadOneJournalItem(SqlCeDataReader reader) { var journalItem = new JournalItem(); if (!reader.IsDBNull(reader.GetOrdinal("JournalItemType"))) journalItem.JournalItemType = (JournalItemType)reader.GetByte(reader.GetOrdinal("JournalItemType")); if (!reader.IsDBNull(reader.GetOrdinal("SystemDateTime"))) journalItem.SystemDateTime = reader.GetDateTime(reader.GetOrdinal("SystemDateTime")); if (!reader.IsDBNull(reader.GetOrdinal("DeviceDateTime"))) journalItem.DeviceDateTime = reader.GetDateTime(reader.GetOrdinal("DeviceDateTime")); if (!reader.IsDBNull(reader.GetOrdinal("ObjectUID"))) journalItem.ObjectUID = reader.GetGuid(reader.GetOrdinal("ObjectUID")); if (!reader.IsDBNull(reader.GetOrdinal("Name"))) journalItem.Name = reader.GetString(reader.GetOrdinal("Name")); if (!reader.IsDBNull(reader.GetOrdinal("Description"))) journalItem.Description = reader.GetString(reader.GetOrdinal("Description")); if (!reader.IsDBNull(reader.GetOrdinal("ObjectState"))) journalItem.ObjectState = reader.GetInt32(reader.GetOrdinal("ObjectState")); if (!reader.IsDBNull(reader.GetOrdinal("GKObjectNo"))) journalItem.GKObjectNo = (ushort)reader.GetInt16(reader.GetOrdinal("GKObjectNo")); if (!reader.IsDBNull(reader.GetOrdinal("GKIpAddress"))) journalItem.GKIpAddress = reader.GetString(reader.GetOrdinal("GKIpAddress")); if (!reader.IsDBNull(reader.GetOrdinal("GKJournalRecordNo"))) journalItem.GKJournalRecordNo = reader.GetInt32(reader.GetOrdinal("GKJournalRecordNo")); if (!reader.IsDBNull(reader.GetOrdinal("KAUNo"))) journalItem.ControllerAddress = (ushort)reader.GetInt32(reader.GetOrdinal("KAUNo")); if (!reader.IsDBNull(reader.GetOrdinal("StateClass"))) journalItem.StateClass = (XStateClass)reader.GetByte(reader.GetOrdinal("StateClass")); if (!reader.IsDBNull(reader.GetOrdinal("UserName"))) journalItem.UserName = reader.GetString(reader.GetOrdinal("UserName")); if (!reader.IsDBNull(reader.GetOrdinal("ObjectStateClass"))) journalItem.ObjectStateClass = (XStateClass)reader.GetByte(reader.GetOrdinal("ObjectStateClass")); if (!reader.IsDBNull(reader.GetOrdinal("ObjectName"))) journalItem.ObjectName = reader.GetString(reader.GetOrdinal("ObjectName")); if (!reader.IsDBNull(reader.GetOrdinal("AdditionalDescription"))) journalItem.AdditionalDescription = reader.GetString(reader.GetOrdinal("AdditionalDescription")); if (!reader.IsDBNull(reader.GetOrdinal("Subsystem"))) journalItem.SubsystemType = (XSubsystemType)reader.GetByte(reader.GetOrdinal("Subsystem")); return journalItem; }
public ConfirmationViewModel(JournalItem journalItem) { Title = "Подтверждение критических событий"; ConfirmCommand = new RelayCommand(OnConfirm); JournalItemViewModel = new JournalItemViewModel(journalItem); }
public JournalItemViewModel(JournalItem journalItem) { ShowObjectOrPlanCommand = new RelayCommand(OnShowObjectOrPlan); ShowObjectCommand = new RelayCommand(OnShowObject, CanShowInTree); ShowOnPlanCommand = new RelayCommand(OnShowOnPlan, CanShowOnPlan); ShowPropertiesCommand = new RelayCommand(OnShowProperties, CanShowProperties); JournalItem = journalItem; IsExistsInConfig = true; try { switch (JournalItem.JournalItemType) { case JournalItemType.Device: Device = XManager.Devices.FirstOrDefault(x => x.UID == JournalItem.ObjectUID); if (Device != null) { PresentationName = Device.PresentationName; } break; case JournalItemType.Zone: Zone = XManager.Zones.FirstOrDefault(x => x.UID == JournalItem.ObjectUID); if (Zone != null) { PresentationName = Zone.PresentationName; } break; case JournalItemType.Direction: Direction = XManager.Directions.FirstOrDefault(x => x.UID == JournalItem.ObjectUID); if (Direction != null) { PresentationName = Direction.PresentationName; } break; case JournalItemType.PumpStation: PumpStation = XManager.PumpStations.FirstOrDefault(x => x.UID == JournalItem.ObjectUID); if (PumpStation != null) { PresentationName = PumpStation.PresentationName; } break; case JournalItemType.Delay: Delay = XManager.Delays.FirstOrDefault(x => x.UID == JournalItem.ObjectUID); if (Delay != null) { PresentationName = Delay.PresentationName; } break; case JournalItemType.Pim: Pim = XManager.Pims.FirstOrDefault(x => x.UID == JournalItem.ObjectUID); if (Pim != null) { PresentationName = Pim.PresentationName; } break; case JournalItemType.GkUser: PresentationName = JournalItem.UserName; break; case JournalItemType.GK: case JournalItemType.System: PresentationName = ""; break; } if (PresentationName == null) { PresentationName = JournalItem.ObjectName; IsExistsInConfig = false; } if(PresentationName == null) PresentationName = "<Нет в конфигурации>"; } catch (Exception e) { Logger.Error(e, "JournalItemViewModel ctr"); } }
public JournalParser(XDevice gkDevice, List<byte> bytes) { JournalItem = new JournalItem(); JournalItem.SubsystemType = XSubsystemType.GK; JournalItem.JournalItemType = JournalItemType.GK; JournalItem.GKIpAddress = XManager.GetIpAddress(gkDevice); JournalItem.GKJournalRecordNo = BytesHelper.SubstructInt(bytes, 0); JournalItem.GKObjectNo = BytesHelper.SubstructShort(bytes, 4); var UNUSED_KAUNo = BytesHelper.SubstructInt(bytes, 32); InitializeFromObjectUID(); InitializeDateTime(bytes); JournalItem.ControllerAddress = BytesHelper.SubstructShort(bytes, 32 + 10); var source = (JournalSourceType)(int)(bytes[32 + 12]); var code = bytes[32 + 13]; JournalItem.StateClass = XStateClass.No; switch (source) { case JournalSourceType.Controller: switch (code) { case 0: JournalItem.Name = "Перевод в технологический режим"; break; case 2: JournalItem.Name = "Синхронизация времени прибора с временем ПК"; break; case 4: JournalItem.Name = "Смена ПО"; break; case 5: JournalItem.Name = "Смена БД"; break; case 6: JournalItem.Name = "Перевод в рабочий режим"; break; case 7: JournalItem.Name = "Вход пользователя в прибор"; JournalItem.Description = JournalStringsHelper.ToUser(bytes[32 + 15]); var bytes1 = bytes.GetRange(6, 31 - 6 + 1); var bytes2 = bytes.GetRange(16, 21 - 16 + 1); bytes1.AddRange(bytes2); JournalItem.UserName = Encoding.Default.GetString(bytes1.ToArray(), 0, bytes1.Count); JournalItem.JournalItemType = JournalItemType.GkUser; break; case 8: JournalItem.Name = "Выход пользователя из прибора"; JournalItem.Description = JournalStringsHelper.ToUser(bytes[32 + 15]); bytes1 = bytes.GetRange(6, 31 - 6 + 1); bytes2 = bytes.GetRange(48, 53 - 48 + 1); bytes1.AddRange(bytes2); JournalItem.UserName = Encoding.Default.GetString(bytes1.ToArray(), 0, bytes1.Count); JournalItem.JournalItemType = JournalItemType.GkUser; break; case 9: JournalItem.Name = "Ошибка управления"; JournalItem.GKObjectNo = BytesHelper.SubstructShort(bytes, 18); break; case 10: JournalItem.Name = "Введен новый пользователь"; JournalItem.JournalItemType = JournalItemType.GkUser; break; case 11: JournalItem.Name = "Изменена учетная информация пользователя"; JournalItem.JournalItemType = JournalItemType.GkUser; break; case 12: JournalItem.Name = "Произведена настройка сети"; break; default: JournalItem.Name = "Неизвестный код события контроллекра"; JournalItem.Description = code.ToString(); break; } break; case JournalSourceType.Device: var unknownType = BytesHelper.SubstructShort(bytes, 32 + 14); var unknownAddress = BytesHelper.SubstructShort(bytes, 32 + 16); var presentationAddress = (unknownAddress / 256 + 1).ToString() + "." + (unknownAddress % 256).ToString(); var driverName = unknownType.ToString(); var driver = XManager.Drivers.FirstOrDefault(x => x.DriverTypeNo == unknownType); if (driver != null) { driverName = driver.ShortName; }; var unknownDescription = "Тип: " + driverName + " Адрес: " + presentationAddress; switch (code) { case 0: JournalItem.Name = "Неизвестный тип"; JournalItem.Description = unknownDescription; break; case 1: JournalItem.Name = "Устройство с таким адресом не описано при конфигурации"; JournalItem.Description = unknownDescription; break; default: JournalItem.Name = "Неизвестный код события устройства"; JournalItem.Description = code.ToString(); break; } break; case JournalSourceType.Object: var UNUSED_ObjectNo = BytesHelper.SubstructShort(bytes, 32 + 18); JournalItem.DescriptorType = BytesHelper.SubstructShort(bytes, 32 + 20); JournalItem.DescriptorAddress = BytesHelper.SubstructShort(bytes, 32 + 22); var UNUSED_ObjectFactoryNo = BytesHelper.SubstructInt(bytes, 32 + 24); JournalItem.ObjectState = BytesHelper.SubstructInt(bytes, 32 + 28); switch (code) { case 0: JournalItem.Name = "При конфигурации описан другой тип"; var realType = BytesHelper.SubstructShort(bytes, 32 + 14); var realDriverString = "Неизвестный тип " + realType.ToString(); var realDriver = XManager.Drivers.FirstOrDefault(x => x.DriverTypeNo == realType); if (realDriver != null) { realDriverString = realDriver.ShortName; } JournalItem.Description = "Действительный тип: " + realDriverString; break; case 1: JournalItem.Name = "Изменился заводской номер"; JournalItem.Description = "Старый заводсткой номер: " + BytesHelper.SubstructInt(bytes, 32 + 14).ToString(); break; case 2: JournalItem.Name = "Пожар-1"; if (JournalItem.JournalItemType == JournalItemType.Device) JournalItem.Name = "Сработка-1"; JournalItem.Description = JournalStringsHelper.ToFire(bytes[32 + 15]); break; case 3: JournalItem.Name = "Пожар-2"; if (JournalItem.JournalItemType == JournalItemType.Device) JournalItem.Name = "Сработка-2"; JournalItem.Description = JournalStringsHelper.ToFire(bytes[32 + 15]); break; case 4: JournalItem.Name = "Внимание"; break; case 5: JournalItem.Name = "Неисправность"; if (bytes[32 + 14] == 0) JournalItem.Name = "Неисправность устранена"; switch (JournalItem.DescriptorType) { case 0xD6: JournalItem.Description = JournalStringsHelper.ToBatteryFailure(bytes[32 + 15]); break; default: JournalItem.Description = JournalStringsHelper.ToFailure(bytes[32 + 15]); if (bytes[32 + 15] >= 241 && bytes[32 + 15] <= 254) { var firstAdditionalDescription = bytes[32 + 16]; var secondAdditionalDescription = bytes[32 + 17]; if (firstAdditionalDescription != 0 || secondAdditionalDescription != 0) { JournalItem.AdditionalDescription = firstAdditionalDescription.ToString() + " " + secondAdditionalDescription.ToString(); } } break; } break; case 6: JournalItem.Name = "Тест"; if (bytes[32 + 14] == 0) JournalItem.Name = "Тест устранен"; switch (bytes[32 + 15]) { case 1: JournalItem.Description = "Кнопка"; break; case 2: JournalItem.Description = "Указка"; break; } break; case 7: JournalItem.Name = "Запыленность"; if (bytes[32 + 14] == 0) JournalItem.Name = "Запыленность устранена"; switch (bytes[32 + 15]) { case 1: JournalItem.Description = "Предварительная"; break; case 2: JournalItem.Description = "Критическая"; break; } break; case 8: JournalItem.Name = "Информация"; JournalItem.Description = JournalStringsHelper.ToInformation(bytes[32 + 15]); break; case 9: JournalItem.Name = JournalStringsHelper.ToState(bytes[32 + 15]); break; case 10: JournalItem.Name = "Режим работы"; switch (bytes[32 + 15]) { case 0: JournalItem.Name = "Перевод в автоматический режим"; break; case 1: JournalItem.Name = "Перевод в ручной режим"; break; case 2: JournalItem.Name = "Перевод в отключенный режим"; break; case 3: JournalItem.Name = "Перевод в неопределенный режим"; break; } break; case 13: JournalItem.Name = "Запись параметра"; break; case 14: JournalItem.Name = "Норма"; break; default: JournalItem.Name = "Неизвестный код события объекта:"; JournalItem.Description = code.ToString(); break; } break; } //if (Device != null && Device.DriverType == XDriverType.Pump && JournalItem.Name == "Неисправность") //{ // var pumpTypeProperty = Device.Properties.FirstOrDefault(x => x.Name == "PumpType"); // if (pumpTypeProperty != null) // { // JournalItem.Description = JournalStringsHelper.GetPumpFailureMessage(JournalItem.Description, pumpTypeProperty.Value); // } //} if (JournalItem.StateClass == XStateClass.No) { JournalItem.StateClass = JournalDescriptionStateHelper.GetStateClassByName(JournalItem.Name); } if (source == JournalSourceType.Object) { var stateBits = XStatesHelper.StatesFromInt(JournalItem.ObjectState); var stateClasses = XStatesHelper.StateBitsToStateClasses(stateBits); JournalItem.ObjectStateClass = XStatesHelper.GetMinStateClass(stateClasses); } else { JournalItem.ObjectStateClass = XStateClass.Norm; } }
void ParseAdditionalStates(JournalItem journalItem) { var descriptor = GkDatabase.Descriptors.FirstOrDefault(x => x.GetDescriptorNo() == journalItem.GKObjectNo); if (descriptor != null && descriptor.Device != null) { var deviceState = descriptor.Device.BaseState; if (journalItem.Name == "Неисправность") { if (!string.IsNullOrEmpty(journalItem.Description)) { AddAdditionalState(deviceState, journalItem.Description, XStateClass.Failure); if (descriptor.Device.DriverType == XDriverType.Battery) { var batteryNamesGroup = BatteryJournalHelper.BatteryNamesGroups.FirstOrDefault(x => x.Names.Contains(journalItem.Description)); if (batteryNamesGroup != null) { foreach (var name in batteryNamesGroup.Names) { if (name != journalItem.Description) { deviceState.AdditionalStates.RemoveAll(x => x.Name == name); } } } } } } if (journalItem.Name == "Неисправность устранена") { if (string.IsNullOrEmpty(journalItem.Description)) { deviceState.AdditionalStates.RemoveAll(x => x.StateClass == XStateClass.Failure); } else { deviceState.AdditionalStates.RemoveAll(x => x.Name == journalItem.Description); if (descriptor.Device.DriverType == XDriverType.Battery) { var batteryNamesGroup = BatteryJournalHelper.BatteryNamesGroups.FirstOrDefault(x => x.ResetName == journalItem.Description); if (batteryNamesGroup != null) { foreach (var name in batteryNamesGroup.Names) { deviceState.AdditionalStates.RemoveAll(x => x.Name == name); } } } } } if (journalItem.Name == "Информация") { switch (journalItem.Description) { case "Низкий уровень": deviceState.AdditionalStates.RemoveAll(x => x.Name == "Высокий уровень"); deviceState.AdditionalStates.RemoveAll(x => x.Name == "Аварийный уровень"); AddAdditionalState(deviceState, "Низкий уровень", XStateClass.Info); break; case "Высокий уровень": deviceState.AdditionalStates.RemoveAll(x => x.Name == "Аварийный уровень"); AddAdditionalState(deviceState, "Низкий уровень", XStateClass.Info); AddAdditionalState(deviceState, "Высокий уровень", XStateClass.Info); break; case "Аварийный уровень": AddAdditionalState(deviceState, "Низкий уровень", XStateClass.Info); AddAdditionalState(deviceState, "Высокий уровень", XStateClass.Info); AddAdditionalState(deviceState, "Аварийный уровень", XStateClass.Failure); break; case "Уровень норма": deviceState.AdditionalStates.RemoveAll(x => x.Name == "Низкий уровень"); deviceState.AdditionalStates.RemoveAll(x => x.Name == "Высокий уровень"); deviceState.AdditionalStates.RemoveAll(x => x.Name == "Аварийный уровень"); break; } } } }
void CheckServiceRequired(XBase xBase, JournalItem journalItem) { if (journalItem.Name == "Запыленность" || journalItem.Name == "Запыленность устранена") { if (xBase is XDevice) { var device = xBase as XDevice; if (journalItem.Name == "Запыленность") device.BaseState.IsService = true; if (journalItem.Name == "Запыленность устранена") device.BaseState.IsService = false; } } }
void ChangeJournalOnDevice(BaseDescriptor descriptor, JournalItem journalItem) { if (descriptor.Device != null) { var device = descriptor.Device; if (device.DriverType == XDriverType.AM1_T) { if (journalItem.Name == "Сработка-2") { var property = device.Properties.FirstOrDefault(x => x.Name == "OnMessage"); if (property != null) { journalItem.Description = property.StringValue; } } if (journalItem.Name == "Норма") { var property = device.Properties.FirstOrDefault(x => x.Name == "NormMessage"); if (property != null) { journalItem.Description = property.StringValue; } } } if (device.DriverType == XDriverType.Valve) { switch (journalItem.Name) { case "Включено": journalItem.Name = "Открыто"; break; case "Выключено": journalItem.Name = "Закрыто"; break; case "Включается": journalItem.Name = "Открывается"; break; case "Выключается": journalItem.Name = "Закрывается"; break; } } } }
void AddFailureJournalItem(EventName name, EventDescription description) { var journalItem = new JournalItem() { Name = name.ToDescription(), Description = description.ToDescription(), StateClass = XStateClass.Unknown, ObjectStateClass = XStateClass.Norm, GKIpAddress = GkDatabase.RootDevice.GetGKIpAddress() }; GKDBHelper.Add(journalItem); GKCallbackResult.JournalItems.Add(journalItem); }