public void SaveUtm() { var guest = Factory.CreateDao<Guest>(); var utmParamWrapper = new UtmParamWrapper("src", "cmp","mdm", true); new UserProvider().SaveUtm(guest.ID, utmParamWrapper); Assert.AreEqual(1, UtmGuestReferrer.DataSource.Count()); var utmEntity = UtmGuestReferrer.DataSource.First(); Assert.AreEqual(guest.ID, utmEntity.GuestID); Assert.AreEqual(utmParamWrapper.UtmCampaign, utmEntity.Campaign); Assert.AreEqual(utmParamWrapper.UtmMedium, utmEntity.Medium); Assert.AreEqual(utmParamWrapper.UtmSource, utmEntity.Source); }
private UtmParamWrapper InitUtmCookies(HttpRequestBase request, HttpResponseBase response) { var domain = SiteConfiguration.ProductionHostName; var referrer = request.UrlReferrer != null ? request.UrlReferrer.ToString() : string.Empty; if (request.Cookies[UTM_COOKIE_NAME] == null) { UtmParam = new UtmParamWrapper( // если есть, берем из параметра урла request.Params.Get(UTM_SOURCE_PARAM_NAME) ?? // иначе ищем реферер (request.UrlReferrer != null // проверяем, внутренний ли переход ? (referrer.IndexOf(domain, StringComparison.Ordinal) >= 0 ? domain : referrer.GetDomain()) // если заход по прямому урлу : string.Empty), request.Params.Get(UTM_CAMPAIGN_PARAM_NAME) ?? string.Empty, request.Params.Get(UTM_MEDIUM_PARAM_NAME) ?? string.Empty, true ); var utmCookie = new HttpCookie(UTM_COOKIE_NAME, CryptoManager.EncryptString(UtmParam.SerializeStruct())) { Expires = DateTime.UtcNow.AddYears(5) }; response.Cookies.Set(utmCookie); } else { UtmParam = UtmParamWrapper.DeserializeParamWrapper(CryptoManager.DecryptString(request.Cookies[UTM_COOKIE_NAME].Value)); } return UtmParam; }
public void SaveUtm(int guestid, UtmParamWrapper utmParams) { InvokeSafe(() => { if (utmParams.IsNew && (guestid != UserAgentValidationPolicy.BOT_GUID || utmParams.Any())) { new UtmGuestReferrer { Datecreated = DateTime.UtcNow, GuestID = guestid, Campaign = utmParams.UtmCampaign, Medium = utmParams.UtmMedium, Source = utmParams.UtmSource }.Save(); } }); }
private static void LogAdditionalUserInfo(int guestID, UtmParamWrapper utm, Uri urlReferrer, Uri url, HttpBrowserCapabilitiesBase httpBrowserCapabilitiesBase, string userAgent) { TaskRunner.Instance.AddAction(() => { BusinessLogic.UserProvider.SaveReferrer(guestID, urlReferrer?.ToString() ?? string.Empty, url?.ToString() ?? string.Empty); BusinessLogic.UserProvider.SaveUtm(guestID, utm); var browserInfo = new BrowserInfo(httpBrowserCapabilitiesBase, userAgent); BusinessLogic.UserProvider.SaveTechInfo(guestID, new GuestTechInfoTransport { Version = browserInfo.CurrentVersion(), BrowserType = browserInfo.Name, Os = browserInfo.Os, IsMobile = browserInfo.Mobile, UserAgent = browserInfo.UserAgent }); }); }