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;
}
}
}