//Guarda token de login (S)
 public async Task almacenarTokenLogin(ProyectoTokenLogin token)
 {
     using (var db = new MapeoProyecto())
     {
         db.tokenLogin.Add(token);
         await db.SaveChangesAsync();
     }
 }
 //Trae el usuario (S)
 public ProyectoRegistro mostrarDatosRecuperar(ProyectoRegistro usuario)
 {
     using (var bd = new MapeoProyecto())
     {
         ProyectoRegistro usuario1 = new MapeoProyecto().registro.Where(x => x.Correo.ToUpper().Equals(usuario.Correo.ToUpper())).FirstOrDefault();
         return(usuario1);
     }
 }
 //Generar token recuperar(S)
 public void insertarToken(ProyectoToken token)
 {
     using (var db = new MapeoProyecto())
     {
         db.token.Add(token);
         db.SaveChanges();
     }
 }
 //Elimina el token al cerrar sesion
 public async Task eliminarToken(ProyectoTokenLogin token)
 {
     using (var db = new MapeoProyecto())
     {
         ProyectoTokenLogin tokenC = db.tokenLogin.Where(x => x.IdUsuario == token.IdUsuario).FirstOrDefault();
         db.tokenLogin.Remove(tokenC);
         await db.SaveChangesAsync();
     }
 }
        //Validacion de login usuario (S)
        public async Task <ProyectoRegistro> login(LoginProyectoRequest usuarioR)
        {
            using (var db = new MapeoProyecto())
            {
                ProyectoRegistro usuario = await db.registro.Where(x => x.Correo.ToUpper().Equals(usuarioR.correo.ToUpper()) && x.Contrasena.Equals(usuarioR.contrasena))
                                           .FirstOrDefaultAsync();

                return(usuario);
            }
        }
 //Eliminacion de registro (S)
 public async Task eliminarRegistro(ProyectoRegistro proyecto)
 {
     using (var db = new MapeoProyecto())
     {
         ProyectoRegistro usuarioAnterior = db.registro.Where(x => x.IdUsuario == proyecto.IdUsuario).FirstOrDefault();
         usuarioAnterior.Sesion = "inactivo";
         db.registro.Attach(usuarioAnterior);
         var entry = db.Entry(usuarioAnterior);
         entry.State = EntityState.Modified;
         await db.SaveChangesAsync();
     }
 }
        //Modifica contraseña (recuperar)
        public async Task updateClave(ProyectoRegistro proyecto)
        {
            using (var db = new MapeoProyecto())
            {
                ProyectoRegistro usuarioAnterior = db.registro.Where(x => x.IdUsuario == proyecto.IdUsuario).First();
                usuarioAnterior.Contrasena = proyecto.Contrasena;

                db.registro.Attach(usuarioAnterior);

                var entry = db.Entry(usuarioAnterior);
                entry.State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
        }
 //Inserta registro Usuario (S)
 public async Task insertarUsuario(ProyectoRegistroRequest usuarioR)
 {
     using (var db = new MapeoProyecto())
     {
         ProyectoRegistro registro = new ProyectoRegistro();
         registro.Nombre          = usuarioR.nombre;
         registro.Apellido        = usuarioR.apellido;
         registro.Celular         = usuarioR.celular;
         registro.Correo          = usuarioR.correo;
         registro.Usuario         = usuarioR.usuario;
         registro.Contrasena      = usuarioR.contrasena;
         registro.FechaNacimiento = usuarioR.fechaNacimiento;
         registro.Direccion       = usuarioR.direccion;
         registro.Cedula          = usuarioR.cedula;
         registro.Sesion          = "activo";
         db.registro.Add(registro);
         await db.SaveChangesAsync();
     }
 }
        //Modifica registro (S)
        public async Task modificarUsuario(ProyectoRegistro usuario)
        {
            using (var db = new MapeoProyecto())
            {
                ProyectoRegistro usuarioAnterior = db.registro.Where(x => x.IdUsuario == usuario.IdUsuario).FirstOrDefault();
                usuarioAnterior.Nombre          = usuario.Nombre;
                usuarioAnterior.Apellido        = usuario.Apellido;
                usuarioAnterior.Celular         = usuario.Celular;
                usuarioAnterior.Correo          = usuario.Correo;
                usuarioAnterior.Usuario         = usuario.Usuario;
                usuarioAnterior.Contrasena      = usuario.Contrasena;
                usuarioAnterior.FechaNacimiento = usuario.FechaNacimiento;
                usuarioAnterior.Direccion       = usuario.Direccion;
                usuarioAnterior.Cedula          = usuario.Cedula;

                db.registro.Attach(usuarioAnterior);

                var entry = db.Entry(usuarioAnterior);
                entry.State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
        }