Exemplo n.º 1
0
 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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
 def __init__(self):
     self.__customer_repo = CustomerRepository()
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 10
0
 def __init__(self):
     self.__car_rental_service = ReservationRepository()
     self.__customer_repo = CustomerRepository()
     self.__vehicle_repo = VehicleRepository()
Exemplo n.º 11
0
 def __init__(self):
     self.__car_service = CarService()
     self.__car_ui = CarUi()
     self.__order_service = OrderService()
     self.__customer_service = CustomerService()
     self.__customer_repo = CustomerRepository()