public ActionResult NggCreate([DataSourceRequest] DataSourceRequest request, PiFGame pifgame) { Debug.WriteLine("Create Method Fired"); // Perform model binding (fill the game properties and validate it). if (pifgame != null) { // if (pifgame.Count < 1) // { // pifgame.Count = 1; // } Game game = new PiFDbDataContext().Games.Single(g => g.id == pifgame.ID); if (game == null) { ModelState.AddModelError("Name", "Invalid game name."); } else if (SessionNewGamesRepository.One(p => p.ID == game.id) != null) { ModelState.AddModelError("Name", "Duplicate game, please edit existing row."); } else { pifgame.PointWorth = game.PointWorth; pifgame.SteamID = game.SteamID; pifgame.Name = game.Name; pifgame.ID = game.id; SessionNewGamesRepository.Insert(pifgame); } } // Rebind the grid return Json(new[] { pifgame }.ToDataSourceResult(request, ModelState)); }
public ActionResult Complete(string thingID) { if (AccountHelper.CurrentUser.Threads.All(t => t.ThingID != thingID)) { return RedirectToAction("Me", "Account"); } var cpm = new CompletePiFModel { ThingID = AccountHelper.CurrentUser.Threads.Single(t => t.ThingID == thingID) .ThingID }; ViewData["ThreadUsers"] = cpm.ThreadUserList(cpm.ThingID); var db = new PiFDbDataContext(); SessionCompleteGamesRepository.Clear(); foreach (var tg in AccountHelper.CurrentUser.Threads.Single(t => t.ThingID == thingID).ThreadGames) { User user = db.Users.SingleOrDefault(u => u.id == tg.WinnerID); SessionCompleteGamesRepository.Insert( new CompletePiFModel(tg, user != null ? user.Username : string.Empty)); } return View(cpm); }
public ActionResult Complete(CompletePiFModel model) { Thread thread = AccountHelper.CurrentUser.Threads.SingleOrDefault(t => t.ThingID == model.ThingID); if (thread == null) { return RedirectToAction("Me", "Account"); } if (ModelState.IsValid) { var db = new PiFDbDataContext(); thread = db.Threads.Single(t => t.ThingID == model.ThingID); db.ThreadGames.DeleteAllOnSubmit(thread.ThreadGames); var newUsers = new List<User>(); foreach (var pifgame in SessionCompleteGamesRepository.All()) { for (int i = 1; i <= pifgame.Count; i++) { if (pifgame.WinnerUserName == string.Empty) { ModelState.AddModelError("Winner", "All entries must have a winner selected"); break; } User user = db.Users.SingleOrDefault(u => u.Username == pifgame.WinnerUserName); if (user == null && newUsers.Exists(u => u.Username == pifgame.WinnerUserName)) { user = newUsers.Single(u => u.Username == pifgame.WinnerUserName); } if (user == null) { user = new User { Username = pifgame.WinnerUserName, RecordCreatedDate = DateTime.UtcNow }; db.Users.InsertOnSubmit(user); newUsers.Add(user); } var tg = new ThreadGame { ThreadID = thread.id, GameID = pifgame.ID, User = user }; db.ThreadGames.InsertOnSubmit(tg); } if (!ModelState.IsValid) { break; } } if (ModelState.IsValid) { db.SubmitChanges(); return RedirectToAction("View", "PiF", new { thread.ThingID }); } } return View(model); }
public User GetUserByName(string username) { var user = new PiFDbDataContext().Users.SingleOrDefault(x => x.Username == username); if (user != null) { user.SteamAvatar = user.SteamID > 0 ? AccountHelper.GetSteamPlayerSummary(user.SteamID)["avatarmedium"].Value<string>() : "http://media.steampowered.com/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_medium.jpg"; } else { user = new User { SteamAvatar = "http://media.steampowered.com/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_medium.jpg" }; } return user; }
public ActionResult Index(int page = 1) { const int pageSize = 15; var context = new PiFDbDataContext(); if (openThreads == null) { openThreads = CompiledQuery.Compile<PiFDbDataContext, IQueryable<Thread>>( ctx => ctx.Threads.Where(c => c.EndDate.CompareTo(SqlDateTime.MinValue.Value) != 0)); } int threadCount = openThreads.Invoke(context).Count(); double totalPages = (double)threadCount / pageSize; List<Thread> pifs = openThreads.Invoke(context).Skip((page - 1) * pageSize).Take(pageSize).ToList(); ViewBag.TotalPages = (int)Math.Ceiling(totalPages); ViewBag.ThreadCount = threadCount; ViewBag.CurrentPage = page; ViewBag.PageSize = pageSize; return View(Utilities.GetThreads(pifs)); }
public ActionResult EggCreate([DataSourceRequest] DataSourceRequest request, PiFGame pifgame) { // Perform model binding (fill the game properties and validate it). if (pifgame != null && ModelState.IsValid) { Game game = new PiFDbDataContext().Games.FirstOrDefault(g => g.Name == pifgame.Name); if (game == null) { ModelState.AddModelError("Name", "Invalid game name."); } else if (SessionEditGamesRepository.One(p => p.ID == game.id) != null) { ModelState.AddModelError("Name", "Duplicate game, please edit existing row."); } else { pifgame = new PiFGame(pifgame.Count, game); SessionEditGamesRepository.Insert(pifgame); } } // Rebind the grid return Json(new[] { pifgame }.ToDataSourceResult(request, ModelState)); }
public ActionResult New(NewPiFModel model) { if (!SessionNewGamesRepository.All().Any()) { ModelState.AddModelError("NewGameGrid", "At least 1 game is required to PiF"); return View(model); } string thingID = string.Empty; bool debug; #if DEBUG // We don't want to send an actual Self.PlayItForward thread to reddit if we are debugging, we will generate a random string instead debug = true; #endif if (debug == false) { dynamic response; try { response = PostPiF( model.ThreadTitle, model.SelfText, Session["ModHash"].ToString(), model.Captcha, Session["CaptchaID"].ToString()); } catch (WebException) { ModelState.AddModelError("Submit", "Reddit is currently down."); return View(model); } if (response["errors"].Length > 0) { Session["CaptchaID"] = response["captcha"]; model.CaptchaRequired = !string.IsNullOrWhiteSpace(Session["CaptchaID"].ToString()); ModelState.AddModelError("Submit", Utilities.RedditError(response["errors"][0][0])); return View(model); } Session["CaptchaID"] = null; thingID = response["data"]["id"]; } if (ModelState.IsValid) { var db = new PiFDbDataContext(); var r = new Random(); var thread = new Thread { EndDate = SqlDateTime.MinValue.Value, CreatedDate = DateTime.UtcNow, Title = model.ThreadTitle, ThingID = debug == false ? thingID : string.Format( "{0}{1}{2}{3}{4}", (char)r.Next(97, 123), (char)r.Next(97, 123), (char)r.Next(97, 123), (char)r.Next(97, 123), (char)r.Next(97, 123)), UserID = AccountHelper.CurrentUser.id }; foreach (var pifgame in SessionNewGamesRepository.All()) { for (int i = 1; i <= pifgame.Count; i++) { thread.ThreadGames.Add(new ThreadGame { Thread = thread, GameID = pifgame.ID }); } } // Get a typed table to run queries and insert the data into the table. db.Threads.InsertOnSubmit(thread); db.SubmitChanges(); SessionNewGamesRepository.Clear(); // TODO: Handle errors. return RedirectToAction("Edit", "PiF", new { thread.ThingID }); } // If we got this far, something failed, redisplay form return View(model); }
public ActionResult Edit(EditPiFModel model) { Thread thread = AccountHelper.CurrentUser.Threads.SingleOrDefault(t => t.ThingID == model.ThingID); if (thread == null) { return RedirectToAction("Profile", "Account"); } var db = new PiFDbDataContext(); thread = db.Threads.Single(t => t.ThingID == model.ThingID); db.ThreadGames.DeleteAllOnSubmit(thread.ThreadGames); foreach (var pifgame in SessionEditGamesRepository.All()) { for (int i = 1; i <= pifgame.Count; i++) { var tg = new ThreadGame { Thread = thread, GameID = pifgame.ID }; db.ThreadGames.InsertOnSubmit(tg); } } db.SubmitChanges(); return View(model); }
public JsonResult GetGames([DataSourceRequest] DataSourceRequest request) { IEnumerable games = new PiFDbDataContext().Games.ToDataSourceResult(request, o => new { o.Name, ID = o.id }).Data; return Json(games, JsonRequestBehavior.AllowGet); }
/// <summary> /// Adds a user to the database and returns the user object. /// </summary> /// <param name="username">The username for the user to add.</param> /// <returns>The added user object.</returns> private static User AddUser(string username) { var ip = new UserIP { CreatedDate = DateTime.UtcNow, HashedIP = Utilities.GetHash(HttpContext.Current.Request.UserHostAddress) }; var user = new User { Username = username, RecordCreatedDate = DateTime.UtcNow }; user.UserIPs.Add(ip); var db = new PiFDbDataContext(); db.Users.InsertOnSubmit(user); db.SubmitChanges(); return user; }