public IActionResult CambioDeContraseña(string correo, string contra, string confcontra)
        {
            correosusuariosContext Context = new correosusuariosContext();
            UsRepository           repos   = new UsRepository(Context);
            var us = repos.GetUsByCorreo(correo);

            try
            {
                if (contra == confcontra)
                {
                    us.Contrasena = HashinHelper.GetHash(contra);
                    if (us.Contrasena == contra)
                    {
                        ModelState.AddModelError("", "La nueva contraseña debe ser distinta a la actúal");
                        return(View(contra));
                    }
                    else
                    {
                        repos.Update(us);
                        return(RedirectToAction("SesionIniciada"));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Las contraseñas no coinciden.");
                    return(View());
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(contra, confcontra));
            }
        }
        public IActionResult ActivacionDeCuenta(int clave)
        {
            correosusuariosContext Context = new correosusuariosContext();
            UsRepository           repos   = new UsRepository(Context);
            var usuario = Context.Usuario.FirstOrDefault(x => x.ClaveAct == clave);

            if (usuario != null && usuario.Activo == 0)
            {
                var cla = usuario.ClaveAct;
                if (clave == cla)
                {
                    usuario.Activo = 1;
                    repos.Update(usuario);
                    return(RedirectToAction("InicioDeSesion"));
                }
                else
                {
                    ModelState.AddModelError("", "No ha introducido la clave correcta.");
                    return(View());
                }
            }
            else
            {
                ModelState.AddModelError("", "Usuario no encontrado.");
                return(View());
            }
        }
        public IActionResult RecuperarContraseña(string correo)
        {
            try
            {
                correosusuariosContext Context = new correosusuariosContext();
                UsRepository           repos   = new UsRepository(Context);
                var us = repos.GetUsByCorreo(correo);
                if (us != null)
                {
                    var         contra  = ClaveHelper.ClaveActivacion();
                    MailMessage message = new MailMessage();
                    message.From = new MailAddress("*****@*****.**", "PelisPlus");
                    message.To.Add(correo);
                    message.Subject = "Se ha enviado un correo con una contraseña temporal para iniciar sesión";
                    message.Body    = $"Esta contraseña solo sirve una única vez: {contra}";

                    SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
                    client.EnableSsl             = true;
                    client.UseDefaultCredentials = false;
                    client.Credentials           = new NetworkCredential("*****@*****.**", "sistemas7g");
                    client.Send(message);
                    us.Contrasena = HashinHelper.GetHash(contra.ToString());
                    repos.Update(us);
                    return(RedirectToAction("InicioDeSesion"));
                }
                else
                {
                    ModelState.AddModelError("", "Este correo no se encuentra registrado.");
                    return(View());
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View((object)correo));
            }
        }