Пример #1
0
        /// <summary>
        /// Selects the session source object.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <param name="referrerUrl">The referrer URL.</param>
        /// <returns></returns>
        public static SessionSource Select(string url, string referrerUrl)
        {
            var result = new SessionSource();

            var repository         = new WebCounterServiceRepository();
            var sessionSourceRules = repository.SessionSourceRule_SelectAll();

            if (!string.IsNullOrEmpty(url))
            {
                url = HttpUtility.UrlDecode(url);
            }
            referrerUrl = HttpUtility.UrlDecode(referrerUrl);

            foreach (var sessionSourceRule in sessionSourceRules)
            {
                var regex   = new Regex(sessionSourceRule.Pattern);
                var matches = regex.Matches((SessionRuleType)sessionSourceRule.SessionRuleTypeID == SessionRuleType.SourceUrl && !string.IsNullOrEmpty(url) ? url : referrerUrl);

                if (matches.Count > 0)
                {
                    foreach (Match match in matches)
                    {
                        switch ((SessionRuleType)sessionSourceRule.SessionRuleTypeID)
                        {
                        case SessionRuleType.SourceUrl:
                            result.AdvertisingPlatform = match.Groups["source"].Value != string.Empty ? match.Groups["source"].Value : result.AdvertisingPlatform;
                            result.AdvertisingType     = match.Groups["medium"].Value != string.Empty ? match.Groups["medium"].Value : result.AdvertisingType;
                            result.AdvertisingCampaign = match.Groups["campaign"].Value != string.Empty ? match.Groups["campaign"].Value : result.AdvertisingCampaign;
                            result.Content             = match.Groups["content"].Value != string.Empty ? match.Groups["content"].Value : result.Content;
                            result.Keywords            = match.Groups["keywords"].Value != string.Empty ? match.Groups["keywords"].Value : result.Keywords;
                            break;

                        case SessionRuleType.ReferrerUrl:
                            result.Keywords = match.Groups["keywords"].Value != string.Empty ? match.Groups["keywords"].Value : result.Keywords;

                            if (sessionSourceRule.Title == "Google Adwords" || sessionSourceRule.Title == "Yandex Direct")
                            {
                                result.AdvertisingType = sessionSourceRule.Title;
                            }
                            if (sessionSourceRule.Title == "Yandex Services")
                            {
                                result.AdvertisingPlatform = "Yandex";
                                if (!string.IsNullOrEmpty(referrerUrl))
                                {
                                    if (referrerUrl.ToLower().Contains("images.yandex"))
                                    {
                                        result.AdvertisingType = "Images";
                                    }
                                    else if (referrerUrl.ToLower().Contains("news.yandex"))
                                    {
                                        result.AdvertisingType = "News";
                                    }
                                    else if (referrerUrl.ToLower().Contains("rabota.yandex"))
                                    {
                                        result.AdvertisingType = "Rabota";
                                    }
                                }
                            }

                            result.CameFromUrl = match.Groups["camefrom"].Value != string.Empty
                                                 ? match.Groups["camefrom"].Value
                                                 : result.CameFromUrl;
                            Uri cameFromUrl;
                            if (!string.IsNullOrEmpty(result.CameFromUrl) && string.IsNullOrEmpty(result.AdvertisingPlatform) && Uri.TryCreate(result.CameFromUrl, UriKind.Absolute, out cameFromUrl))
                            {
                                result.AdvertisingPlatform = cameFromUrl.Host;
                            }

                            break;
                        }
                    }

                    if ((SessionRuleType)sessionSourceRule.SessionRuleTypeID == SessionRuleType.ReferrerUrl)
                    {
                        if (string.IsNullOrEmpty(result.AdvertisingPlatform))
                        {
                            result.AdvertisingPlatform = sessionSourceRule.Title;
                        }
                        if (string.IsNullOrEmpty(result.AdvertisingType))
                        {
                            result.AdvertisingType = "search";
                        }
                        if (string.IsNullOrEmpty(result.CameFromUrl) && !string.IsNullOrEmpty(referrerUrl))
                        {
                            Uri refferUri;
                            if (Uri.TryCreate(referrerUrl, UriKind.RelativeOrAbsolute, out refferUri) && !string.IsNullOrEmpty(refferUri.Query))
                            {
                                result.CameFromUrl = refferUri.ToString().Replace(refferUri.Query, string.Empty);
                            }
                        }
                    }

                    break;
                }
            }

            if (result.IsNull())
            {
                result.CameFromUrl = referrerUrl;
                if (!string.IsNullOrEmpty(referrerUrl))
                {
                    result.AdvertisingType = "Сайт";

                    var host = new Uri(referrerUrl).Host.Replace("www.", string.Empty);
                    if (host.ToLower().Contains("google."))
                    {
                        result.AdvertisingType = string.Empty;
                        host = "Google";
                    }
                    result.AdvertisingPlatform = host;
                }
            }

            result.EnterPointURL = url;

            return(result);
        }
Пример #2
0
        /// <summary>
        /// Adds the site user.
        /// </summary>
        /// <param name="siteID">The site ID.</param>
        /// <param name="contactID">The user ID.</param>
        /// <param name="activityType">Type of the activity.</param>
        /// <param name="activityCode">The activity code.</param>
        /// <param name="refferURL">The reffer URL.</param>
        /// <param name="resolution">The resolution.</param>
        /// <param name="enterPointUrl">The enter point URL.</param>
        /// <param name="source">The source.</param>
        /// <param name="medium">The medium.</param>
        /// <param name="keywords">The keywords.</param>
        /// <param name="campaign">The campaign.</param>
        /// <param name="content">The content.</param>
        public static void AddContact(Guid siteID, Guid contactID, ActivityType activityType, string activityCode, string refferURL, string resolution, SessionSource sessionSource, Guid?refferID)
        {
            /*if (dataManager.SiteUser.GetCount(SiteID, UserID) == 0)
             * {
             *  var siteUser = new tbl_SiteUser { ID = UserID, SiteID = SiteID, CreatedAt = DateTime.Now, RefferURL = RefferURL, UserIP = GetUserIP(), StatusID = dataManager.Status.SelectDefault(SiteID).ID, ReadyToSellID = dataManager.ReadyToSell.SelectByScore(SiteID, 0).ID, PriorityID = dataManager.Priorities.SelectByScore(SiteID, 0).ID };
             *  dataManager.SiteUser.Add(siteUser);
             * }*/

            //var siteUser = new tbl_SiteUser { ID = UserID, SiteID = SiteID, CreatedAt = DateTime.Now, RefferURL = RefferURL, UserIP = GetUserIP() };
            //repository.SiteUser_Add(siteUser);
            var userAgent  = HttpContext.Current.Request.UserAgent;
            var browser    = GetBrowser(userAgent);
            var os         = GetOperatingSystem(userAgent);
            var userParams = new AddContactParams {
                ID                     = contactID,
                SiteID                 = siteID,
                RefferURL              = refferURL,
                UserIP                 = GetUserIP(),
                UserAgent              = userAgent,
                BrowserName            = browser.Name,
                BrowserVersion         = browser.Version,
                OperatingSystemName    = os.Name,
                OperatingSystemVersion = os.Version,
                Resolution             = resolution,
                MobileDevice           = (os.IsMobile) ? GetMobileDevice(userAgent) : null,
                ActivityTypeID         = activityType,
                ActivityCode           = activityCode,
                SessionSource          = sessionSource,
                RefferID               = refferID
            };

            repository.Contact_Add(userParams);

            //CheckEvent(siteID, contactID);
        }