Exemplo n.º 1
0
 def update_info(self, staff_list):
     """Fall sem spyr notanda hvaða uppl. hann vill breyta um starfsmann og sendir síðan á change info fallið
     hvaða upplýsinga notandi vill breyta"""
     correct = False
     while not correct:
         print_header(
             "Heimasíða / Starfsmenn / Skrá nýjan starfsmann / Breyta skráningu"
         )
         print(self)
         print("=" * 70)
         choice = input(
             "\nHverju villtu breyta:\n1.  Nafn\n2.  Kennitala\n3.  Notandnafn\n4.  Lykilorð\n5.  Breyta aðgangi\n6.  Klára Skráningu\n"
         )
         legal_choice = False
         while not legal_choice:
             try:
                 if int(choice) in range(1, 7):
                     legal_choice = True
                 else:
                     print("Ekki valmöguleiki, veldu aftur")
             except:
                 print("Ekki valmöguleiki, veldu aftur")
         if choice == "6":
             correct = True
         self.change_info(choice, staff_list)
         print_header("Heimasíða / Starfsmenn / Breyta skráningu")
Exemplo n.º 2
0
 def main_menu(self):
     """ Main menu er loop sem hættir þegar q er sett inn. Á flestum input stöðum (fyrir utan þegar beðið er um dagsetningar eða 
     bílaflokk) er hægt að setja inn "t" til að fara tilbaka eða "h" til að fara aftur á þessa síðu. """
     action = ''
     while action != "q":
         system("clear")
         login = False
         while not login:
             username = input("Notandanafn: ")
             password = input("Lykilorð: ")
             #Athugar hvort notandi sé til og skilar því, notandanum og hvort hann sé admin
             login, admin, self.__staff = self.__staff_service.check_login(username, password)
             if login == False:
                 system('clear')
                 print("Innskráning mistókst.")
         action = ""
         while action != "s" and action != "q":
             prompt = "Heimasíða ('t' til að fara til baka, 'h' til að fara heim)"
             print_header(prompt)
             prompt = "Heimasíða"
             if admin:
                 action = input("1.  Bílar\n2.  Viðskiptavinir\n3.  Skoða eða skrá pantanir\n4.  Starfsmenn\ns.  Skrá út\nq.  Loka kerfi\n").lower()
                 if action == '4':
                     self.__staffUI(self.__staff)
             else:
                 action = input("1.  Bílar\n2.  Viðskiptavinir\n3.  Skoða eða skrá pantanir\ns.  Skrá út\nq.  Loka kerfi\n").lower()
             if action == "1":
                 self.__carUI = CarUI()
                 self.__carUI.car_menu()
             elif action == "2":
                 self.__customerUI = CustomerUI()
                 self.__customerUI.customer_menu()
             elif action == "3":
                 self.__orderUI = OrderUI()
                 self.__orderUI.order_menu()
Exemplo n.º 3
0
 def make_customer(self, customer_list):
     '''Tekur inn customer_list, til þess að passa að viðskiptavinurinn sé ekki með sömu kennitölu og annar
     síðan rennur rennur það í gegnum for slaufu þar sem það sendir í fallið change info með mysmunandi verkfni 
     hvert verkefni til að fá uppl. um viðskiptavin. síðan spyr það hvort all sé rétt ef ekki, þa getur notandi 
     breytt ákveðnum uppl um viðskiptavin'''
     # Hér er  bara verið að fléttast í gegnum alla verkferla í Change info fallinu til hægt sé að slá
     # inn allar uppl. sem þarf
     for step in range(1, 5):
         self.change_info(str(step), customer_list)
         info_list = self.get_info_list()
         for info in info_list:
             if info == "t" or info == "h":
                 return info
     done = False
     # hér er bara verið að gá hvort viljað er að breyta uppl. sem slegið var inn
     while not done:
         print_header(
             "Heimasíða / Viðskiptavinir / Skrá nýjan viðskiptavin")
         print(self)
         print("=" * 70)
         correct = input("\nEr allt rétt? (j/n) ").lower()
         if correct != "j":
             self.customer_change_info(customer_list)
         else:
             done = True
Exemplo n.º 4
0
 def make_staff(self, staff_list):
     '''Tekur inn staffÖlist, til þess að passa að starfsmaður sé ekki með sömu kennitölu og annar
     síðan rennur rennur það í gegnum for slaufu þar sem það sendir í fallið change info með mysmunandi verkfni 
     hvert verkefni til að fá uppl. um starfsmann. síðan spyr það hvort all sé rétt ef ekki, þa getur notandi 
     breytt ákveðnum uppl um starfsmann'''
     # Hér er  bara verið að fléttast í gegnum alla verkferla í Change info fallinu til að starfsmaður geti slegið
     # inn allar uppl. sem þarf
     for number in range(1, 6):
         number = str(number)
         self.change_info(number, staff_list)
         info_list = self.get_info_list()
         if "t" in info_list:
             return "t"
         elif "h" in info_list:
             return "h"
         if number == '2':
             if self._ssn == '':
                 done = True
                 break
             else:
                 done = False
     # hér er bara verið að gá hvort starfsmaður vilji breyta uppl. sem hann sló inn
     while not done:
         print_header("Heimasíða / Starfsmenn / Skrá nýjan starfsmann")
         print(self)
         print("=" * 70)
         correct = input("\nEr allt rétt? (j/n) ").lower()
         if correct != "j":
             self.update_info(staff_list)
         else:
             return self
     return False
Exemplo n.º 5
0
    def view_customer(self, customer):
        """ Hér er hægt að framkvæma fjórar aðgerðir fyrir viðskiptavin.
            1. Sjá pantanir, hér er hægt að sjá allar pantanir sem þessi viðskiptavinur hefur skráð á sig.
            2. Breyta skráningu, hér er hægt að breyta skráningu viðskiptavinar með hjálp customer_update_info fallinu í CustomerService
               klasanum.
            3. Afskrá viðskiptavin, hér er viðskiptavinurinn tekinn út úr kerfinu og allar þær pantanir sem eru ókláraðar eyðast úr
               kerfinu líka.
            4. Skrá pöntun á viðskiptavin, hér er hoppað beint inn í make_order_info fallið í OrderService klasanum og 
               viðskiptavinurinn líka svo það þurfi ekki að velja hann aftur."""
        loop = True
        while loop:
            prompt = "Heimasíða / Viðskiptavinir / Skoða viðskiptavin"
            print_header(prompt)
            print(customer)
            print('=' * 70)
            choice = input(
                "\n1.  Sjá pantanir\n2.  Breyta skráningu\n3.  Afskrá viðskiptavin\n4.  Skrá pöntun á viðskiptavin\nt.  Tilbaka\nh.  Heim\n"
            ).lower()
            if choice == "1":
                prompt += " / Sjá pantanir"
                print_header(prompt)
                customer_orders = self.__customer_service.customer_get_history(
                    customer)
                if customer_orders:
                    for order in customer_orders:
                        print(order)
                        print()
                    input('Ýttu á "Enter" til að halda áfram: ')
                else:
                    print("Þessi viðskiptavinur hefur enga notkunarsögu.")
                    sleep(2)
            elif choice == "2":
                prompt += " / Breyta skráningu"
                print_header(prompt)
                self.__customer_service.customer_update_info(customer)
            elif choice == "3":
                prompt += " / Afskrá viðskiptavin"
                print_header(prompt)
                choice = input("Ertu viss?(j/n): ")
                if choice == "j":
                    self.__customer_service.customer_delete(customer)
                    return "Tilbaka", False
            elif choice == "4":
                prompt += " / Skrá pöntun á viðskiptavin"
                print_header(prompt)
                self.__order_service = OrderService()
                new_order = self.__order_service.make_order_info(
                    prompt, customer)
                if type(new_order) == Order:
                    self.__order_ui = OrderUI()
                    self.__order_ui.view_order(new_order)
                else:
                    if new_order == "h":
                        return "Heim", True

                self.__customer_service.update_order_repo()
            elif choice == "t":
                return "Tilbaka", False
            else:
                return "Heim", True
