예제 #1
0
        public static void GenerateContactMessageEvents(Job job, MessageContactEvents events)
        {
            var startStatus      = job.Status;
            var messageItem      = events.MessageItem;
            var hostName         = messageItem.ManagerRoot.Settings.BaseURL;
            var whoIsInformation = events.GeoData;
            var userAgent        = events.UserAgent;
            var landingPageUrl   = events.LandingPageUrl;
            var contactId        = events.ContactId;

            foreach (var messageEvent in events.Events)
            {
                job.Status = startStatus + $" - {messageEvent.EventType}";
                GenerateHandlerEvent(hostName, contactId, messageItem, messageEvent.EventType, messageEvent.EventTime, userAgent, whoIsInformation, landingPageUrl);
            }
        }
예제 #2
0
        public MessageContactEvents CreateRandomContactMessageEvents(Contact contactData, Funnel funnel, MessageItem messageItem)
        {
            var messageContactEvents = new MessageContactEvents();
            var events = new List <MessageContactEvent>();

            messageContactEvents.Events      = events;
            messageContactEvents.MessageItem = messageItem;
            var randomCity = GetRandomCity();

            messageContactEvents.GeoData   = randomCity.ToWhoIsInformation();
            messageContactEvents.UserAgent = GetRandomUserAgent(randomCity);
            if (!contactData.Id.HasValue)
            {
                return(messageContactEvents);
            }

            //var contact = _contactRepository.GetContact(contactData.Id.Value);

            //if (contact == null)
            //{
            //    return messageContactEvents;
            //}
            messageContactEvents.ContactId = contactData.Id.Value;

            if (RandomizeBounceEvent(funnel))
            {
                events.Add(new MessageContactEvent
                {
                    EventTime = messageItem.StartTime,
                    EventType = EventType.Bounce
                });
            }
            else
            {
                var eventTime = GetRandomEventTime(messageItem);

                if (RandomizeOpenEvent(funnel))
                {
                    AddEventDelay(ref eventTime);
                    events.Add(new MessageContactEvent {
                        EventType = EventType.Open,
                        EventTime = eventTime
                    });

                    if (RandomizeClickEvent(funnel))
                    {
                        AddEventDelay(ref eventTime);

                        messageContactEvents.LandingPageUrl = GetRandomLandingPageUrl(messageItem);

                        events.Add(new MessageContactEvent
                        {
                            EventType = EventType.Click,
                            EventTime = eventTime
                        });
                    }
                }

                if (RandomizeSpamComplaintEvent(funnel, events))
                {
                    AddEventDelay(ref eventTime);
                    events.Add(new MessageContactEvent
                    {
                        EventType = EventType.SpamComplaint,
                        EventTime = eventTime
                    });
                }

                if (RandomizeUnsubscribeEvent(funnel))
                {
                    AddEventDelay(ref eventTime);

                    if (RandomizeUnsubscribeAllEvent(funnel))
                    {
                        events.Add(new MessageContactEvent
                        {
                            EventType = EventType.UnsubscribeFromAll,
                            EventTime = eventTime
                        });
                    }
                    else
                    {
                        events.Add(new MessageContactEvent
                        {
                            EventType = EventType.Unsubscribe,
                            EventTime = eventTime
                        });
                    }
                }
            }
            return(messageContactEvents);
        }