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); } }