private static void InsertCommunication(TrackingDataContext dc, EventMessage message) { // Extract all values. var value = message.GetParameterValue("Id"); if (!(value is Guid)) { return; } var id = (Guid)value; value = message.GetParameterValue("Definition"); var definition = value is string?(string)value : null; value = message.GetParameterValue("Vertical"); var vertical = value is Guid ? (Guid)value : (Guid?)null; value = message.GetParameterValue("UserId"); var userId = value is Guid ? (Guid)value : (Guid?)null; value = message.GetParameterValue("EmailAddress"); var emailAddress = value is string?(string)value : null; dc.TrackingInsertCommunication(id, message.Time.Ticks, definition, vertical, userId, emailAddress); }
void ITrackingRepository.CreateCommunicationSentTrack(EventMessage message) { using (var dc = new TrackingDataContext(_connectionFactory.CreateConnection())) { // Insert an entry for the communication itself. InsertCommunication(dc, message); // Look for all links. var properties = message.GetParameterValue("Properties"); if (properties is InstrumentationDetails) { var tinyUrls = ((InstrumentationDetails)properties).GetValue("TinyUrls"); if (tinyUrls is InstrumentationDetails) { foreach (var tinyUrl in (InstrumentationDetails)tinyUrls) { if (tinyUrl.Value is InstrumentationDetails) { InsertCommunicationLink(dc, (InstrumentationDetails)tinyUrl.Value); } } } } dc.SubmitChanges(); } }
private static void InsertCommunicationLinkClicked(TrackingDataContext dc, EventMessage message) { // Extract all values. var value = message.GetParameterValue("TinyId"); if (value == null || !(value is Guid)) { return; } var tinyId = (Guid)value; value = message.GetParameterValue("ContextId"); if (value == null || !(value is Guid)) { return; } var contextId = (Guid)value; // Execute the command. dc.TrackingInsertCommunicationLinkClicked(tinyId, contextId, message.Time.Ticks); }
void ITrackingRepository.CreateCommunicationLinksTrack(EventMessage message) { using (var dc = new TrackingDataContext(_connectionFactory.CreateConnection())) { // Look for all links. var tinyUrls = message.GetParameterValue("TinyUrls"); if (tinyUrls is InstrumentationDetails) { foreach (var tinyUrl in (InstrumentationDetails)tinyUrls) { if (tinyUrl.Value is InstrumentationDetails) { InsertCommunicationLink(dc, (InstrumentationDetails)tinyUrl.Value); } } } dc.SubmitChanges(); } }
private static bool GetCommunicationTrackingType(EventMessage message, out CommunicationTrackingType type) { type = CommunicationTrackingType.None; // Look for the parameters. var trackingType = message.GetParameterValue(typeof(CommunicationTrackingType).Name); if (trackingType == null) { return(false); } try { type = (CommunicationTrackingType)Enum.Parse(typeof(CommunicationTrackingType), trackingType.ToString()); return(true); } catch (Exception) { return(false); } }