def __init__(self): """Þessi klasi sér um að koma breytingum milli service klasa. Ef upplýsingum er breytt um bíl eða viðskiptavin þá uppfærast viðeigandi pantanir.""" self.__order_repo = OrderRepository() self.__customer_repo = CustomerRepository() self.__order_list = self.__order_repo.get_order_list() self.__customers_list = self.__customer_repo.get_customers_list()
def __init__(self): self.employee = EmployeeRepository() self.contract = ContractRepository() self.location = LocationRepository() self.vehicle = VehicleRepository() self.vehicletype = VehicleTypeRepository() self.customer = CustomerRepository()
class CustomerService: def __init__(self): self.__Customer_repo = CustomerRepository() def add_Customer(self, Customer): if self.is_valid_Customer(Customer): self.__Customer_repo.add_Customer(Customer) def is_valid_Customer(self, Customer): #here should be some code to #validate the Vehicle return True def get_Customer(self): return self.__Customer_repo.get_Customer()
class CarRentalServices(): def __init__(self): self.__car_rental_service = ReservationRepository() self.__customer_repo = CustomerRepository() self.__vehicle_repo = VehicleRepository() def add_customer(self, employee, customer): return self.__customer_repo.add_customer(customer) def add_vehicle(self, employee, manager, vehicle): '''add vehicle to database?''' if manager.is_manager(): self.__vehicle_repo.add_vehicle(vehicle) def get_vehicle(self, employee): return self.__vehicle_repo.get_vehicle() def get_all_vehicles(self, employee): return self.__vehicle_repo.get_all_vehicles() def get_all_reservations(self, employee): return self.__car_rental_service.get_all_reservations()
class ChangeService: def __init__(self): """Þessi klasi sér um að koma breytingum milli service klasa. Ef upplýsingum er breytt um bíl eða viðskiptavin þá uppfærast viðeigandi pantanir.""" self.__order_repo = OrderRepository() self.__customer_repo = CustomerRepository() self.__order_list = self.__order_repo.get_order_list() self.__customers_list = self.__customer_repo.get_customers_list() def change_customer_info_consequences(self, old_customer, new_customer): """Tekur við viðskiptavin eins og hann var fyrir breytingar og eftir breytingar. Finnur allar pantanir þar sem óbreytti viðskiptavinurinn kemur fyrir og setur þann nýja í staðinn, gerist þó aðeins ef pöntuninni er ekki lokið.""" for order in self.__order_list: if order.get_order_complete() == False: if order.get_customer() == old_customer: order.set_customer(new_customer) self.__order_repo.update_order_list() def delete_customer_consequences(self, customer): """Tekur við viðskiptavin sem var afskráður og eyðir öllum þeim pöntunum sem voru óloknar og skráðar á þann viðskiptavin úr kerfinu.""" orders_to_delete = [] for order in self.__order_list: if order.get_order_complete() == False: if order.get_customer() == customer: orders_to_delete.append(order) for order in orders_to_delete: self.__order_list.remove(order) self.__order_repo.update_order_list() input( 'Óloknum pöntunum viðskiptavinarins hefur verið eytt, ýttu á "Enter" til að halda áfram.' ) def change_car_info_consequences(self, old_car, new_car): """Tekur við bíl eins og hann var fyrir breytingar og eftir breytingar. Finnur allar pantanir þar sem óbreytti bíllinn kemur fyrir og setur þann nýja í staðinn, gerist þó aðeins ef pöntuninni er ekki lokið.""" for order in self.__order_list: if order.get_order_complete() == False: if order.get_car() == old_car: order.set_car(new_car) self.__order_repo.update_order_list() def delete_car_consequences(self, car, car_service, customer_service): """Tekur við bíl sem var afskráður, car_service fyrir þann bíl og customer_service. Bílnum sem var afskráður er eytt úr öllum pöntunum sem hann kemur fyrir í og annar bíll úr sama flokki er settur inn í pöntunana í stað þess sem var afskráður. Ef enginn bíll úr sama flokki er laus fyrir tímabil pöntunarinnar er notanda boðið upp á að velja annan flokk þar til laus bíll finnst, sá bíll er síðan skráður inn í pöntunina.""" car_type = car.get_car_type() for order in self.__order_list: if order.get_order_complete() == False: if order.get_car() == car: datelist = order.get_date_list() new_car = order.rent_car(car_type, datelist, car_service) if type(new_car) != Car: print( "\nBíll var skráður í pöntun/pantanir. Enginn sambærilegur bíll er laus yfir viðeigandi tímabil. Vinsamlegast skráið bíl fyrir eftirfarandi pöntun." ) sleep(1.5) print(order) print() print("Veldu flokk:") order.change_info("2", car_service, customer_service, price_repo=PriceRepository()) else: order.set_car(new_car) self.__order_repo.update_order_list()
def __init__(self): self.__customer_repo = CustomerRepository()
class CustomerService: def __init__(self): self.__customer_repo = CustomerRepository() @staticmethod def next_list(stop): start = stop stop = start + 10 return start, stop, start + 1 @staticmethod def prev_list(start): stop = start start = stop - 10 return start, stop, start + 1 def print_customers(self, customers): """ Prints all the customers that we have. :param customers: :return: """ start = 0 stop = 10 count = 1 while True: print( "{:^6}|{:^22}|{:^17}|{:^11}|{:^17}|{:^30}|{:^14}|{:^18}|{:^5}|" .format("ID", "Name", "Passport number", "Country", "Address", "E-mail", "Phone number", "Driving license", "Age")) print("-" * 150) for ix, customer in enumerate(customers[start:stop]): print("{:^8}{:<23}{:<18}{:<12}{:<18}{:<31}{:<15}{:<19}{:<7}". format(ix + count, customer["Name"], customer["Passport number"], customer["Country"], customer["Address"], customer["Mail"], customer["Phone number"], customer["license"], customer["Age"])) print() y_n = input("Next / Previous / Quit searching (N/P/Q): ").lower() if y_n == "n" and count + 10 < len(customers): start, stop, count = self.next_list(stop) elif y_n == "n" and count + 10 >= len(customers): print("\nCant go forwards while on the last page\n") elif y_n == "p" and count != 1: start, stop, count = self.prev_list(start) elif y_n == 'p' and count == 1: print("\nCant go back while on the first page\n") continue elif y_n == 'q': return y_n else: print("\n\33[;31mWrong input, try again!\33[;0m\n") continue def list_all_customers(self): """ List all the customers by using the get_customer(), and returns a message if there is no customers :return: """ customers = self.get_customers() if customers: self.print_customers(customers) else: print("No customers\n") # noinspection PyTypeChecker @staticmethod def print_customer(customer): """ Prints a specific customer. :param customer: :return: """ print("\tPPN/Kt: {}".format(customer["Passport number"])) print("\tName: {}".format(customer["Name"])) print("\tCountry: {}".format(customer["Country"])) print("\tAddress: {}".format(customer["Address"])) print("\tPhone number: {}".format(customer["Phone number"])) print("\tE-mail: {}".format(customer["Mail"])) print("\tDriver´s license: {}".format(customer["license"])) print("\tAge: {}".format(customer["Age"])) def add_customer(self, customer): self.__customer_repo.add_customer(customer) def get_customers(self): return self.__customer_repo.get_customer() def get_customer_by_kt(self, kt): """ Get a customer by the Passport Number or kt :param kt: :return: """ customers = self.get_customers() for x in customers: if x["Passport number"] == kt: return x return 0 def remove_customer(self, customer_id): return self.__customer_repo.remove_customer(customer_id) def get_customer_by_id(self, c_id): return self.__customer_repo.get_customer_id(c_id - 1)
class OrderService: def __init__(self): self.__order_repo = OrderRepository() self.__customer_repo = CustomerRepository() def check_kt(self, kt): return self.__customer_repo.check_if_kt_exist(kt) def add_order(self, new_order, edit): return self.__order_repo.add_order(new_order, edit) def get_orders(self): return self.__order_repo.get_orders() def get_order_by_id(self, o_id): return self.__order_repo.get_order_id(o_id - 1) def get_completed_order_id(self, o_id): return self.__order_repo.get_completed_order_id(o_id - 1) def remove_order(self, o_id): return self.__order_repo.remove_order_id(o_id) def pay_order(self, price, order): return self.__order_repo.pay_order(price, order) def get_completed_orders(self): return self.__order_repo.get_completed_orders() def get_available_orders(self, license): orders = self.__order_repo.get_completed_orders() if orders: order = [] for x in orders: if x["License"] == license: order.append(x) return order else: return False def get_available_order_customer(self, kt): """ Gets available order by "kt" :param kt: :return: """ orders = self.__order_repo.get_completed_orders() if orders: order = [] for x in orders: if x["Kt"] == kt: order.append(x) return order else: return False @staticmethod def next_list(stop): start = stop stop = start + 10 return start, stop, start + 1 @staticmethod def prev_list(start): stop = start start = stop - 10 return start, stop, start + 1 def print_current_orders(self, orders): """ Prints out the currents order :param orders: :return: """ start = 0 stop = 10 count = 1 while True: print( "{:^6}|{:^12}|{:^22}|{:^13}|{:^15}|{:^15}|{:^13}|{:^11}|{:^13}|{:^6}" .format("ID", "PPN/Kt", "Name", "License", "From date", "To date", "Price", "Insurance", "Total price", "Days")) print("-" * 133) for ix, order in enumerate(orders[start:stop]): print( "{:^8}{:<13}{:<23}{:<16}{:<16}{:<14}{:<14}{:<12}{:<14}{:<6}" .format(ix + count, order["Kt"], order["Name"], order["License"], order["From date"], order["To date"], order["Price"] + " kr.", order["Insurance"], order["Total price"] + " kr.", order["Days"])) print() y_n = input("Next / Previous / Quit searching (N/P/Q): ").lower() if y_n == "n" and count + 10 < len(orders): start, stop, count = self.next_list(stop) elif y_n == "n" and count + 10 >= len(orders): print("\nCant go forwards while on the last page\n") elif y_n == "p" and count != 1: start, stop, count = self.prev_list(start) elif y_n == 'p' and count == 1: print("\nCant go back while on the first page\n") continue elif y_n == 'q': return y_n else: print("\n\33[;31mWrong input, try again!\33[;0m\n") continue def print_completed_orders(self, completed_orders): """ Prints out orders that are completed. :param completed_orders: :return: """ start = 0 stop = 10 count = 1 while True: print( "{:^6}|{:^12}|{:^22}|{:^13}|{:^15}|{:^15}|{:^13}|{:^11}|{:^13}|{:^16}|{:^6}" .format("ID", "PPN/Kt", "Name", "License", "From date", "To date", "Price", "Insurance", "Total price", "Payment method", "Days")) print("-" * 152) for ix, order in enumerate(completed_orders[start:stop]): print( "{:^8}{:<13}{:<23}{:<16}{:<16}{:<14}{:<14}{:<12}{:<14}{:<17}{:<6}" .format(ix + count, order["Kt"], order["Name"], order["License"], order["From date"], order["To date"], order["Price"] + " kr.", order["Insurance"], order["Total price"] + " kr.", order["Payment method"], order["Days"])) print() y_n = input("Next / Previous / Quit searching (N/P/Q): ").lower() if y_n == "n" and count + 10 < len(completed_orders): start, stop, count = self.next_list(stop) elif y_n == "n" and count + 10 >= len(completed_orders): print("\nCant go forwards while on the last page\n") elif y_n == "p" and count != 1: start, stop, count = self.prev_list(start) elif y_n == 'p' and count == 1: print("\nCant go back while on the first page\n") continue elif y_n == 'q': return y_n else: print("\n\33[;31mWrong input, try again!\33[;0m\n") continue
class MainRepository: def __init__(self): self.employee = EmployeeRepository() self.contract = ContractRepository() self.location = LocationRepository() self.vehicle = VehicleRepository() self.vehicletype = VehicleTypeRepository() self.customer = CustomerRepository() # Basic CRUD for employees def get_all_employees(self): return self.employee.read() def create_employee(self, employee): return self.employee.create(employee) def update_employee(self, id, updates): return self.employee.update(id, updates) def delete_employee(self, id): return self.employee.delete(id) # Basic CRUD for contracts def get_all_contracts(self): return self.contract.read() def create_contract(self, contract): return self.contract.create(contract) def update_contract(self, id, updates): return self.contract.update(id, updates) def delete_contract(self, id): return self.contract.delete(id) # Basic CRUD for destinations def get_all_locations(self): return self.location.read() def create_location(self, destination): return self.location.create(destination) def update_location(self, id, updates): return self.location.update(id, updates) def delete_location(self, id): return self.location.delete(id) # Basic CRUD for vehicles def get_all_vehicles(self): return self.vehicle.read() def create_vehicle(self, vehicle): return self.vehicle.create(vehicle) def update_vehicle(self, id, updates): return self.vehicle.update(id, updates) def delete_vehicle(self, id): return self.vehicle.delete(id) # Basic CRUD for vehicle types def get_all_vehicletypes(self): return self.vehicletype.read() def create_vehicletype(self, vehicletype): return self.vehicletype.create(vehicletype) def update_vehicletype(self, id, updates): return self.vehicletype.update(id, updates) def delete_vehicletype(self, id): return self.vehicletype.delete(id) # Basic CRUD for customers def get_all_customers(self): return self.customer.read() def create_customer(self, customer): return self.customer.create(customer) def update_customer(self, id, updates): return self.customer.update(id, updates) def delete_customer(self, id): return self.customer.delete(id)
def __init__(self): self.__car_rental_service = ReservationRepository() self.__customer_repo = CustomerRepository() self.__vehicle_repo = VehicleRepository()
def __init__(self): self.__car_service = CarService() self.__car_ui = CarUi() self.__order_service = OrderService() self.__customer_service = CustomerService() self.__customer_repo = CustomerRepository()