public HttpResponseMessage PostMovie(Movie movie)
        {
            if (ModelState.IsValid)
            {
                db.Movies.Add(movie);

                foreach (var g in movie.Genres)
                {
                    db.Genres.Attach(g);
                }

                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, movie);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = movie.Id }));
                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
        public HttpResponseMessage PutMovie(int id, Movie movie)
        {
            if (ModelState.IsValid && id == movie.Id)
            {
                var originalMovie = db.Movies.Find(id);

                var originalMovieEntry = db.Entry(originalMovie);
                originalMovieEntry.CurrentValues.SetValues(movie);

                foreach (var g in originalMovie.Genres)
                {
                    if (!movie.Genres.Any(x => x.Id == g.Id))
                    {
                        g.Movies.Remove(originalMovie);
                    }
                }

                foreach (var g in movie.Genres)
                {
                    if (!originalMovie.Genres.Any(x => x.Id == g.Id))
                    {
                        db.Genres.Attach(g);
                        originalMovie.Genres.Add(g);
                    }
                }

                originalMovie.DateModified = DateTime.Now;

                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return Request.CreateResponse(HttpStatusCode.NotFound);
                }

                return Request.CreateResponse(HttpStatusCode.OK, movie);
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }