Exemple #1
0
        //Account
        public ActionResult Index()
        {
            if (Session["UserId"] != null)
            {
                var userId = Int32.Parse(Session["UserId"].ToString());

                using (var dbContext = new rlnews.DAL.RlnewsDb())
                {
                    var user = dbContext.Users.FirstOrDefault(x => x.UserId == userId);

                    var userActivity = dbContext.Activity.Where(x => x.UserId == userId).ToList();

                    if (user != null)
                    {
                        var userDetails = new UserViewModel()
                        {
                            Email        = user.Email,
                            Username     = user.Username,
                            TeamName     = user.TeamName,
                            ActivityList = userActivity
                        };

                        return(View(userDetails));
                    }
                }
            }

            return(RedirectToAction("Login"));
        }
Exemple #2
0
        public ActionResult Login(UserViewModel loginForm)
        {
            using (var dbContext = new rlnews.DAL.RlnewsDb())
            {
                var user = dbContext.Users.FirstOrDefault(x => x.Email == loginForm.Email);

                if (user != null)
                {
                    var salt       = user.PassSalt;
                    var hashedPass = GenerateHash(loginForm.Password, salt);

                    if (hashedPass != user.Password)
                    {
                        ModelState.AddModelError("", "Sorry, the email/password you entered was incorrect");
                    }
                    else
                    {
                        Session["UserId"]   = user.UserId.ToString();
                        Session["Username"] = user.Username;

                        ModelState.Clear();

                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Sorry, the email/password you entered was incorrect");
                }
            }

            return(View());
        }
Exemple #3
0
        //Get Most Discussed News
        public ActionResult Discussed(int?page)
        {
            ViewData["FeedTitle"] = "Most Discussed News";

            int pageSize   = 15;
            int pageNumber = (page ?? 1);

            DateTime dateTime = DateTime.Now;
            DateTime now      = DateTime.Now;

            dateTime = dateTime.AddHours(-24);

            var dbContext = new rlnews.DAL.RlnewsDb();
            var dbObj     = dbContext.NewsItems.OrderByDescending(x => x.CommentTotal)
                            .Where(x => x.PubDateTime > dateTime && x.PubDateTime <= now)
                            .Where(x => x.CommentTotal > 0)
                            .ToPagedList(pageNumber, pageSize);

            var newsModel = new FeedViewModel
            {
                NewsFeedList    = dbObj,
                SidebarList     = SidebarHeadlines(),
                RelatedNewsList = RealtedNewsList()
            };

            return(View("~/Views/News/Index.cshtml", newsModel));
        }
Exemple #4
0
        //Get Trending News
        public ActionResult Login(int?page)
        {
            var userTeam = GetUserTeam();

            if (userTeam == null)
            {
                ViewData["TeamName"]  = "Castleford Tigers";
                ViewData["FeedTitle"] = "Castleford Tigers";

                int pageSize   = 15;
                int pageNumber = (page ?? 1);

                var dbContext = new rlnews.DAL.RlnewsDb();
                var dbObj     = dbContext.NewsItems
                                .OrderByDescending(x => x.PubDateTime)
                                .Where(x => x.Title.Contains("Castleford") ||
                                       x.Description.Contains("Castleford") ||
                                       x.Title.Contains("Tigers") ||
                                       x.Description.Contains("Tigers"))
                                .ToPagedList(pageNumber, pageSize);

                var newsModel = new FeedViewModel
                {
                    NewsFeedList = dbObj,
                    SidebarList  = SidebarHeadlines()
                };

                return(View("~/Views/MyTeam/Index.cshtml", newsModel));
            }

            return(RedirectToAction("latest"));
        }
Exemple #5
0
        public ActionResult DislikeNewsItem(string newsid, string userid)
        {
            if (Session["UserId"] != null)
            {
                //Initalize dbContext
                var dbContext = new rlnews.DAL.RlnewsDb();

                //Create newsitem object and add to dislike total
                var dbNews = dbContext.NewsItems.Find(Int32.Parse(newsid));

                dbNews.DislikeTotal = dbNews.DislikeTotal + 1;

                //Create a dislike activity object and insert it into the database
                var dbActvity = new rlnews.DAL.Models.Activity
                {
                    NewsId          = Int32.Parse(newsid),
                    UserId          = Int32.Parse(Session["UserId"].ToString()),
                    ActivityType    = "Dislike",
                    ActivityDate    = DateTime.Now,
                    ActivityContent = Session["Username"] + " disliked a news article"
                };

                dbContext.Activity.Add(dbActvity);

                dbContext.SaveChanges();

                //Return the new score for this news item
                return(Json(new { success = true, message = dbNews.LikeTotal - dbNews.DislikeTotal }, JsonRequestBehavior.AllowGet));
            }

            return(null);
        }
Exemple #6
0
        public List <RelatedNews> RealtedNewsList()
        {
            var dbContext = new rlnews.DAL.RlnewsDb();

            var relatedNews = dbContext.RelatedNews.ToList();

            return(relatedNews);
        }
Exemple #7
0
        public void AddViewToNewsItem(string newsid)
        {
            var dbContext = new rlnews.DAL.RlnewsDb();

            var dbObj = dbContext.NewsItems.Find(Int32.Parse(newsid));

            dbObj.Views = dbObj.Views + 1;

            dbContext.SaveChanges();
        }
Exemple #8
0
        public ActionResult Settings(UserViewModel settingsForm)
        {
            var teamList = new UserViewModel()
            {
                TeamList = TeamList()
            };

            if (ModelState.IsValid)
            {
                using (var dbContext = new rlnews.DAL.RlnewsDb())
                {
                    //Check email address and username are unique
                    var takenEmail    = dbContext.Users.FirstOrDefault(x => x.Email == settingsForm.Email);
                    var takenUsername = dbContext.Users.FirstOrDefault(x => x.Username == settingsForm.Username);

                    if (takenEmail != null)
                    {
                        ModelState.AddModelError("", "Sorry - Email address already registered to an account.");
                    }

                    if (takenUsername != null)
                    {
                        ModelState.AddModelError("", "Sorry - Username has already been taken.");
                    }

                    //If validation is passed register user
                    if (ModelState.IsValid)
                    {
                        var dbUser = new rlnews.DAL.Models.User();

                        var salt       = GenerateSalt(10);
                        var hashedPass = GenerateHash(settingsForm.Password, salt);

                        dbUser.Username = settingsForm.Username;
                        dbUser.Email    = settingsForm.Email;
                        dbUser.Password = hashedPass;
                        dbUser.PassSalt = salt;
                        dbUser.TeamName = settingsForm.TeamName;

                        dbContext.Users.Add(dbUser);

                        dbContext.SaveChanges();

                        ModelState.Clear();

                        ViewBag.Message = "Thank you " + settingsForm.Username + ", your account has been successfully registered.";
                    }
                }
            }

            return(View(teamList));
        }
Exemple #9
0
        public List <NewsItem> SidebarHeadlines()
        {
            DateTime nowMinus24 = DateTime.Now;
            DateTime now        = DateTime.Now;

            nowMinus24 = nowMinus24.AddHours(-48);

            var dbContext = new rlnews.DAL.RlnewsDb();

            var topHeadlines = dbContext.NewsItems.OrderByDescending(x => x.Views).Where(x => x.PubDateTime > nowMinus24 && x.PubDateTime <= now).ToList();

            return(topHeadlines);
        }
Exemple #10
0
        private void GetLatestNewsItemDate()
        {
            var dbContext = new rlnews.DAL.RlnewsDb();

            _lastestNewsItem = dbContext.NewsItems
                               .OrderByDescending(x => x.NewsId)
                               .Where(x => x.SourceName == "The Guardian")
                               .Take(1)
                               .ToList();

            foreach (var item in _lastestNewsItem)
            {
                _lastestNewsItemDate = item.PubDateTime;
            }
        }
Exemple #11
0
        //Get Most Discussed News
        public ActionResult Discussed(int?page)
        {
            var userTeam = GetUserTeam();

            if (userTeam != null)
            {
                ViewData["TeamName"]  = userTeam;
                ViewData["FeedTitle"] = "Latest News";

                string[] teamNameSegments = userTeam.Split(' ');

                var teamSegment1 = teamNameSegments[0];
                var teamSegment2 = teamNameSegments[1];

                int pageSize   = 15;
                int pageNumber = (page ?? 1);

                DateTime dateTime = DateTime.Now;
                DateTime now      = DateTime.Now;
                dateTime = dateTime.AddHours(-24);

                var dbContext = new rlnews.DAL.RlnewsDb();
                var dbObj     = dbContext.NewsItems
                                .OrderByDescending(x => x.CommentTotal)
                                .Where(x => x.Title.Contains(teamSegment1) ||
                                       x.Description.Contains(teamSegment1) ||
                                       x.Title.Contains(teamSegment2) ||
                                       x.Description.Contains(teamSegment2)
                                       )
                                .Where(x => x.PubDateTime > dateTime && x.PubDateTime <= now)
                                .Where(x => x.CommentTotal > 0)
                                .ToPagedList(pageNumber, pageSize);

                var newsModel = new FeedViewModel
                {
                    NewsFeedList = dbObj,
                    SidebarList  = SidebarHeadlines()
                };

                return(View("~/Views/MyTeam/Index.cshtml", newsModel));
            }

            return(RedirectToAction("login"));
        }
Exemple #12
0
        public string GetUserTeam()
        {
            if (Session["UserId"] != null)
            {
                var userId = Int32.Parse(Session["UserId"].ToString());

                using (var dbContext = new rlnews.DAL.RlnewsDb())
                {
                    var user = dbContext.Users.FirstOrDefault(x => x.UserId == userId);

                    if (user != null && user.TeamName != null)
                    {
                        return(user.TeamName);
                    }
                }
            }

            return(null);
        }
Exemple #13
0
        //Get All News
        public ActionResult Latest(int?page)
        {
            ViewData["FeedTitle"] = "Latest News";

            int pageSize   = 15;
            int pageNumber = (page ?? 1);

            var dbContext = new rlnews.DAL.RlnewsDb();
            var dbObj     = dbContext.NewsItems.OrderByDescending(x => x.PubDateTime).ToPagedList(pageNumber, pageSize);

            var newsModel = new FeedViewModel
            {
                NewsFeedList    = dbObj,
                SidebarList     = SidebarHeadlines(),
                RelatedNewsList = RealtedNewsList()
            };

            return(View("~/Views/News/Index.cshtml", newsModel));
        }
Exemple #14
0
        public int CheckRelated(string titleRss)
        {
            Distance distance = new Distance();

            var dbContext = new rlnews.DAL.RlnewsDb();

            DateTime nowMinus24 = DateTime.Now;
            DateTime now        = DateTime.Now;

            nowMinus24 = nowMinus24.AddHours(-24);

            var dbObj = dbContext.NewsItems.Where(x => x.PubDateTime > nowMinus24 && x.PubDateTime <= now && x.ClusterType == "Parent");


            foreach (var item in dbObj)
            {
                if (distance.GetMatchScore(titleRss, item.Title) >= 5)
                {
                    return(item.NewsId);
                }
            }
            return(0);
        }
Exemple #15
0
        /// <summary>
        /// Inserts BBC News rss feed data into the database
        /// </summary>
        private void InsertRssData()
        {
            Distance distance = new Distance();

            try
            {
                // create database context
                var dbContext = new rlnews.DAL.RlnewsDb();

                foreach (var newsItem in _feeds)
                {
                    if (IsPostNew(newsItem.PubDateTime))
                    {
                        string clusterType = null;
                        int    parentId    = 0;

                        DateTime nowMinus24 = DateTime.Now;
                        DateTime now        = DateTime.Now;
                        nowMinus24 = nowMinus24.AddHours(-24);

                        if (newsItem.PubDateTime > nowMinus24 && newsItem.PubDateTime <= now)
                        {
                            parentId = distance.CheckRelated(newsItem.Title);
                        }

                        if (parentId > 0)
                        {
                            clusterType = "Child";
                        }
                        else
                        {
                            clusterType = "Parent";
                        }

                        //Increment import counter
                        _importCount++;

                        //create  news item object to add to database
                        var dbObj = new rlnews.DAL.Models.NewsItem
                        {
                            Title       = _validate.TrimNewsHtml(newsItem.Title),
                            SourceName  = newsItem.SourceName,
                            Description = _validate.TrimNewsHtml(newsItem.Description),
                            SourceUrl   = newsItem.SourceUrl,
                            ImageUrl    = newsItem.ImageUrl,
                            PubDateTime = newsItem.PubDateTime,
                            Views       = 0,
                            ClusterType = clusterType
                        };

                        dbContext.NewsItems.Add(dbObj);

                        //Save database changes
                        dbContext.SaveChanges();

                        if (parentId > 0)
                        {
                            //Create related news object to add the database
                            var dbRelated = new rlnews.DAL.Models.RelatedNews
                            {
                                ParentNewsId = parentId,
                                ChildNewsId  = dbObj.NewsId
                            };

                            dbContext.RelatedNews.Add(dbRelated);

                            //Save database changes
                            dbContext.SaveChanges();
                        }
                    }
                }

                if (_importCount == 0)
                {
                    _importMessage = "No new posts found from The Guardian.";
                }
                else
                {
                    _importMessage = "Successfully imported '" + _importCount + "' news items from The Guardian.";
                }
            }
            catch (Exception ex)
            {
                _importMessage = "The Guardian import failed: " + ex;
            }
        }