public void updatePageHit(String pageName, String userName) { var pageCount = db.PageHitsEntity.Where(x => x.PageName == pageName && x.Username == userName).Count(); if (pageCount > 0) { PageHits pageHitsModel = new PageHits(); pageHitsModel.PageName = pageName; pageHitsModel.Username = userName; PageHits updateHit = db.PageHitsEntity.Where(f => f.PageName == pageHitsModel.PageName && f.Username == pageHitsModel.Username).FirstOrDefault(); updateHit.Hit += 1; updateHit.LastVisitStamp = hitTimeStamp; db.Entry(updateHit).State = EntityState.Modified; db.SaveChanges(); } else { PageHits pageHitsModel = new PageHits(); pageHitsModel.PageName = pageName; pageHitsModel.Username = userName; pageHitsModel.Hit = 1; pageHitsModel.LastVisitStamp = hitTimeStamp; db.PageHitsEntity.Add(pageHitsModel); db.SaveChanges(); } }
public PageHit(string page, string ip) { UserType user = UserCache.GetFromCache(0, HttpContext.Current.Request.UserHostAddress); if (user == null) { return; } PageHits p = new PageHits(page, ip, user.UserID, "PageHit"); if (!p.NeedUpdate()) { p.DoUpdate(); } }
public ActionResult Index() { DashboardViewModel vm = new DashboardViewModel(); List <Users> userVM = db.UserEntity.OrderBy(o => o.Id).ToList(); List <PageHits> pageHitsVM = db.PageHitsEntity.OrderByDescending(o => o.Hit).ToList(); List <VisitorStatistics> visitorStatsVM = db.VisitorStatisticsEntity.OrderBy(o => o.Id).ToList(); List <Courses> coursesVM = db.CoursesEntity.OrderBy(o => o.Id).ToList(); List <Search> searchVM = db.SearchEntity.OrderByDescending(o => o.Hit).ToList(); List <StudentCourses> studentCoursesVM = db.StudentCourseEntity.OrderBy(o => o.Id).ToList(); List <StudentExam> examVM = db.StudentExamEntity.ToList(); //analytics data int correctAns = 0; int inCorrectAns = 0; String message = ""; List <StudentExam> studentExams = db.StudentExamEntity.ToList(); for (int i = 0; i < studentExams.Count; i++) { if (studentExams.ElementAt(i).Correct.Equals("Correct")) { correctAns++; } else { inCorrectAns++; } } ViewBag.totalTestTakers = db.StudentExamEntity.Count() / 5; ViewBag.totalCorrect = correctAns; ViewBag.totalIncorrect = inCorrectAns; ViewBag.totalRatio = correctAns / inCorrectAns; //counts ViewBag.totalUserCount = db.UserEntity.Count(); ViewBag.totalStudents = db.UserEntity.Where(u => u.UserRole == "Student").Count(); ViewBag.totalLecturers = db.UserEntity.Where(u => u.UserRole == "Lecturer").Count(); ViewBag.totalPageHits = db.PageHitsEntity.Count(); PageHits mostViewedPage = db.PageHitsEntity.OrderByDescending(u => u.Hit).FirstOrDefault(); ViewBag.mostViewedPageHit = mostViewedPage.Hit; ViewBag.mostViewedPage = mostViewedPage.PageName; ViewBag.mostViewedVisitDate = mostViewedPage.LastVisitStamp; ViewBag.totalVisitData = db.PageHitsEntity.Count(); //Visitor stats data List <VisitorStatistics> visitorData = db.VisitorStatisticsEntity.ToList(); //Lists //List<String> countryData = new List<string>(); List <String> countryDataTemp = new List <string>(); //List<String> osData = new List<string>(); List <String> osDataTemp = new List <string>(); //List<String> deviceData = new List<string>(); List <String> deviceDataTemp = new List <string>(); //List<String> browserData = new List<string>(); List <String> browserDataTemp = new List <string>(); //Filling all lists with datadas for (int i = 0; i < visitorData.Count; i++) { countryDataTemp.Add(visitorData.ElementAt(i).Country.ToString()); osDataTemp.Add(visitorData.ElementAt(i).OperatingSystem.ToString()); deviceDataTemp.Add(visitorData.ElementAt(i).Device.ToString()); browserDataTemp.Add(visitorData.ElementAt(i).BrowserName.ToString()); } List <String> countryData = countryDataTemp.Distinct().ToList <String>(); List <String> osData = osDataTemp.Distinct().ToList <String>(); List <String> deviceData = deviceDataTemp.Distinct().ToList <String>(); List <String> browserData = browserDataTemp.Distinct().ToList <String>(); countryData.Remove("localhost"); ViewBag.totalCountry = countryData.Count; ViewBag.totalOS = osData.Count; ViewBag.totalDevice = deviceData.Count; ViewBag.totalBrowser = browserData.Count; ViewBag.Country = countryData; ViewBag.OS = osData; ViewBag.Device = deviceData; ViewBag.Browser = browserData; //course info List <Courses> courseData = db.CoursesEntity.ToList(); List <String> lecturerDataTemp = new List <String>(); ViewBag.totalCourses = db.CoursesEntity.Count(); int totalCredits = 0; for (int i = 0; i < courseData.Count; i++) { totalCredits += courseData.ElementAt(i).CourseCredits; lecturerDataTemp.Add(courseData.ElementAt(i).LecturerName); } List <String> lecturerData = lecturerDataTemp.Distinct().ToList <String>(); //enrolled courses List <StudentCourses> studentCourseData = db.StudentCourseEntity.ToList(); List <String> studentCourseTemp = new List <String>(); int enrolledCourseAmount = 0; int enrolledAchievedCredits = 0; for (int i = 0; i < studentCourseData.Count; i++) { studentCourseTemp.Add(studentCourseData.ElementAt(i).Username); enrolledCourseAmount++; enrolledAchievedCredits += studentCourseData.ElementAt(i).CourseCredits; } List <String> studentCourse = studentCourseTemp.Distinct().ToList <String>(); ViewBag.studentCount = studentCourse.Count; ViewBag.enrolledCourseAmount = enrolledCourseAmount; ViewBag.enrolledAchievedCredits = enrolledAchievedCredits; //search stats Search search = db.SearchEntity.OrderByDescending(o => o.Hit).First(); ViewBag.mostSearchedKeyword = search.Keyword; ViewBag.mostSearchedKeywordHit = search.Hit; ViewBag.amountSearchKeyword = db.SearchEntity.Count(); ViewBag.totalCredits = totalCredits; ViewBag.totalLecturers = lecturerData.Count; vm.UsersVM = userVM; vm.PageHitsVM = pageHitsVM; vm.VisitorStatsVM = visitorStatsVM; vm.CoursesVM = coursesVM; vm.SearchVM = searchVM; vm.StudentCoursesVM = studentCoursesVM; vm.ExamVM = examVM; pageHits.updatePageHit("Dashboard/Index", User.Identity.Name); return(View(vm)); }