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