public ActionResult RecuperarSenha(string email, string button, string codigo, string senha, string confirmarsenha)
        {
            string Senha = "^(?=.*[0-9].*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$";

            if (button == "enviar")
            {
                int codigoUsu;
                codigoUsu = usuarioServices.GeraCodigo();
                Usuario usu = db.Usuario.Where(t => t.Email == email).ToList().FirstOrDefault();
                if (usu == null)
                {
                    ModelState.AddModelError("", "O email informado não está cadastrado em nossa base.");
                    ViewBag.Email  = "active";
                    ViewBag.Trocar = "";
                    return(View());
                }
                else
                {
                    RecuperarSenha rec = new RecuperarSenha
                    {
                        SenhaId    = 0,
                        UsuarioId  = usu.UsuarioId,
                        Vencimento = DateTime.Now.AddDays(1),
                        Valido     = true,
                        Codigo     = codigoUsu
                    };

                    if (ModelState.IsValid)
                    {
                        db.RecuperarSenha.Add(rec);
                        db.SaveChanges();
                        TempData["MSG"] = Funcoes.EnviarEmail(usu.Email, "RYS - Recuperar Senha", "<div style= 'background:rgb(245,245,245); width:760px; padding-bottom:30px '>" +
                                                              "			<h1 style= 'margin:0px; padding:16px 30px '>"+
                                                              "           <a href='# '><img src='https://i.imgur.com/tF57D8G.png' alt=''></a>" +
                                                              "			</h1>"+
                                                              "			<div style= 'padding:0px 30px '>"+
                                                              "				<img src='https://imagizer.imageshack.com/v2/700x280q90/923/T6Lqa5.jpg' alt= '' style= 'vertical-align:top 'width= '700' height= '280'>"+
                                                              "			</div>"+
                                                              "			<div style= 'background:rgb(255,255,255); padding:48px 30px 47px; margin:0px 30px 0px; width:640px; '>"+
                                                              "				<div style='color: rgb(0, 0, 0); line-height: 16px; padding-bottom: 17px; font-family: verdana, serif,  'EmojiFont '; font-size: 14px;'>	"+
                                                              "						<br />							"+
                                                              "						Aqui vai o código pra você mudar sua senha:"+
                                                              "				</div>"+
                                                              "				<div style='padding: 19px 20px;  border: 1px solid rgb(234, 234, 234); color: rgb(150, 150, 150); line-height: 20px; font-family: verdana, serif,  'EmojiFont '; font-size: 13px;'> "+ codigoUsu.ToString() +
                                                              "				</div>"+
                                                              "				<div style='color: rgb(0, 0, 0); line-height: 16px; padding-top: 17px; font-family: verdana, serif,  'EmojiFont '; font-size: 14px;'>	"+
                                                              "						Agora é só entrar lá no rate your show e digitar esse código. Depois você cria a nova senha e tá feito"+
                                                              "				</div>"+
                                                              "				<div style='color: rgb(150, 150, 150); padding-top: 27px; font-family: verdana, serif,  'EmojiFont '; font-size: 13px;'>"+
                                                              "					Esse e-mail foi enviado por <a href= ' ' style= 'text-decoration: none;  color: rgb(255, 94, 58);   '>RATE YOUR SHOW</a>."+
                                                              "				</div>"+
                                                              "			</div>"+
                                                              "		</div>");
                        TempData["MSG"] = "success|E-mail enviado com sucesso";
                    }

                    ViewBag.Email  = "";
                    ViewBag.Trocar = "active";

                    return(View());
                }
            }
            else
            {
                ViewBag.Email  = "";
                ViewBag.Trocar = "active";
                int            codigoUsu = Convert.ToInt32(codigo);
                RecuperarSenha rec       = db.RecuperarSenha.Where(t => t.Codigo == codigoUsu).ToList().FirstOrDefault();
                if (rec == null)
                {
                    ModelState.AddModelError("", "Código inválido.");
                    return(View());
                }
                else
                {
                    Usuario usu = db.Usuario.Find(rec.UsuarioId);


                    if (!Regex.IsMatch(senha, Senha))
                    {
                        ModelState.AddModelError("", "A senha do usuário deve conter no minimo 8 caractéres, caractéres especiais, 1 número e 1 letra maiúscula");
                    }

                    if (confirmarsenha != senha)
                    {
                        ModelState.AddModelError("", "Senhas não conhecidem.");
                        return(View());
                    }

                    usu.Senha = crp.CriptografaSHA512(senha);

                    if (rec.Vencimento < DateTime.Now || rec.Valido == false)
                    {
                        ModelState.AddModelError("", "Código expirado.");
                        return(View());
                    }

                    rec.Valido = false;

                    if (ModelState.IsValid)
                    {
                        db.Entry(rec).State = EntityState.Modified;
                        db.SaveChanges();
                        db.Entry(usu).State = EntityState.Modified;
                        db.SaveChanges();
                        return(RedirectToAction("Cadastro", "Home"));
                    }
                    return(View());
                }
            }
        }