using System; using System.Collections.Generic; namespace ThinkingData.Analytics { /// /// Special event class for internal use, do not use this class directly. /// public abstract class TDEventModel { public enum TDEventType { First, Updatable, Overwritable } public TDEventModel(string eventName) { EventName = eventName; } public TDEventType? EventType { get; set; } public string EventName { get; } public Dictionary Properties { get; set; } public string StrProperties { get; set; } private DateTime EventTime { get; set; } private TimeZoneInfo EventTimeZone { get; set; } protected string ExtraId { get; set; } /// /// Set date time and timezone for the event /// /// date time /// timezone public void SetTime(DateTime time, TimeZoneInfo timeZone) { EventTime = time; EventTimeZone = timeZone; } /// /// Get date time for the event /// /// public DateTime GetEventTime() { return EventTime; } /// /// Get timezone for the event /// /// public TimeZoneInfo GetEventTimeZone() { return EventTimeZone; } /// /// Get identify code for the event /// /// public string GetEventId() { return ExtraId; } } /// /// First Event Model /// public class TDFirstEventModel : TDEventModel { /// /// Construct TDFirstEventModel instance /// /// name for the event public TDFirstEventModel(string eventName) : base(eventName) { EventType = TDEventType.First; } /// /// Construct TDFirstEventModel instance /// /// name for the event /// check ID for the first event public TDFirstEventModel(string eventName, string firstCheckId) : base(eventName) { EventType = TDEventType.First; ExtraId = firstCheckId; } } /// /// Updatable Event Model /// public class TDUpdatableEventModel : TDEventModel { /// /// Construct TDUpdatableEventModel instance /// /// name for the event /// ID for the event public TDUpdatableEventModel(string eventName, string eventId) : base(eventName) { EventType = TDEventType.Updatable; ExtraId = eventId; } } /// /// Overwritable Event Model /// public class TDOverwritableEventModel : TDEventModel { /// /// Construct TDOverwritableEventModel instance /// /// name for the event /// ID for the event public TDOverwritableEventModel(string eventName, string eventId) : base(eventName) { EventType = TDEventType.Overwritable; ExtraId = eventId; } } }