Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.7 kB
2
Indexable
Never
class Movie:
    def __init__(self, name, price, stock, release_date, age_limit):
        self.name = name
        self.price = price
        self.stock = stock
        self.release_date = release_date
        self.age_limit = age_limit

    def rent_movie(self, num):
        if num > 0 and num <= self.stock:
            self.stock -= num
            return True
        return False

    def return_movie(self, num):
        if num > 0:
            self.stock += num
            return True
        return False

class Customer:
    def __init__(self, name, age, balance, rental_limit):
        self.name = name
        self.age = age
        self.balance = balance
        self.rental_limit = rental_limit
        self.rented_movies = []

    def can_rent_movie(self, movie):
        if self.age >= movie.age_limit and self.rental_limit > 0 and self.balance >= movie.price:
            return True
        return False

class MovieStore:
    def __init__(self):
        self.movies = []
        self.customers = []
        self.income = 0

    def add_movie(self, movie):
        # Check if movie already exists in the store
        for m in self.movies:
            if m.name == movie.name:
                # If movie exists, just update the stock
                m.stock += movie.stock
                return
        # If movie doesn't exist, add it to the list
        self.movies.append(movie)

    def remove_movie(self, movie_name):
        for i, m in enumerate(self.movies):
            if m.name == movie_name:
                # Make sure movie is not rented before deleting
                if m.stock == m.total_stock:
                    del self.movies[i]
                    return True
                else:
                    return False
        return False

    def add_customer(self, customer):
        self.customers.append(customer)

    def remove_customer(self, customer_name):
        for i, c in enumerate(self.customers):
            if c.name == customer_name:
                del self.customers[i]
                return True
        return False

    def get_customer(self, customer_name):
        for c in self.customers:
            if c.name == customer_name:
                return c
        return None

    def get_movie(self, movie_name):
        for m in self.movies:
            if m.name == movie_name:
                return m
        return None

    def rent_movie(self, movie_name, customer_name, num):
        movie = self.get_movie(movie_name)
        customer = self.get_customer(customer_name)
        if movie and customer:
            if movie.rent_movie(num) and customer.can_rent_movie(movie):
                customer.rented_movies.append(movie)