using System; using System.Runtime.Serialization; using Aitex.Core.Account; using Aitex.Core.Util; namespace Aitex.Core.RT.Event { [Serializable] [DataContract] [KnownType(typeof(Credential))] public class EventItem { #region Constructors /// /// 构造事件对象的实例。 /// public EventItem() { } /// /// 构造事件对象的实例。 /// /// 事件名称。 public EventItem(string name) : this(0, "System", name, "", EventLevel.Information, EventType.EventUI_Notify) { } /// /// 构造事件对象的实例。 /// /// 事件名称。 /// 事件描述。 public EventItem(string name, string description) : this(0, "System", name, description, EventLevel.Information, EventType.EventUI_Notify) { } /// /// 构造事件对象的实例。 /// /// 事件来源。 /// 事件名称。 /// 事件描述。 public EventItem(string source, string name, string description) : this(0, source, name, description, EventLevel.Information, EventType.EventUI_Notify) { } /// /// 构造事件对象的实例。 /// /// 事件名称。 /// 事件类型,请参考。 /// 事件等级,请参考。 public EventItem(string name, EventType type, EventLevel level) : this(0, "System", name, "", level, type) { } /// /// 构造事件对象的实例。 /// /// 事件来源。 /// 事件名称。 /// 事件描述。 /// 事件等级,请参考。 /// 事件类型,请参考。 public EventItem(string source, string name, string description, EventLevel level, EventType type) : this(0, source, name, description, level, type) { } /// /// 构造事件对象的实例。 /// /// 事件编号。 /// 事件来源。 /// 事件名称。 /// 事件描述。 /// 事件等级,请参考。 /// 事件类型,请参考。 public EventItem(int id, string source, string name, string description, EventLevel level, EventType type) { EventEnum = name; Type = type; Level = level; Source = source; Description = description; Id = id; } #endregion #region Properties /// /// 设置或返回事件编号。 /// [DataMember] public int Id { get; set; } /// /// 设置或返回事件名称。 /// [DataMember] public string EventEnum { get; set; } /// /// 设置或返回事件类型。 /// [DataMember] public EventType Type { get; set; } /// /// 设置或返回事件等级。 /// [DataMember] public EventLevel Level { get; set; } /// /// 设置或返回事件来源。 /// [DataMember] public string Source { get; set; } /// /// 设置或返回事件描述。 /// [DataMember] public string Description { get; set; } /// /// 设置或返回事件发生时间。 /// [DataMember] public DateTime OccuringTime { get; set; } /// /// 设置或返回事件是否已被响应和处理。 /// [DataMember] public bool IsAcknowledged { get; set; } /// /// 设置或返回事件被响应的事件。 /// [DataMember] public DateTime AcknowledgedTime { get; set; } /// /// 设置或返回事件的详细解释。 /// [DataMember] public string Explaination { get; set; } /// /// 设置或返回事件的处理方法描述。 /// [DataMember] public string Solution { get; set; } /// /// 设置或返回事件描述的英文版本。 /// [DataMember] public string GlobalDescription_en { get; set; } /// /// 设置或返回事件描述的中文版本。 /// [DataMember] public string GlobalDescription_zh { get; set; } [DataMember] public SerializableDictionary DVID { get; set; } public SerializableDictionary ObjDVID { get; set; } [DataMember] public object Tag { get; set; } /// /// 返回事件是否触发。 /// public bool IsTriggered => !IsAcknowledged; #endregion #region Methods /// /// 创建事件的副本。 /// /// public EventItem Clone() { var eventItem = new EventItem { Description = Description, EventEnum = EventEnum, Explaination = Explaination, Id = Id, IsAcknowledged = IsAcknowledged, AcknowledgedTime = AcknowledgedTime, Level = Level, OccuringTime = OccuringTime, Solution = Solution, Source = Source, Type = Type, GlobalDescription_en = GlobalDescription_en, GlobalDescription_zh = GlobalDescription_zh, DVID = DVID, ObjDVID = ObjDVID, Tag = Tag }; return eventItem; } /// /// 创建事件的副本。 /// /// /// public EventItem Clone(SerializableDictionary objDvid) { var eventItem = new EventItem { Description = Description, EventEnum = EventEnum, Explaination = Explaination, Id = Id, IsAcknowledged = IsAcknowledged, AcknowledgedTime = AcknowledgedTime, Level = Level, OccuringTime = OccuringTime, Solution = Solution, Source = Source, Type = Type, GlobalDescription_en = GlobalDescription_en, GlobalDescription_zh = GlobalDescription_zh, DVID = DVID, ObjDVID = objDvid, Tag = Tag }; return eventItem; } /// /// /// /// public override string ToString() { return $"{Level}, {EventEnum}, {Source}"; } #endregion } }