public PageHitSuccessModel LogPageHit(string visitorId, int folderId) { using (var db = new OggleBoobleMySqlContext()) { PageHitSuccessModel pageHitSuccessModel = new PageHitSuccessModel(); try { Visitor dbVisitor = db.Visitors.Where(v => v.VisitorId == visitorId).FirstOrDefault(); if (dbVisitor == null) { pageHitSuccessModel.ReturnMessage = "VisitorId not found"; } else { pageHitSuccessModel.VisitorCountry = dbVisitor.Country; PageHit lastHit = null; var pageHits = db.PageHits.Where(h => h.VisitorId == visitorId).FirstOrDefault(); if (pageHits == null) { lastHit = null; pageHitSuccessModel.PageHits = 1; } else { var threeMinutesAgo = DateTime.Now.AddMinutes(-13); lastHit = db.PageHits.Where(h => (h.VisitorId == visitorId) && (h.PageId == folderId) && (h.Occured > threeMinutesAgo)).FirstOrDefault(); pageHitSuccessModel.PageHits = db.PageHits.Where(h => h.VisitorId == visitorId).Count(); } if (lastHit == null) { //System.Threading.Thread.Sleep(1001); db.PageHits.Add(new PageHit() { VisitorId = visitorId, PageId = folderId, Occured = DateTime.Now }); db.SaveChanges(); pageHitSuccessModel.ReturnMessage = "ok"; } else { pageHitSuccessModel.ReturnMessage = "duplicate hit"; } } pageHitSuccessModel.Success = "ok"; } catch (Exception ex) { pageHitSuccessModel.Success = Helpers.ErrorDetails(ex); } return(pageHitSuccessModel); } }
protected override void InitializePage() { SetViewBagDefaultProperties(); base.InitializePage(); string Page = Request.Url.AbsolutePath.Replace("/swordsandsorcerycom/", ""); //deal with the root being a blank if (Page.Length == 0) { Page = "home"; } string IP = HttpContext.Current.Request.UserHostAddress; if (!Request.Url.AbsoluteUri.Contains("localhost")) { PageHit p = new PageHit(Page, IP); } if (Page != "/Home/ErrorPage") { UserType user = UserCache.GetFromCache(0, IP); if (user == null) { //this is a sign that the database is down Response.Redirect(ConfigurationManager.AppSettings["SitePrefix"].StringSafe() + "Home/ErrorPage"); } if (user != null) { //UserCache.Update(user.UserID, Page, user.Confirmed); ViewBag.UserID = user.UserID; ViewBag.UserName = user.UserName; ViewBag.IPAddress = IP; ViewBag.Minimize = user.DownArrow; } } }