public MovieDto UpdateMovie(string id, Movie movie) { Movie movieFromDb = db.Movies.Find(id); if (movieFromDb == null) { return(null); } //Copy all modifiable fields movieFromDb.Name = movie.Name; movieFromDb.Year = movie.Year; movieFromDb.Genre = movie.Genre; movieFromDb.Duration = movie.Duration; movieFromDb.StudioId = movie.StudioId; movieFromDb.LastUpdatedDate = DateTime.Now; db.Movies.Update(movieFromDb); db.SaveChanges(); //Evict this entry from cache memoryCache.Remove(MemoryCacheKeyGenerator.Generate(MemoryCacheKey.MOVIE_BY_ID, id)); memoryCache.Remove(MemoryCacheKey.MOVIES_ALL.ToString()); //Return a refreshed instance of Movie return(GetMovie(id)); }
public MovieDto GetMovie(string id) { var movie = memoryCache.GetOrCreate( MemoryCacheKeyGenerator.Generate(MemoryCacheKey.MOVIE_BY_ID, id), cacheEntry => GetMovieFromDb(cacheEntry, id)); return(Mapper.MapMovie(movie)); }
public void DeleteMovie(string id) { Movie movieFromDb = db.Movies.Find(id); if (movieFromDb == null) { return; } db.Movies.Remove(movieFromDb); db.SaveChanges(); //Evict movies from cache memoryCache.Remove(MemoryCacheKeyGenerator.Generate(MemoryCacheKey.MOVIE_BY_ID, id)); memoryCache.Remove(MemoryCacheKey.MOVIES_ALL.ToString()); }
public MovieDto UpdateActors(string movieId, List <string> actorsIds) { var movieFromDb = db.Movies.Find(movieId); //Check if movie Id exists if (movieFromDb == null) { return(null); } //Verify if all actors exists and build the actors to insert var movieActorsToInsert = new List <MovieActor>(); foreach (var actorId in actorsIds) { var actor = db.Actors.Find(actorId); if (actor == null) { //If an actor does not exist, return return(null); } var movieActor = new MovieActor() { MovieId = movieFromDb.Id, ActorId = actor.Id }; movieActorsToInsert.Add(movieActor); } //Delete all records in MovieActors for this movieId var movieActorsToRemove = db.MovieActors.Where(movieActor => movieActor.MovieId == movieId).ToList(); db.MovieActors.RemoveRange(movieActorsToRemove); db.SaveChanges(); //Save the new relationships db.MovieActors.AddRange(movieActorsToInsert); db.SaveChanges(); //Evict this entry from cache memoryCache.Remove(MemoryCacheKeyGenerator.Generate(MemoryCacheKey.MOVIE_BY_ID, movieId)); //Return a refreshed instance of Movie return(GetMovie(movieId)); }