public IHttpActionResult PutPuntuacione(int id, Puntuacione puntuacione)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != puntuacione.ID_Puntuacion)
            {
                return(BadRequest());
            }

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

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

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public IHttpActionResult GetPuntuacione(int id)
        {
            Puntuacione puntuacione = db.Puntuaciones.Find(id);

            if (puntuacione == null)
            {
                return(NotFound());
            }

            return(Ok(puntuacione));
        }
        public IHttpActionResult PostPuntuacione(Puntuacione puntuacione)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.Puntuaciones.Add(puntuacione);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = puntuacione.ID_Puntuacion }, puntuacione));
        }
        public IHttpActionResult DeletePuntuacione(int id)
        {
            Puntuacione puntuacione = db.Puntuaciones.Find(id);

            if (puntuacione == null)
            {
                return(NotFound());
            }

            db.Puntuaciones.Remove(puntuacione);
            db.SaveChanges();

            return(Ok(puntuacione));
        }
        public HttpResponseMessage PostNivele(ModelEditNivel nivel)
        {
            Puntuacione puntuacion = db.Puntuaciones.Where(e => e.ID_Nivel == nivel.ID_Nivel && e.ID_Usuario == nivel.ID_Usuario).First();

            puntuacion.Puntuacion = nivel.Puntuacion;
            try
            {
                db.SaveChanges();
            }
            catch (Exception e) {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Hubo un problema el guardar la puntuacion"));
            }
            return(Request.CreateResponse(HttpStatusCode.OK, "Puntuacion guardada con éxito"));
        }
        // POST: api/Usuarios
        public HttpResponseMessage PostUsuario(Usuario usuario)
        {
            Usuario repetido = db.Usuarios.Where(e => e.ID_Usuario == usuario.ID_Usuario).FirstOrDefault();

            if (repetido != null)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, "Usuario Repetido"));
            }

            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, "Bad Request"));
            }

            db.Usuarios.Add(usuario);
            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, "Ocurrió un error. Intente Nuevamente"));
            }

            //Colores
            Categoria color = new Categoria();

            color.ID_Usuario   = usuario.ID_Usuario;
            color.Imagen       = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Categorias/colores.png";
            color.Nombre       = "Colores";
            color.NombreIngles = "Colors";
            color.Bloqueado    = false;

            db.Categorias.Add(color);

            //Frutas
            Categoria fruta = new Categoria();

            fruta.ID_Usuario   = usuario.ID_Usuario;
            fruta.Imagen       = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Categorias/frutas.png";
            fruta.NombreIngles = "Fruits";
            fruta.Nombre       = "Frutas";
            fruta.Bloqueado    = false;

            db.Categorias.Add(fruta);

            //Animales
            Categoria animal = new Categoria();

            animal.ID_Usuario   = usuario.ID_Usuario;
            animal.Imagen       = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Categorias/animales.png";
            animal.NombreIngles = "Animals";
            animal.Nombre       = "Animales";
            animal.Bloqueado    = false;

            db.Categorias.Add(animal);

            //Numeros
            Categoria numero = new Categoria();

            numero.ID_Usuario   = usuario.ID_Usuario;
            numero.Imagen       = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Categorias/numeros.png";
            numero.NombreIngles = "Numbers";
            numero.Nombre       = "Numeros";
            numero.Bloqueado    = false;

            db.Categorias.Add(numero);

            //Body parts
            Categoria partes = new Categoria();

            partes.ID_Usuario   = usuario.ID_Usuario;
            partes.Imagen       = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Categorias/partesCuerpo.png";
            partes.NombreIngles = "Body Parts";
            partes.Nombre       = "Partes del Cuerpo";
            partes.Bloqueado    = true;

            db.Categorias.Add(partes);

            //Family
            Categoria familia = new Categoria();

            familia.ID_Usuario   = usuario.ID_Usuario;
            familia.Imagen       = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Categorias/familia.png";
            familia.NombreIngles = "Family";
            familia.Nombre       = "Familia";
            familia.Bloqueado    = true;

            db.Categorias.Add(familia);

            //Frases
            Categoria frases = new Categoria();

            frases.ID_Usuario   = usuario.ID_Usuario;
            frases.Imagen       = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Categorias/frases.png";
            frases.NombreIngles = "Common Phrases";
            frases.Nombre       = "Frases Comunes";
            frases.Bloqueado    = true;

            db.Categorias.Add(frases);

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, "Ocurrió un error. Intente Nuevamente"));
            }

            List <Categoria> categorias = db.Categorias.Where(e => e.ID_Usuario == usuario.ID_Usuario).ToList();

            for (int i = 0; i < categorias.Count; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    Nivele nivel = new Nivele();

                    if (j <= 1)
                    {
                        nivel.Bloqueado = false;
                    }
                    else
                    {
                        nivel.Bloqueado = true;
                    }

                    switch (j)
                    {
                    case 0:
                        nivel.Imagen = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Niveles/LeeYElige.png";
                        break;

                    case 1:
                        nivel.Imagen = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Niveles/MiraYEscribe.png";
                        break;

                    case 2:
                        nivel.Imagen = "http://narumasolutions-001-site1.dtempurl.com/Imagenes/Niveles/EscuchaYElige.png";
                        break;
                    }

                    nivel.ID_Categoria = categorias.ElementAt(i).ID_Categoria;
                    nivel.ID_Usuario   = usuario.ID_Usuario;
                    nivel.nivel        = "Nivel " + (j + 1);

                    db.Niveles.Add(nivel);
                }
            }

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, "Ocurrió un error. Intente Nuevamente"));
            }

            List <Nivele> niveles = db.Niveles.Where(e => e.ID_Usuario == usuario.ID_Usuario).ToList();

            foreach (Nivele n in niveles)
            {
                Puntuacione puntuacion = new Puntuacione();
                puntuacion.ID_Usuario   = usuario.ID_Usuario;
                puntuacion.ID_Nivel     = n.ID_Nivel;
                puntuacion.ID_Categoria = n.ID_Categoria;
                puntuacion.Puntuacion   = 0;

                db.Puntuaciones.Add(puntuacion);
            }

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, "Ocurrió un error. Intente Nuevamente"));
            }


            return(Request.CreateResponse(HttpStatusCode.OK, "Usuario Creado con éxito"));
        }