public ActionResult Cadastro([Bind(Include = "Nome,Email,Senha,DatadeNascimento,Sexo,ConfirmarSenha,TermosdeUso")] CadastroUsuario usuario, string button, string email, string senha)
        {
            ViewBag.Sexo = new SelectList(Enum.GetValues(typeof(Sexo)));


            string Senha = "^(?=.*[0-9].*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$";

            if (button == "cadastrar")
            {
                ViewBag.Cadastro = "active";
                ViewBag.Login    = "";

                ViewBag.Active = false;

                if (!usuario.TermosdeUso)
                {
                    ModelState.AddModelError("", "É Necessário aceitar os Termos de Uso.");
                    TempData["erro"] = "ok";
                    return(View(usuario));
                }

                if (usuario.Nome.Length < 3 || usuario.Nome.Length > 250)
                {
                    ModelState.AddModelError("", "O nome do usuário deve conter entre 3 e 250 caractéres.");
                    TempData["erro"] = "ok";
                    return(View(usuario));
                }

                if (!Regex.IsMatch(usuario.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");
                    TempData["erro"] = "ok";
                    return(View(usuario));
                }


                if (usuario.Senha != usuario.ConfirmarSenha)
                {
                    ModelState.AddModelError("", "Senhas não conhecidem.");
                    TempData["erro"] = "ok";
                    return(View(usuario));
                }
                Usuario usu = new Usuario
                {
                    DatadeNascimento  = usuario.DatadeNascimento,
                    Nome              = usuario.Nome,
                    Senha             = crp.CriptografaSHA512(usuario.Senha),
                    TipoUsuario       = TipoUsuario.Comum,
                    Bloqueado         = Bloqueado.Não,
                    Inativo           = Inativo.Não,
                    Sexo              = usuario.Sexo,
                    Email             = usuario.Email,
                    SerieNotificacoes = true,
                    EpiNotificacoes   = true,
                    Spoiler           = false
                };

                if (!usuarioServices.EmailWhere(usuario.Email))
                {
                    if (ModelState.IsValid)
                    {
                        db.Usuario.Add(usu);
                        db.SaveChanges();
                        TempData["MSG"] = Funcoes.EnviarEmail(usuario.Email, "Cadastro Rate Your Show", "<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/921/0vhXWJ.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(150, 150, 150); line-height: 16px; padding-bottom: 17px; font-family: verdana, serif, 'EmojiFont'; font-size: 14px;'>	"+
                                                              "						<br />							"+
                                                              "						 Bem-vindo ao Rate Your Show, <span style='text-decoration: none;  color: rgb(255, 94, 58);'>"+ usu.Nome + "!</span> " +
                                                              "						<p style ='color: rgb(150, 150, 150); margin-top: 15px; line-height: 20px; font-family: verdana, serif, 'EmojiFont'; font-size: 13px;''>Estamos felizes porque você agora faz parte da nossa comunidade que cresce cada vez mais!"+
                                                              "						Com o Rate Your Show, você pode manter um controle das suas séries e compartilha-las com outros membros da comunidade.</p>"+
                                                              "				</div>			"+
                                                              "				<div style='color: rgb(150, 150, 150); padding-top: 27px; font-family: verdana, serif, 'EmojiFont'; font-size: 13px;'>"+
                                                              "					Com amor, <a href='' style='text-decoration: none;  color: rgb(255, 94, 58); text-transform: uppercase; '>Rate Your Show</a>."+
                                                              "				</div>"+
                                                              "			</div>"+
                                                              "		</div>");
                        TempData["Sucesso"] = "ok";
                        return(RedirectToAction("Cadastro"));
                    }
                    return(View());
                }
                else
                {
                    ModelState.AddModelError("", "O email informado já está cadastrado em nossa base.");
                    TempData["erro"] = "ok";
                    return(View());
                }
            }
            else
            {
                ViewBag.Cadastro = "";
                ViewBag.Login    = "******";
                ViewBag.Active   = false;
                Usuario usu = db.Usuario.Where(t => t.Email == email).ToList().FirstOrDefault();
                if (usu != null)
                {
                    if (usu.Senha != crp.CriptografaSHA512(senha))
                    {
                        ModelState.AddModelError("", "Senha Incorreta!");
                        return(View());
                    }

                    if (usu.Bloqueado == Bloqueado.Sim)
                    {
                        ModelState.AddModelError("", "Usuario Bloqueado!");
                        return(View());
                    }

                    string permissoes = "";
                    permissoes += Enum.GetName(typeof(TipoUsuario), usu.TipoUsuario);

                    permissoes = permissoes.Substring(0, permissoes.Length - 1);
                    FormsAuthentication.SetAuthCookie(usu.Email, false);
                    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, usu.Email, DateTime.Now, DateTime.Now.AddMinutes(30), false, permissoes);
                    string     hash   = FormsAuthentication.Encrypt(ticket);
                    HttpCookie cookie = new HttpCookie("UsuId", usu.UsuarioId.ToString());
                    if (ticket.IsPersistent)
                    {
                        cookie.Expires = ticket.Expiration;
                    }
                    Response.Cookies.Add(cookie);

                    if (usu.Inativo == Inativo.Sim)
                    {
                        return(RedirectToAction("UsuarioInativo", "Home"));
                    }
                    TempData["Login"] = "******";
                    return(RedirectToAction("Index", "LandingPage"));
                }
                else
                {
                    ModelState.AddModelError("", "E-mail Não Cadastrado");
                    return(View());
                }
            }
        }