Пример #1
0
        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);
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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();
            }
        }
Пример #5
0
        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);
            }
        }