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 ActionResult Create([Bind(Include = "Id,CourseName,Coursecredits,LecturerId")] Courses courses)
        {
            if (ModelState.IsValid)
            {
                Users   user      = db.UserEntity.Where(x => x.Id == courses.LecturerId).FirstOrDefault();
                Courses newCourse = new Courses();
                newCourse.CourseName       = courses.CourseName;
                newCourse.CourseCredits    = courses.CourseCredits;
                newCourse.LecturerName     = user.Name;
                newCourse.LecturerLastname = user.Lastname;
                newCourse.LecturerId       = courses.LecturerId;

                db.CoursesEntity.Add(newCourse);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(courses));
        }
        public ActionResult Login(Users users)
        {
            var userCount = db.UserEntity.Where(x => x.Username == users.Username && x.Password == users.Password).Count();

            if (userCount == 0)
            {
                ViewBag.errorMsg = "Error: Invalid Users or Credentials";
                return(View());
            }
            else
            {
                pageHits.updatePageHit("Account/Login", users.Username);
                Users updateLastLogin = db.UserEntity.Where(x => x.Username == users.Username).FirstOrDefault();
                updateLastLogin.LastLogin       = lastLoginStamp;
                db.Entry(updateLastLogin).State = EntityState.Modified;
                db.SaveChanges();
                FormsAuthentication.SetAuthCookie(users.Username, false);
                return(RedirectToAction("Index", "Home"));
            }
        }
        public void updateSearchHit(String Keyword)
        {
            var query = db.SearchEntity.Where(x => x.Keyword == Keyword).Count();

            if (query > 0)
            {
                //search keyword exists
                Search search = db.SearchEntity.Where(x => x.Keyword == Keyword).FirstOrDefault();
                search.Hit            += 1;
                search.SearchTimeStamp = hitTimeStamp;
                db.Entry(search).State = EntityState.Modified;
                db.SaveChanges();
            }
            else
            {
                Search search = new Search();
                search.Keyword         = Keyword;
                search.Hit             = 1;
                search.SearchTimeStamp = hitTimeStamp;
                db.SearchEntity.Add(search);
                db.SaveChanges();
                //search keyword does not exist
            }
        }
        public void collectVisitorData(String browserName, String ipAddr, String userAgent, bool isMobileDev, bool isLocalCon, String sessionID)
        {
            HertsOnlineEntities db = new HertsOnlineEntities();
            VisitorStatistics   visitorStatisticsModel = new VisitorStatistics();
            String visitStamp = DateTime.Now.ToString("dd/MM/yyyy H:mm");

            visitorStatisticsModel.UserSession = sessionID;

            if (isLocalCon)
            {
                //local connection
                visitorStatisticsModel.IPAddress = ipAddr;
                visitorStatisticsModel.Country   = "localhost";
            }
            else
            {
                //external connection
                visitorStatisticsModel.IPAddress = ipAddr;
                visitorStatisticsModel.Country   = getVisitorCountry(ipAddr);
            }
            if (isMobileDev)
            {
                //Mobile device
                visitorStatisticsModel.OperatingSystem = getMobileOS(userAgent);
                visitorStatisticsModel.Device          = getMobileDevice(userAgent);
            }
            else
            {
                //Desktop Device
                visitorStatisticsModel.OperatingSystem = getDesktopOS(userAgent);
                visitorStatisticsModel.Device          = "Desktop";
            }
            visitorStatisticsModel.VisitTimeStamp = visitStamp;

            visitorStatisticsModel.BrowserName = browserName;

            db.VisitorStatisticsEntity.Add(visitorStatisticsModel);
            db.SaveChanges();
        }