131 lines
3.7 KiB
C#
131 lines
3.7 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace ThinkingData.Analytics
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Special event class for internal use, do not use this class directly.
|
|||
|
/// </summary>
|
|||
|
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<string, object> Properties { get; set; }
|
|||
|
public string StrProperties { get; set; }
|
|||
|
|
|||
|
private DateTime EventTime { get; set; }
|
|||
|
private TimeZoneInfo EventTimeZone { get; set; }
|
|||
|
protected string ExtraId { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Set date time and timezone for the event
|
|||
|
/// </summary>
|
|||
|
/// <param name="time">date time</param>
|
|||
|
/// <param name="timeZone">timezone</param>
|
|||
|
public void SetTime(DateTime time, TimeZoneInfo timeZone)
|
|||
|
{
|
|||
|
EventTime = time;
|
|||
|
EventTimeZone = timeZone;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Get date time for the event
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
public DateTime GetEventTime()
|
|||
|
{
|
|||
|
return EventTime;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Get timezone for the event
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
public TimeZoneInfo GetEventTimeZone()
|
|||
|
{
|
|||
|
return EventTimeZone;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Get identify code for the event
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
public string GetEventId()
|
|||
|
{
|
|||
|
return ExtraId;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// First Event Model
|
|||
|
/// </summary>
|
|||
|
public class TDFirstEventModel : TDEventModel
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Construct TDFirstEventModel instance
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName">name for the event</param>
|
|||
|
public TDFirstEventModel(string eventName) : base(eventName)
|
|||
|
{
|
|||
|
EventType = TDEventType.First;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Construct TDFirstEventModel instance
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName">name for the event</param>
|
|||
|
/// <param name="firstCheckId">check ID for the first event</param>
|
|||
|
public TDFirstEventModel(string eventName, string firstCheckId) : base(eventName)
|
|||
|
{
|
|||
|
EventType = TDEventType.First;
|
|||
|
ExtraId = firstCheckId;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Updatable Event Model
|
|||
|
/// </summary>
|
|||
|
public class TDUpdatableEventModel : TDEventModel
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Construct TDUpdatableEventModel instance
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName">name for the event</param>
|
|||
|
/// <param name="eventId">ID for the event</param>
|
|||
|
public TDUpdatableEventModel(string eventName, string eventId) : base(eventName)
|
|||
|
{
|
|||
|
EventType = TDEventType.Updatable;
|
|||
|
ExtraId = eventId;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Overwritable Event Model
|
|||
|
/// </summary>
|
|||
|
public class TDOverwritableEventModel : TDEventModel
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Construct TDOverwritableEventModel instance
|
|||
|
/// </summary>
|
|||
|
/// <param name="eventName">name for the event</param>
|
|||
|
/// <param name="eventId">ID for the event</param>
|
|||
|
public TDOverwritableEventModel(string eventName, string eventId) : base(eventName)
|
|||
|
{
|
|||
|
EventType = TDEventType.Overwritable;
|
|||
|
ExtraId = eventId;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|