Ejemplo n.º 1
0
 public PageView(UserSessionInformation userInfo, string pageFriendlyURL)
 {
     PageFriendlyURL       = pageFriendlyURL;
     IpAddress             = userInfo.IpAddress;
     BrowserNameAndVersion = userInfo.BrowserNameAndVersion;
     OperatingSystem       = userInfo.OperatingSystem;
     SessionId             = userInfo.SessionId;
 }
Ejemplo n.º 2
0
 public PageView(UserSessionInformation userInfo, string pageFriendlyURL)
 {
     PageFriendlyURL = pageFriendlyURL;
     IpAddress = userInfo.IpAddress;
     BrowserNameAndVersion = userInfo.BrowserNameAndVersion;
     OperatingSystem = userInfo.OperatingSystem;
     SessionId = userInfo.SessionId;
 }
Ejemplo n.º 3
0
        protected void Session_Start(object sender, EventArgs e)
        {
            Parser UAParser = Parser.GetDefault();

            ClientInfo ClientInfo = UAParser.Parse(Request.UserAgent);

            UserSessionInformation UserInfo = new UserSessionInformation();

            UserInfo.IpAddress = Request.ServerVariables["REMOTE_ADDR"];
            UserInfo.BrowserNameAndVersion = ClientInfo.UserAgent.Family + " " + ClientInfo.UserAgent.Major;
            UserInfo.OperatingSystem = ClientInfo.OS.Family + " " + ClientInfo.OS.Major;
            UserInfo.SessionId = Guid.NewGuid();

            UserInfo.IsBot = Regex.IsMatch(Request.UserAgent, @"bot|crawler|baiduspider|80legs|ia_archiver|voyager|curl|wget|yahoo! slurp|mediapartners-google", RegexOptions.IgnoreCase);

            SiteContext.UserSessionInfo = UserInfo;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Record a page view
        /// </summary>
        /// <param name="pageView"></param>
        /// <returns></returns>
        public static bool SaveNew(PageView pageView, bool allowPageReportRecording, UserSessionInformation userInfo)
        {
            //if reportings in enabled, and the user is not a bot, and it's been at least 2 seconds since their last page view
            if (allowPageReportRecording && !userInfo.IsBot && (DateTime.UtcNow - userInfo.LastDatePageRecordedUTC).TotalSeconds >= 2)
            {
                bool SaveSuccessful = false;

                SaveSuccessful = UpdateLastPageUserWasOn(allowPageReportRecording, userInfo);

                if (pageView.PageOpenedDateUTC.Equals(DateTime.MinValue))
                {
                    pageView.PageOpenedDateUTC = DateTime.UtcNow;
                }

                //record the current page view
                return Execute.Save<PageView>(COLLECTION_NAME, pageView);
            }

            return true;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Grab the last page the user visted if exists and update the exit time
        /// </summary>
        /// <param name="sessionId"></param>
        /// <returns></returns>
        public static bool UpdateLastPageUserWasOn(bool allowPageReportRecording, UserSessionInformation userInfo)
        {
            if (allowPageReportRecording && !userInfo.IsBot)
            {
                MongoCollection<PageView> Collection = Execute.GetCollection<PageView>(COLLECTION_NAME);

                //grab the last viewed page and set the exit time if exists
                PageView LastPageView = (from e in Collection.AsQueryable<PageView>() where e.SessionId == userInfo.SessionId orderby e.PageOpenedDateUTC descending select e).FirstOrDefault();

                if (LastPageView != null && LastPageView.SessionId.Equals(userInfo.SessionId))
                {
                    //only update if was not set before, the exit time will already be set whenever the tab was closed and the session ends 20 mins later
                    if (LastPageView.PageExitDateUTC.Equals(DateTime.MinValue))
                    {
                        LastPageView.PageExitDateUTC = DateTime.UtcNow;

                        return Execute.Save<PageView>(COLLECTION_NAME, LastPageView);
                    }
                }
            }

            return true;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Record a new page view
        /// </summary>
        /// <param name="pageName"></param>
        public static void RecordPageView(string pageName)
        {
            try
            {
                UserSessionInformation UserInfo = UserSessionInfo;

                //record the page view
                Chimera.DataAccess.ReportDAO.SaveNew(new PageView(UserInfo, pageName.ToUpper()), AppSettings.AllowPageReportRecording, UserInfo);

                UserInfo.LastDatePageRecordedUTC = DateTime.UtcNow;

                UserSessionInfo = UserInfo;
            }
            catch (Exception e)
            {
                CompanyCommons.Logging.WriteLog(String.Format("ChimeraWebsite.Helpers.SiteContextRecordPageView(pageName: {0})", pageName), e);
            }
        }