public ActionResult Register(Register register)
        {
            if (ModelState.IsValid)
            {
                if (!String.Equals(register.User.PW, register.ConfirmPassword))
                {
                    ModelState.AddModelError("", "Password and confirm password does not match");
                    return View(register);
                }

                var user = db.Users.Where(e => e.UserName == register.User.UserName).FirstOrDefault();

                if (user != null)
                {
                    ModelState.AddModelError("", "Username already exists");
                    return View(register);
                }

                var userEmail = db.Users.Where(e => e.Email == register.Email).FirstOrDefault();

                if (userEmail != null)
                {
                    ModelState.AddModelError("", "Email already exists");
                    return View(register);
                }

                register.User.PW = Convert.ToBase64String(
                    new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(
                        Encoding.ASCII.GetBytes(register.ConfirmPassword)));
                register.User.SignUpDateTime = DateTime.Now;
                register.User.Email = register.Email;
                register.User.Active = true;

                var newUser = register.User;

                db.Users.Add(newUser);
                db.SaveChanges();

                using (var mySmtp = new MySmtpClient())
                {
                    using (var message = new MyEmail(newUser.Email))
                    {
                        message.Subject = "Welcome to Crafty Losers!";
                        message.Body = "Welcome to Crafty Losers!  Good luck!";
                        mySmtp.Send(message);
                    }
                }

                IFormsAuthenticationService formsService = new FormsAuthenticationService();
                    formsService.SignIn(newUser.UserName, true);

            }
            else
            {
                return View(register);
            }

            return RedirectToAction("Index", "Home");
        }
        public ActionResult ResetPassword(ForgotUserNameOrPassword forgotUserNameOrPassword)
        {
            if (ModelState.IsValid)
            {
                var user = db.Users.Where(e => e.Email == forgotUserNameOrPassword.Email).FirstOrDefault();

                if (user != null)
                {
                    string newPassword = Guid.NewGuid().ToString().Split('-')[4];
                    user.PW = Convert.ToBase64String(
                        new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(
                            Encoding.ASCII.GetBytes(newPassword)));

                    db.Entry(user).State = EntityState.Modified;
                    db.SaveChanges();

                    using (var mySmtp = new MySmtpClient())
                    {
                        using (var message = new MyEmail(user.Email))
                        {
                            message.Subject = "Crafty Loser Password resest notification";
                            message.Body = "New password is " + newPassword;
                            mySmtp.Send(message);
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Email not found.");
                    return View(forgotUserNameOrPassword);
                }
            }
            else
            {
                return View(forgotUserNameOrPassword);
            }

            return RedirectToAction("ResetPasswordNotification");
        }
        public ActionResult ForgotUsername(ForgotUserNameOrPassword forgotUserNameOrPassword)
        {
            if (ModelState.IsValid)
            {
                var user = db.Users.Where(e => e.Email == forgotUserNameOrPassword.Email).FirstOrDefault();

                if (user != null)
                {
                    using (var mySmtp = new MySmtpClient())
                    {
                        using (var message = new MyEmail(user.Email))
                        {
                            message.Subject = "Crafty Loser username request";
                            message.Body = "Username is " + user.UserName;
                            mySmtp.Send(message);
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Email not found.");
                    return View(forgotUserNameOrPassword);
                }
            }
            else
            {
                return View(forgotUserNameOrPassword);
            }

            return RedirectToAction("ForgotUsernameNotification");
        }