Exemplo n.º 6
0
 def change_info(self, step, car_service, customer_service, prompt = "", price_repo = None):
     '''Þetta fall tekur inn uppl. um hvaða skrefi notandinn vil breyta, síðan fer inn í það
     skref með þær uppl. sem það þarf til að breyta viðeigaindi uppl. um ákveðna pöntun sem 
     notandinn vill láta breyta og spyr notandinn um þær uppl. sem það þarf.'''
     #þetta skref biður umm kennitölu viðskiptavinar síðan gáir hvort hún sé til ef hún er til þá verður viðskiptavinur
     #skráður inn í kerfið
     if step == "1":
         valid_ssn = False
         while valid_ssn is not True:
             ssn = input("Kennitala viðskiptavinar: ")
             if ssn == "t" or ssn == "h":
                 return ssn
             self.__customer = customer_service.check_ssn(ssn)
             if self.__customer:
                 valid_ssn = True
             else:
                 choice = input("Kennitalan {} fannst ekki.\n1.  Reyna aftur\nt.  Tilbaka\nh.  Heim\n".format(ssn))
                 if choice == "t" or choice == "h":
                     return choice
     # Þetta skref  biður fyrst um hvernig bíla tegund notandi vill
     # síðan gáir hvort bíll sé laus í þeim dagsetningu sem notandi vil ef bíll er laus skráir kerfið bílin í orderið
     elif step == "2":
         step2 = False
         while step2 is not True:
             car_type = make_car_type()
             date1, date2 = legal_dates(prompt)
             self.__date_list = make_date_list(date1, date2)
             self.__car = self.rent_car(car_type, self.__date_list, car_service)
             if self.__car:
                 step2 = True
                 print_header(prompt)
                 self.__order_price = calc_price(self, price_repo)
             else:
                 print("Enginn bíll laus með þessi skilyrði")
                 sleep(2)
                 print_header(prompt)
     # Þetta fall spyr notanda um hvernig trygginu notandi bill og skráir það síðan í pöntunina
     elif step == "3":
         step3 = False
         while step3 is not True:
             number = input("Veldu tryggingu:\n1.  Grunntrygging ({} ISK á dag)\n2.  Aukatrygging ({} ISK á dag)\n".format(price_repo.get_base_insurance_price(), price_repo.get_extra_insurance_price()))
             if number == "2":
                 self.__insurance = "Aukatrygging"
                 step3 = True
                 self.__order_price = calc_price(self, price_repo)
             elif number == "1":
                 self.__insurance = "Grunntrygging"
                 step3 = True
                 self.__order_price = calc_price(self, price_repo)
             elif number == "t" or number == "h":
                 return number
             else:
                 print("Vinsamlegast veldu viðurkennt gildi")
     # Spyr um korta númerið notanda og gáir hvort það sé löggild og skráir það síðan á pöntunina
     elif step == "4":
         self.__card_info = make_number(16, "Kortanúmer: ", "Ólöglegt kortanúmer, reyndu aftur.")
Exemplo n.º 7
0
 def order_menu(self):
     """ Hér er hægt að framkvæma þrjár aðgerðir sem koma pöntunum við.
         1. Skoða pöntun, hér þarf að setja inn pöntunarnúmer og OrderService klasinn athugar hvort það sé til pöntun með
            þessu númeri og skilar viðeigandi pöntun. Þegar pöntun hefur verið valin er hægt að framkvæma tvær aðgerðir, annað
            hvort uppfæra upplýsingar hennar eða afskrá hana.
         2. Skrá nýja pöntun, fer beint í fallið make_order_info í OrderService klasanum.
         3. Klára pantanir dagsins fer í fallið complete_orders í Orderservice klasanum. """
     done = False
     while not done:
         prompt = "Heimasíða / Skoða eða skrá pantanir"
         print_header(prompt)
         action = input("1.  Skoða pöntun\n2.  Skrá nýja pöntun\n3.  Klára pantanir dagsins\nh.  Heim\n")
         if action == "1":
             prompt += " / Skoða pöntun"
             print_header(prompt)
             exit_info = ""
             while exit_info == "":
                 order_name = input("Pöntunarnúmer: ")
                 if order_name == "t":
                     break
                 elif order_name == "h":
                     done = True
                     break
                 order = self.__order_service.get_order_by_name(order_name)
                 print_header(prompt)
                 if order:
                     exit_info, done = self.view_order(order)
                 else:
                     choice = input('Pöntunin: "{}" fannst ekki í kerfinu.\n1.  Reyna aftur\nt.  Tilbaka\nh.  Heimasíða\n'.format(order_name))
                     if choice == "t" or choice == "h":
                         if choice == "h":
                             done = True
                         exit_info = "Tilbaka"
         elif action == "2":
             finished = False
             while not finished:
                 prompt = "Heimasíða / Skoða eða skrá pantanir / Skrá nýja pöntun"
                 print_header(prompt)
                 new_order = self.__order_service.make_order_info(prompt, False)
                 if type(new_order) == Order:
                     finished, done = self.view_order(new_order)
                 else:
                     if new_order == "t":
                         finished = True
                     elif new_order == "h":
                         finished = True
                         done = True
         elif action == "3":
             prompt += " / Klára pantanir dagsins"
             print_header(prompt)
             choice = self.__order_service.complete_orders(prompt)
             if choice == "h":
                 done = True
         else:
             done = True
