public async Task <ActionResult> Register(RegisterViewModel model) { lock (m_Lock) { if (ModelState.IsValid) { //insert user into database PasswordHasher hasher = new PasswordHasher(); string pwdhash = hasher.HashPassword(model.Password); using (GamePool2016.Data.GamePoolContext context = new Data.GamePoolContext()) { //does this player exist? var player = context.Players.SingleOrDefault(item => item.UserName == model.UserName); if (player != null) { //user already exists //but if the date created was within a second or two, then they probably double clicked if (player.DateCreated.AddSeconds(2) > DateTime.UtcNow) { return(RedirectToAction("MyPicks", "Picks")); } else { ModelState.AddModelError("", "User already exists"); } } else { Player newPlayer = new Player(); newPlayer.Email = model.Email; newPlayer.UserName = model.UserName; newPlayer.PasswordHash = pwdhash; newPlayer.IsSysadmin = false; newPlayer.Id = Guid.NewGuid().ToString(); newPlayer.DateCreated = DateTime.UtcNow; context.Players.Add(newPlayer); context.SaveChanges(); HttpCookie cookie = new HttpCookie("UserName", model.UserName); Response.Cookies.Add(cookie); FormsAuthentication.SetAuthCookie(model.UserName, true); return(RedirectToAction("MyPicks", "Picks")); } } } return(View(model)); } }
private void AddPoolGames(Pool model) { model.Games.Clear(); using (GamePool2016.Data.GamePoolContext context = new Data.GamePoolContext()) { var games = context.Games.ToList(); foreach (Game game in games.OrderBy(item => item.GameDateTime, new StringToDateTimeComparer())) { model.Games.Add(new PoolGame() { Id = Guid.NewGuid().ToString(), GameId = game.Id, Game = game, PoolId = model.Id, Pool = model, IsSelected = true }); } } }