public static RegisterViewModel ValidateRegisterViewModel(RegisterViewModel viewModel)
        {
            var player = viewModel.Player;
            viewModel.ListOfErrorMessages.Clear();

            if (string.IsNullOrEmpty(player.Email) || string.IsNullOrEmpty(player.Name) || string.IsNullOrEmpty(player.Password))
            {
                viewModel.ListOfErrorMessages.Add("All fields are required to register.");
            }

            if (!string.IsNullOrEmpty(viewModel.RepeatPassword) && (viewModel.RepeatPassword != player.Password))
            {
                viewModel.ListOfErrorMessages.Add("Your passwords do not match.");
            }

            if (PlayerEmailAlreadyInUse(player))
            {
                viewModel.ListOfErrorMessages.Add("A player with this email already exists");
            }

            return viewModel;
        }
        public ActionResult Register(RegisterViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                viewModel = AccountControllerHelpers.ValidateRegisterViewModel(viewModel);

                if (viewModel.ListOfErrorMessages.Count > 0)
                {
                    viewModel.Settings = this.Settings;
                    viewModel.FormIsInvalid = true;
                    return this.View(viewModel);
                }

                var email = viewModel.Player.Email.ToLower();
                var name = viewModel.Player.Name;
                var password = Md5.CalculateMd5(viewModel.Player.Password);
                var gender = viewModel.Player.Gender;

                var playerCollection = this.Dbh.GetCollection<Player>("Players");

                var newPlayer = new Player
                                    {
                                        Id = BsonObjectId.GenerateNewId().ToString(),
                                        Email = email,
                                        Name = name,
                                        Gender = gender,
                                        Password = password,
                                        Won = 0,
                                        Lost = 0,
                                        Played = 0
                                    };

                playerCollection.Save(newPlayer);

                AutoLogin(newPlayer);

                var response = Email.SendSimpleEmail(newPlayer.Email); // TODO: Change call to this static class

                return this.Redirect(Url.Action("Index", "Players") + "#" + newPlayer.Id);
            }

            return RedirectToAction("Register");
        }
 // GET: /Account/Register
 public ActionResult Register()
 {
     var viewModel = new RegisterViewModel
                         {
                             Player = new Player(),
                             Settings = this.Settings
                         };
     return View(viewModel);
 }