Exemplo n.º 8
0
 def change_car_info(self, car, new_or_not, prompt):
     ''' Ef notandi vill breyta uppl. um bíl þá velur hann hvejru hann bill breyta síðan er sendur í fallið 
     car_change_info til að breyta viðeigandi uppl.'''
     old_car = car
     correct = False
     if new_or_not:
         while not correct:
             print_header(prompt)
             print(car)
             print("="*70)
             print("\nHverju viltu breyta:\n1.  Bílnúmeri\n2.  Bílaflokkur\n3.  Undirtegund\n4.  Skipting\n5.  Akstur(km)\n6.  Klára Skráningu")
             legal_choice = False
             while not legal_choice:
                 choice = input()
                 try:
                     if int(choice) in range(1,7):
                         legal_choice = True
                     else:
                         print("Ekki valmöguleiki, veldu aftur")
                 except:
                     print("Ekki valmöguleiki, veldu aftur")
             if choice == "6":
                 correct = True
             car.car_change_info(choice, self._all_cars_list, prompt)
     # ef bílinn er ekki nýr og breyta er verið gömlu bíl þá fer hann notandi hingað
     else: 
         while not correct:
             print_header(prompt)
             print(car)
             print("="*70)
             print("\nHverju viltu breyta:\n1.  Undirtegund\n2.  Skipting\n3.  Akstur(km)\n4.  Klára Skráningu")
             legal_choice = False
             while not legal_choice:
                 choice = input()
                 try:
                     if int(choice) in range(1,5):
                         legal_choice = True
                         choice = str(int(choice) + 2)
                     else:
                         print("Ekki valmöguleiki, veldu aftur")
                 except:
                     print("Ekki valmöguleiki, veldu aftur")
             if choice == "6":
                 correct = True
             car.car_change_info(choice, self._all_cars_list, prompt)
     if new_or_not:
         self.car_register(car)
         self._all_cars_list.append(car)
     else:
         self.update_car_list(car)
         self.__change_service.change_car_info_consequences(old_car, car)
Exemplo n.º 9
0
 def make_car(self, prompt):
     ''' Þetta fall býr til bíl með grunn uppl. síðan sendir það í car_change_info fallið að breyta uppl. 
     um hverjn hlut sem þarf að vita um bílin síðan spyr fallið hvort allt í rétt slegið inn, ef ekki sendir fallið
     notanda í fallið change_car_info, þar sem notandi getur breytt viðeigandi uppl.'''
     new_car = Car()
     for step in range(1,6):
         quit_info = new_car.car_change_info(str(step), self._all_cars_list, prompt)
         if type(quit_info) == str:
             return quit_info
     new_car.set_availability(self.get_date_dict())
     print_header(prompt)
     print(new_car)
     print("="*70)
     continue_q = input("\nEr allt rétt? (j/n): ").lower()
     if continue_q != "j":
         self.change_car_info(new_car, True, prompt)
     else:
         self.car_register(new_car)
     return new_car
Exemplo n.º 10
0
 def make_order_info(self, prompt, customer_known):
     """Býr til tóma pöntun og sendir pöntunina í gegnum ferlið að búa til allar upplýsingar um hana"""
     price_repo = PriceRepository()
     new_order = Order()
     for step in range(1, 5):
         if customer_known and (step == 1):
             new_order.set_customer(customer_known)
         else:
             choice = new_order.change_info(str(step), self.__car_service, self.__customer_service, prompt, price_repo)
             if choice == "t":
                 return "t"
             elif choice == "h":
                 return "h"
     price_repo = PriceRepository()
     price = calc_price(new_order, price_repo)
     new_order.set_price(price)
     print_header(prompt)
     print(new_order)
     print("="*70)
     continue_q = input("\nEr allt rétt? (j/n) ").lower()
     if continue_q != "j":
         self.change_order_info(new_order, prompt)
     print_header(prompt)
     payment_complete = take_payment(new_order.get_order_price())
     if type(payment_complete) == str:
         return "h"
     print_header(prompt)
     print("Pöntun skráð.")
     sleep(2.5)
     self.__order_repo.add_order(new_order)
     return new_order
