from movie_dao import MovieDao class MovieController: def __init__(self): self.__movie_data = MovieDao.load() def get_all_movies(self): return self.__movie_data def get_highest_rated_movie(self): return max(self.__movie_data, key=lambda movie: movie.rating) def get_highest_grossing_movie(self): return max(self.__movie_data, key=lambda movie: movie.box_office) def get_movies_sorted_by_year(self): return sorted(self.__movie_data, key=lambda movie: movie.year, reverse=True) def get_all_genres(self): return sorted(set(movie.genre for movie in self.__movie_data)) def get_all_languages(self): return sorted(set(movie.language for movie in self.__movie_data)) def search_movies(self, query): query = query.lower() return [movie for movie in self.__movie_data if query in movie.title.lower() or query in movie.director.lower()] def filter_movies(self, genre=None, year=None, language=None): filtered = self.__movie_data if genre: filtered = [movie for movie in filtered if movie.genre == genre] if year: filtered = [movie for movie in filtered if movie.year == int(year)] if language: filtered = [movie for movie in filtered if movie.language == language] return filtered def sort_movies(self, sort_by='year', order='desc'): reverse = order.lower() == 'desc' return sorted(self.__movie_data, key=lambda movie: getattr(movie, sort_by), reverse=reverse)