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); }
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); } } }
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); } } }
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; } } } }