Exemplo n.º 11
0
 def customer_change_info(self, customer_list):
     """Fall sem spyr notanda hvaða uppl. hann vill breyta um viðskiptavin og sendir síðan á change info fallið
     hvaða upplýsinga notandi vill breyta"""
     correct = False
     while not correct:
         legal_choice = False
         while not legal_choice:
             print_header(
                 "Heimasíða / Viðskiptavinir / Leita að viðskiptavin / Breyta skráningu"
             )
             print(self)
             print("=" * 70)
             choice = input(
                 "\nHverju villtu breyta:\n1. Nafn\n2. Kennitala\n3. Netfang\n4. Símanúmer\n5. Klára Skráningu\n"
             )
             print_header(
                 "Heimasíða / Viðskiptavinir / Leita að viðskiptavin / Breyta skráningu"
             )
             try:
                 if int(choice) in range(1, 6):
                     legal_choice = True
                     if choice == "5":
                         correct = True
                     else:
                         self.change_info(choice, customer_list)
                         print_header(
                             "Heimasíða / Viðskiptavinir / Leita að viðskiptavin / Breyta skráningu"
                         )
                 else:
                     print("Ekki valmöguleiki, veldu aftur")
             except:
                 print("Ekki valmöguleiki, veldu aftur")
Exemplo n.º 12
0
 def view_order(self, order):
     loop = True
     while loop:
         prompt = "Heimasíða / Skoða eða skrá pantanir / Skoða pöntun"
         print_header(prompt)
         print(order)
         print('='*60)
         choice = input("\n1.  Uppfæra pöntun\n2.  Eyða pöntun\nt.  Tilbaka\nh.  Heim\n")
         if choice == "1":
             prompt += " / Uppfæra Pöntun"
             self.__order_service.change_order_info(order, prompt)
             # exit_info = "Pöntun uppfærð"
         elif choice == "2":
             prompt += " / Eyða pöntun"
             print_header(prompt)
             choice = input("Ertu viss? (j/n): ")
             if choice == "j":
                 self.__order_service.order_delete(order)
                 return "Tilbaka", False
         elif choice == "t":
             return "Tilbaka", False
         else:
             return "Heim", True
Exemplo n.º 13
0
 def change_order_info(self, order, prompt):
     """Sér um ferlið að uppfæra upplýsingar um pöntun. 
     Þ.e.a.s tekur order og spyr hverju þú villt breyta, sendir þig svo á viðeigandi skref í order.change_info
     síðan uppfærir það repoið og vistar breytingarnar"""
     correct = False
     while not correct:
         print_header(prompt)
         print(order)
         print("="*70)
         print("\nHverju villtu breyta:\n1.  Kennitölu á pöntun\n2.  Bíl og dagsetningu\n3.  Tryggingu\n4.  Kortanúmeri\n5.  Klára Skráningu")
         legal_choice = False
         while not legal_choice:
             choice = input()
             try:
                 if int(choice) in range(1,6):
                     legal_choice = True
                 else:
                     print("Ekki valmöguleiki, veldu aftur")
             except:
                 print("Ekki valmöguleiki, veldu aftur")
         if choice == "5":
             correct = True
         order.change_info(choice, self.__car_service, self.__customer_service, prompt, PriceRepository())
     self.__order_repo.update_order_list()
Exemplo n.º 14
0
 def view_car(self, car):
     """ Þetta fall keyrist þegar bíll hefur verið fundinn í „skoða bíl" hlutanum í CarMenu klasanum. """
     car_selected = True
     while car_selected:
         prompt = "Heimasíða / Bílar / Skoða bíl"
         system('clear')
         print_header(prompt)
         car.set_availability(self.__car_service.get_date_dict())
         print(car)
         print("=" * 70)
         choice = input(
             "\n1.  Skoða pantanir\n2.  Uppfæra upplýsingar bíls\n3.  Afskrá bíl\nt.  Tilbaka\nh.  Heim\n"
         ).lower()
         # Skoða pantanir bíls sýnir allar pantanir sem hann hefur haft eða hefur.
         if choice == "1":
             print_header(prompt)
             car_orders = self.__car_service.car_get_history(car)
             if car_orders:
                 for order in car_orders:
                     print(order)
                     print()
             else:
                 print_header(prompt)
                 print("Þessi bíll hefur enga notkunarsögu.")
             input('Ýttu á "Enter" til að halda áfram: ')
         elif choice == "2":
             # Sjá change_car_info fallið í Car klasanum.
             prompt += " / Uppfæra upplýsingar bíls"
             self.__car_service.change_car_info(car, False, prompt)
         elif choice == "3":
             # Sjá car_delete fallið í Car klasanum.
             prompt += " / Afskrá bíl"
             print_header(prompt)
             choice = input("Ertu viss?(j/n): ")
             if choice == "j":
                 self.__car_service.car_delete(car)
                 return "Tilbaka", False
         elif choice == "t":
             return "Tilbaka", False
         elif choice == "h":
             return "Heim", True
