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();
            }
        }
示例#2
0
        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));
        }