示例#1
0
        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));
        }
示例#2
0
        public MovieDto GetMovie(string id)
        {
            var movie = memoryCache.GetOrCreate(
                MemoryCacheKeyGenerator.Generate(MemoryCacheKey.MOVIE_BY_ID, id),
                cacheEntry => GetMovieFromDb(cacheEntry, id));

            return(Mapper.MapMovie(movie));
        }
示例#3
0
        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());
        }
示例#4
0
        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));
        }