Exemplo n.º 15
0
    def customer_menu(self):
        """ Hér er hægt að framkvæma tvær aðgerðir sem koma viðskiptavinum við.
            1. Leita að viðskiptavin, hér tekur CustomerService klasinn við kennitölu, athugar hvort það sé til viðskiptavinur
               í kerfinu með þessa kennitölu og skilar viðeigandi viðskiptavin. Þegar viðskiptavinur hefur verið valinn er hann
               sentur í view_customer fallið.
            2. Skrá nýjan viðskiptavin, sjá customer_register í CustomerService klasanum. """
        done = False
        while not done:
            prompt = "Heimasíða / Viðskiptavinir"
            print_header(prompt)
            action = input(
                "1.  Leita að viðskiptavin\n2.  Skrá nýjan viðskiptavin\nh.  Heim\n"
            )
            if action == "1":
                exit_info = ""
                prompt += " / Leita að viðskiptavin"
                while exit_info == "":
                    print_header(prompt)
                    ssn = input("Kennitala: ").lower()
                    if ssn == "h":
                        done = True
                        break
                    elif ssn == "t":
                        break
                    customer = self.__customer_service.check_ssn(ssn)
                    if customer:
                        exit_info, done = self.view_customer(customer)
                    else:
                        choice = input(
                            'Kennitalan: "{}" fannst ekki í kerfinu.\n1.  Reyna aftur\nt.  Tilbaka\nh.  Heim\n'
                            .format(ssn))
                        if choice == "t":
                            break
                        elif choice == "h":
                            done = True
                            break
            elif action == "2":
                prompt += " / Skrá nýjan viðskiptavin"
                print_header(prompt)
                new_customer = self.__customer_service.customer_register()
                if type(new_customer) == Customer:
                    exit_info, done = self.view_customer(new_customer)
                elif new_customer == "h":
                    done = True

            else:
                done = True
