Ejemplo n.º 1
0
        public override void Process(CommitSessionPipelineArgs args)
        {
            if (args.Session?.Interaction?.UserAgent == null)
            {
                return;
            }
            var userAgent   = args.Session?.Interaction?.UserAgent;
            var substrings  = userAgent.Split(new [] { ';', ')', '(' }, StringSplitOptions.RemoveEmptyEntries);
            var cityComment = substrings.FirstOrDefault(s => s.Trim().StartsWith("city:"));

            if (cityComment == null)
            {
                return;
            }
            var cityIdString = cityComment.Substring(5);
            int cityId;

            if (!int.TryParse(cityIdString, out cityId))
            {
                return;
            }
            var city = _geoDataRepository.CityByID(cityId);

            if (city == null)
            {
                return;
            }
            args.Session.Interaction.SetGeoData(city.ToWhoIsInformation());
            args.Session.Interaction.UpdateLocationReference();
        }
        public override void Process(CommitSessionPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.Session, "args.Session is not set");

            GetSessionConversions(args.Session);
        }
Ejemplo n.º 3
0
        public override void Process(CommitSessionPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, nameof(args));
            Assert.IsNotNull(args.Session, "args.Session");
            Assert.IsNotNull(args.Session.Interaction, "args.Session.Interaction");

            var interaction = args.Session.Interaction;

            if (interaction.Pages == null || !interaction.Pages.Any())
            {
                return;
            }

            foreach (var page in interaction.Pages)
            {
                if (!IsExmPage(page))
                {
                    return;
                }

                foreach (var pageEvent in page.PageEvents)
                {
                    var data    = pageEvent.Data;
                    var dataObj = JObject.Parse(data);

                    if (data.Contains("FakeDateTime"))
                    {
                        var fakeDateTime = dataObj["FakeDateTime"].Value <DateTime>().ToUniversalTime();
                        dataObj.Remove("FakeDateTime");
                        pageEvent.DateTime        = fakeDateTime;
                        page.DateTime             = fakeDateTime;
                        interaction.StartDateTime = fakeDateTime;
                        interaction.EndDateTime   = fakeDateTime.AddMinutes(1);
                        interaction.SaveDateTime  = fakeDateTime.AddMinutes(1);
                    }
                    else
                    {
                        pageEvent.DateTime = interaction.StartDateTime;
                        page.DateTime      = interaction.StartDateTime;
                    }

                    if (data.Contains("GeoData"))
                    {
                        var geoData = dataObj["GeoData"].ToObject <WhoIsInformation>();
                        dataObj.Remove("GeoData");
                        interaction.SetWhoIsInformation(geoData);
                    }

                    pageEvent.Data = JsonConvert.SerializeObject(dataObj);
                }
            }
        }
Ejemplo n.º 4
0
        public override void Process(CommitSessionPipelineArgs args)
        {
            var facets = args.Session.Contact.GetXConnectFacets();

            if (facets == null)
            {
                Log.Warn($"**HF** UpdateFacetsFromTracker.Process(). XConnectFacets could not be loaded for contact {args.Session.Contact.ContactId.ToString()}", this);
                return;
            }

            if (identificationService == null || demographicsService == null || sportsService == null || stringValueListFacetService == null)
            {
                Log.Error($"**HF** UpdateFacetsFromTracker.Process(). skips, some services were not resolved.", this);
                return;
            }

            using (var client = SitecoreXConnectClientConfiguration.GetClient())
            {
                try
                {
                    var contact = client.GetContactIdFromDevice();
                    if (contact == null)
                    {
                        Log.Fatal("**HF** UpdateFacetsFromTracker.Process(). Cannot resolve contact id from device", this);
                        return;
                    }

                    identificationService.SetPersonalFacet(facets, client, contact);
                    identificationService.SetEmailFacet(facets, client, contact);
                    demographicsService.SetFacet(facets, client, contact);
                    sportsService.SetFacet(facets, client, contact);

                    stringValueListFacetService.SetFacet(facets, client, contact, FacetIDs.FavoriteEvents);
                    stringValueListFacetService.SetFacet(facets, client, contact, FacetIDs.RegisteredEvents);
                    stringValueListFacetService.SetFacet(facets, client, contact, FacetIDs.Subscriptions);
                    stringValueListFacetService.SetFacet(facets, client, contact, FacetIDs.SubscriptionTokens);

                    client.Submit();
                }
                catch (XdbExecutionException ex)
                {
                    Log.Error("UpdateFacetsFromTracker failed miserably.", ex, this);
                }
            }
        }
Ejemplo n.º 5
0
        public override void Process(CommitSessionPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.Session, "args.Session");
            Assert.IsNotNull(args.Session.Interaction, "args.Session.Interaction");

            var interaction = args.Session.Interaction;

            if (interaction.Pages == null || !interaction.Pages.Any())
            {
                return;
            }

            foreach (var page in interaction.Pages)
            {
                if (!IsExmPage(page))
                {
                    return;
                }

                foreach (var pageEvent in page.PageEvents)
                {
                    var data = pageEvent.Data;
                    if (data != null && data.Contains("FakeDateTime"))
                    {
                        var dataObj      = JObject.Parse(data);
                        var fakeDateTime = dataObj["FakeDateTime"].Value <DateTime>().ToUniversalTime();
                        pageEvent.DateTime        = fakeDateTime;
                        page.DateTime             = fakeDateTime;
                        interaction.StartDateTime = fakeDateTime;
                        interaction.EndDateTime   = fakeDateTime.AddMinutes(1);
                        interaction.SaveDateTime  = fakeDateTime.AddMinutes(1);
                    }
                    else
                    {
                        pageEvent.DateTime = interaction.StartDateTime;
                        page.DateTime      = interaction.StartDateTime;
                    }
                }
            }
        }