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));
            }
        }
Example #2
0
 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
             });
         }
     }
 }