Exemplo n.º 16
0
 def complete_orders(self, prompt):
     """ Þetta fall finnur hvaða pantanir eru með skiladag í dag eða liðinn skiladag og prentar þær út.
         Notandi getur svo valið hvaða pöntun hann vill klára. Þegar sú pöntun hefur verið valinn þá reiknast
         út hvað aukakostnað þarf að greiða (ef viðskiptavinur keyrði meira en 150 km á dag) sem viðskiptavinur
         þarf að greiða. Þegar borgað hefur verið allan aukakostnað þá breytist skráningin á pöntuninni og hún
         hefur þar með verið kláruð. """
     finished_completing_orders = False
     while not finished_completing_orders:
         print_header(prompt)
         order_list = self.__order_repo.get_order_list()
         order_to_complete_list = []
         for order in order_list:
             if order.get_order_complete() != True and order.get_last_day() == date.today():
                 order_to_complete_list.append(order)
         if order_to_complete_list == []:
             print("Enga pöntun þarf að klára í dag.")
             sleep(2)
             finished_completing_orders = True
         else:
             for order in order_to_complete_list:
                 print(order)
                 print()
             order_to_change = input("Hvaða pöntun viltu klára? ")
             if order_to_change == "t" or order_to_change == "h":
                 return order_to_change
             if len(order_to_change.split()) == 2:
                 order_to_change = order_to_change.split()[1]
             for order in order_to_complete_list:
                 if order_to_change == order.get_order_name().split()[1]:
                     order_to_complete = order
                     break
                 order_to_complete = False
             # ss það finnst engin pöntun með þessu nafni
             if not order_to_complete:
                 choice = error_handle("Pöntun", order_to_change)
                 if choice == "t" or choice == "h":
                     return choice
                 print_header(prompt)
             else:
                 car = order_to_complete.get_car()
                 order_price = int(order_to_complete.get_order_price())
                 new_milage_boolean = False
                 while not new_milage_boolean:
                     try:
                         new_milage = input("Hvað er bíllinn núna keyrður? ").lower()
                         if new_milage == "t" or new_milage == "h":
                             return new_milage
                         milage_difference = int(new_milage) - car.get_milage()
                         if 0 < milage_difference:
                             new_milage_boolean = True
                         else:
                             print("Villa: Bíllinn getur ekki verið minna keyrður eftir leigu.")
                     except:
                         print("Villa: Bíllinn getur ekki verið minna keyrður eftir leigu.")
                 day_price = order_price // len(order_to_complete.get_date_list())
                 final_payment = int(milage_difference // 150 * 0.02 * day_price)
                 print_header(prompt)
                 if final_payment > 0:
                     payment_complete = take_payment(final_payment)
                 else:
                     payment_complete = True
                 if type(payment_complete) == str:
                     return "h"
                 self.__car_service.update_car_list(car)
                 order_to_complete.set_car(car)
                 order_to_complete.set_complete(True)
                 self.__order_repo.update_order_list()
                 car.set_milage(new_milage)
                 print_header(prompt)
                 print("Pöntun er nú kláruð")
                 choice = input("1.  Velja aðra pöntun til að klára\nt.  Tilbaka\nh.  Heim\n")
                 if choice == "t" or choice == "h":
                     finished_completing_orders = True
Exemplo n.º 17
0
 def staff_menu(self):
     """her er hægt að skrá nýjan aðgan að forritinu og breyta uppl."""
     done = False
     while not done:
         prompt = "Heimasíða / Starfsmenn"
         print_header(prompt)
         action = input(
             "1.  Skrá nýjan starfsmann\n2.  Leita að starfsmanni\n3.  Skoða verðskrá\nh.  Heim\n"
         )
         if action == "1":
             prompt += " / Skrá nýjan starfsmann"
             print_header(prompt)
             new_staff = self.__staff_service.staff_register()
             if type(new_staff) == str:
                 if new_staff == "h":
                     done = True
         elif action == "2":
             exit_info = ""
             while exit_info == "":
                 if "/ Leita að starfsmanni" not in prompt:
                     prompt += " / Leita að starfsmanni"
                 print_header(prompt)
                 ssn = input("Kennitala: ")
                 if ssn == "t" or ssn == "h":
                     if ssn == "h":
                         done = True
                     break
                 staff = self.__staff_service.check_ssn(ssn)
                 exit_info2 = ""
                 if staff:
                     while exit_info2 == "":
                         prompt = "Heimasíða / Starfsmenn / Leita að starfsmanni"
                         print_header(prompt)
                         print(staff)
                         choice = input(
                             "1.  Breyta upplýsingum starfsmann\n2.  Afskrá starfsmann\nt.  Tilbaka\nh.  Heim\n"
                         )
                         if choice == "1":
                             prompt += " / Breyta upplýsingum starfsmann"
                             print_header(prompt)
                             self.__staff_service.staff_update_info(staff)
                         elif choice == "2":
                             prompt += " / Afskrá starfsmann"
                             print_header(prompt)
                             choice = input("Ertu viss?(j/n): ")
                             if choice == "j":
                                 self.__staff_service.staff_delete(
                                     staff, self.__staff)
                                 exit_info = "Tilbaka"
                                 exit_info2 = "Tilbaka"
                         elif choice == "t":
                             exit_info = "Tilbaka"
                             exit_info2 = "Tilbaka"
                         else:
                             exit_info = "Heim"
                             exit_info2 = "Heim"
                             done = True
                 else:
                     choice = input(
                         'Kennitalan: "{}" fannst ekki í kerfinu.\n1.  Reyna aftur\nt.  Tilbaka\nh.  Heim\n'
                         .format(ssn))
                     if choice == "t" or choice == "h":
                         if choice == "h":
                             done = True
                         break
         elif action == "3":
             done_viewing = False
             while not done_viewing:
                 prompt = "Heimasíða / Starfsmenn / Skoða Verðskrá"
                 print_header(prompt)
                 self.__staff_service.print_price_list()
                 choice = input(
                     "\n1.  Breyta skráningu\nt.  Tilbaka\nh.  Heimasíða\n"
                 ).lower()
                 if choice == "1":
                     exit_info = False
                     prompt += " / Breyta verðskrá"
                     while not exit_info:
                         print_header(prompt)
                         choice = input(
                             "1.  Fólksbíll\n2.  Smábíll\n3.  Fimm sæta jeppi\n4.  Sjö sæta jeppi\n5.  Smárúta\n6.  Grunntrygging\n7.  Aukatrygging\nt.  Til baka\nh.  Heim\n"
                         ).lower()
                         if choice == "t":
                             exit_info = True
                         elif choice == "h":
                             exit_info = True
                             done = True
                         elif choice in [str(i) for i in range(1, 8)]:
                             exit_info, done = self.__staff_service.change_price(
                                 choice)
                 elif choice == "h":
                     done_viewing = True
                     done = True
                 else:
                     done_viewing = True
         else:
             done = True
Exemplo n.º 18
0
 def car_menu(self):
     """ Hér eru allar aðgerðir undir "Bílar" framkvæmdar sem skiptast í fernt. """
     done = False
     while not done:
         prompt = "Heimasíða / Bílar"
         print_header(prompt)
         action = input(
             "1.  Skoða bíl\n2.  Skrá nýjan bíl\n3.  Skoða lausa bíla\n4.  Skoða bíla í útleigu\nh.  Heim\n"
         ).lower()
         #Skoða bíl, hér þarf að setja inn bílnúmer sem CarService klasinn tekur, athugar hvort það sé í kerfinu og skilar bíl.
         #Þegar bíll er valinn þá er hægt að framkvæma fjórar aðgerðir á honum.
         if action == "1":
             prompt += " / Skoða bíl"
             print_header(prompt)
             exit_info = ""
             while exit_info == "":
                 registration_num = input("Bílnúmer: ")
                 #Hendir manni til baka ef maður slær inn t eða h
                 if registration_num == "t" or registration_num == "h":
                     if registration_num == "h":
                         done = True
                     break
                 #Tekur inn bílnúmerið og athugar hvort það sé löglegt
                 car_found, legal_reg_num = self.__car_service.car_find(
                     registration_num)
                 if not car_found:
                     if not legal_reg_num:
                         choice = input(
                             '1.  Reyna aftur\nt.  Tilbaka\nh.  Heim\n')
                     else:
                         #Fall sem skilar tekur inn tvö gildi og skilar villuskilaboðum
                         choice = error_handle("Bíllinn", registration_num)
                     if choice == "t" or choice == "h":
                         if choice == "h":
                             done = True
                         break
                     else:
                         print_header(prompt)
                         continue
                 exit_info, done = self.view_car(car_found)
         #Skrá nýjan bíl, sjá make_car fallið í CarService.
         elif action == "2":
             prompt += " / Skrá nýjan bíl"
             print_header(prompt)
             new_car = self.__car_service.make_car(prompt)
             #Fallið sem býr til nýjan bíl (sjá fallið nánar) og skilar annað hvort instance af bíl eða streng
             if type(new_car) == Car:
                 exit_info, done = self.view_car(new_car)
             #Ef fallið á undan skilar ekki streng þá er
             else:
                 if new_car == "h":
                     done = True
         #Skoða lausa bíla, sjá get_available_cars fallið í CarService klasanum.
         elif action == "3":
             exit_info = ""
             prompt += " / Skoða lausa bíla"
             print_header(prompt)
             while exit_info == "":
                 #Prentar út alla lausa bíla á ákveðnu tímabili og skilar True/False eftir því
                 self.__car_service.get_available_cars(prompt)
                 choice = ""
                 while choice != "1":
                     choice = input(
                         "1.  Skoða fleiri lausa bíla\nt.  Tilbaka\nh.  Heim\n"
                     ).lower()
                     if choice == "t" or choice == "h":
                         if choice == "h":
                             done = True
                         exit_info = "Tilbaka"
                         break
                     print_header(prompt)
         elif action == "4":
             # Skoða bíla í útleigu, sjá get_busy_cars fallið í CarService klasanum.
             exit_info = ""
             prompt += " / Skoða bíla í útleigu"
             print_header(prompt)
             while exit_info == "":
                 busy_cars_dict = self.__car_service.get_busy_cars(prompt)
                 self.__car_service.print_car_dict(busy_cars_dict, True)
                 choice = ""
                 while choice != "1":
                     choice = input(
                         "1.  Skoða fleiri bíla í útleigu\nt.  Tilbaka\nh.  Heim\n"
                     )
                     if choice == "t" or choice == "h":
                         if choice == "h":
                             done = True
                         exit_info = "Tilbaka"
                         break
                     print_header(prompt)
         elif action == "h":
             done = True