public IHttpActionResult PostContrasena(Contrasena contrasena)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.Contrasenas.Add(contrasena);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = contrasena.ContrasenaId }, contrasena);
        }
        public IHttpActionResult PostUsuario(Usuario usuario)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            //creo una variable temporal donde consulto a la tabla roles por el rol que tiene el usuario
            Rol temp = db.Roles.Find(usuario.RolId.RolId);
            //igualo el rol del usuario al rol que recibo nuevo
            usuario.RolId = temp;

            //creo e instancion una lista de contrasenas
            List<Contrasena> aux = new List<Contrasena>();
            //creo e instrancio un objeto contrasena
            Contrasena objContrasena = new Contrasena();
            //igualo el campo de contrasena en el obj contrasena al la del usuario de contrasena
            objContrasena.password = usuario.contrasena;
            //agrego el objContrasena a la lista de contrasenas que cree
                aux.Add(objContrasena);
            //igualo la lista de contrasenas del usuario a la lista que cree e instancie en un inico
            usuario.ContrasenaId = aux;
            //agrego el usuario
            db.Usuarios.Add(usuario);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = usuario.UsuarioId }, usuario);
        }
        public IHttpActionResult PutContrasena(int id, Contrasena contrasena)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != contrasena.ContrasenaId)
            {
                return BadRequest();
            }

            db.Entry(contrasena).State = EntityState.Modified;

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

            return StatusCode(HttpStatusCode.NoContent);
        }
        public IHttpActionResult modificarContrasena(int id, Usuario usuario)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != usuario.UsuarioId)
            {
                return BadRequest();
            }

            //obtengo el usuario viejo de la base de datos
            //el nuevo es el que recibo por parametro
            var objUsuario = db.Usuarios.Find(id);

            //recorro la lista de objetos contrasea para validar que el usuario no ingrese una ya existente
            foreach (Contrasena pass in objUsuario.ContrasenaId)
            {
                //valido que la contrasena en la posicion especifica no se igual a la que recibo del objeto usuario nuevo
                if(pass.password == usuario.contrasena)
                {
                    //lanzo la exepcion de que la contrasena ya existe
                 new Exception("La contrasena " + usuario.contrasena + " ya fue usada por favor utilizar una nueva");
                    //retorno un bad request
                    return BadRequest();
                }

            }
            //creo una instancia de contrasena
            Contrasena objPass = new Contrasena();
            //pregunto si la lista de contrasenas en el objUsuario es mayor a 8
            // para remover la mas vieja
            if (objUsuario.ContrasenaId.Count >= 8)
            {
                //remuevo la contrasena mas vieja para manejar el historial de 8 contrasenas
                db.Contrasenas.Remove(objUsuario.ContrasenaId.First());
            }
            //igualo la contrasena del usuario en la base de datos a la que recibo por parametro
            objUsuario.contrasena = usuario.contrasena;
            //igualo la contrasena del historial a la que tiene el objUsuario
            objPass.password = objUsuario.contrasena;
            //agrego a la lista del objeto usuario la contrasena
            objUsuario.ContrasenaId.Add(objPass);

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

            return StatusCode(HttpStatusCode.NoContent);
        }