public IHttpActionResult cerrarSesion(usuario usuario)
 {
     Bitacora.getInstance().addBitacora(BitacoraActions.SIGN_OUT, usuario.id_usuario);
     return Ok();
 }
        public IHttpActionResult updateUserAndPassword(int id, usuario usuario)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != usuario.id_usuario)
            {
                return BadRequest();
            }
            usuario.password = AES256.encryptPassword(usuario.password);
            usuario.rol = db.rols.Find(usuario.id_rol);
            db.Entry(usuario).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!usuarioExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
        public IHttpActionResult Postusuario(usuario usuario)
        {
            if (!ModelState.IsValid) return BadRequest(ModelState);

            if (usuario.productos==null)
            {

            }
            else
            {
                int count = usuario.productos.Count;

                for (int i = 0; i < usuario.productos.Count; i++)
                {
                    producto pproducto = usuario.productos.ElementAt(i);
                    usuario.productos.Remove(pproducto);
                    usuario.productos.Add(db.productos.Find(pproducto.id_producto));
                }
            }
                usuario.password = AES256.encryptPassword(usuario.password);
                db.usuarios.Add(usuario);
                db.SaveChanges();
                historial_contrasennas historial = new historial_contrasennas();
                historial.id_usuario = usuario.id_usuario;
                historial.contraseña = usuario.password;
                db.historial_contrasennas.Add(historial);
                db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = usuario.id_usuario }, usuario);
        }
        public IHttpActionResult Putprospusuario(int id, usuario pusuario)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != pusuario.id_usuario)
            {
                return BadRequest();
            }
            usuario user = db.usuarios.Find(pusuario.id_usuario);
            db.Entry(user).Collection(p => p.prospectos).Load();

            if (pusuario.prospectos != null)
            {
                int cantProspectos = user.prospectos.Count;
                for (int x = 0; x < cantProspectos; x++)
                {
                    user.prospectos.Remove(user.prospectos.ElementAt(0));
                }

                for (int i = 0; i < pusuario.prospectos.Count; i++)
                {
                    user.prospectos.Add(db.prospectos.Find(pusuario.prospectos.ElementAt(i).id_prospecto));
                }
            }
            db.Entry(user).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!usuarioExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
 public IHttpActionResult Login(usuario usuario)
 {
     string result = AES256.encryptPassword(usuario.password);
     usuario user = db.usuarios.FirstOrDefault(u => u.correo == usuario.correo && u.password == result);
     if (user == null) return NotFound();
     user.rol = db.rols.Find(user.id_rol);
     db.Entry(user.rol).Collection(p => p.permisos).Load();
     sesion sesion = new sesion();
     sesion.fecha = DateTime.Now;
     sesion.id_usuario = user.id_usuario;
     db.sesions.Add(sesion);
     Bitacora.getInstance().addBitacora(BitacoraActions.SIGN_IN, user.id_usuario);
     db.SaveChanges();
     return Ok(user);
 }