//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")); }
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()); }
//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)); }
//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")); }
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); }
public List <RelatedNews> RealtedNewsList() { var dbContext = new rlnews.DAL.RlnewsDb(); var relatedNews = dbContext.RelatedNews.ToList(); return(relatedNews); }
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(); }
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)); }
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); }
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; } }
//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")); }
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); }
//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)); }
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); }
/// <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; } }