/// <summary> /// Gets the movie by identifier. /// </summary> /// <param name="movieId">The movie identifier.</param> /// <returns>MovieDto</returns> public MovieDto GetMovieById(int movieId) { Guard.IntMoreThanZero(movieId, nameof(movieId)); MovieDto movie = null; var allMovies = _cachingService.GetAllMovies(); if (allMovies != null) { movie = allMovies.FirstOrDefault(m => m.MovieId == movieId); } if (movie == null) { movie = _cachingService.GetMovieById(movieId); } if (movie == null) { movie = _dataSource.GetMovieById(movieId); _cachingService.SetMovie(movie); } return(movie); }