class MakeUIupd():
    def __init__(self):
        self.__new_employee = Employee_service()
        self.__new_destination = Destination_service()
        self.__new_aircraft = Aircraft_service()
        self.__new_voyage = Voyage_service()
        self.WITDH = 50
        self.BORDER = "*"
        self.QUIT = "'q' - Hætta"
        self.GO_BACK = "'r' - Til baka"
        self.PICK = "Veldu skipun:"
        self.USER_INPUT = ("Valin skipun: ")
        #self.make_menu()

    ###########################################################################
    ############################### Make sub menu #############################
    ###########################################################################
    def make_menu(self):
        make_input = ""
        while make_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Nýskrá")) / 2) * " " + "Nýskrá" +
                  "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print(self.GO_BACK + "\n")
            print("'1' - Starfsmann" + "\n" + "'2' - Áfangastað" + "\n" +
                  "'3' - Vinnuferð" + "\n")
            make_input = input(self.USER_INPUT).lower()
            print()
            if make_input != "r":
                if make_input == "1":
                    self.employee_menu()
                if make_input == "2":
                    self.destination_menu()
                if make_input == "3":
                    self.voyage_menu()
                # if make_input == "4":
                #     self.aircraft_menu()
                else:
                    print(
                        "Vinsamlegast veldu einn af eftifarandi valmöguleikum!"
                    )
            break
###################STARFSMAÐUR VALIN ################################################################################################################

    def employee_menu(self):
        ''' The user can make a new employee which will either be a pilot or an flight attendant, and 
            the employee has to have a ssn,name,rank,liscence,address,phonenumber'''
        print(self.BORDER * self.WITDH + "\n" +
              int((self.WITDH - len("Nýskrá starfsmann")) / 2) * " " +
              "Nýskrá starfsmann" + "\n" + self.BORDER * self.WITDH)
        print(self.PICK + "\n")
        print(self.GO_BACK + "\n")
        print("'1' - Skrá flugmann" + "\n" + "'2' - Skrá flugþjón")
        print()
        make_input = input(self.USER_INPUT).lower()
        if make_input == "r":
            self.make_menu()
        else:
            while make_input != "1" and make_input != "2":
                make_input = input(self.USER_INPUT).lower()
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Nýskrá starfsmann")) / 2) * " " +
                  "Nýskrá starfsmann" + "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            # new_list = EmployeeMaker()
            ssn = input("Kennitala: ")
            name = input("Nafn: ")
            rank = input("Stöðugildi: ")
            liscense = input("Réttindi: ")
            address = input("Heimilisfang: ")
            phonenumber = input("GSM-Sími: ")

            save_input = ""
            while save_input != "1" and save_input != "2":
                print("\nViltu vista starfsmanninn \n'1' - Já \n'2' - Nei ")
                save_input = input(str(self.USER_INPUT))
                print()
            if save_input == "1":  #if the user chooses pilot
                if make_input == "1":
                    role = ""
                    new_list = [
                        ssn, name, role, rank, liscense, address, phonenumber
                    ]
                    new_employee = pilot(new_list)
                    self.__new_employee.add_employee(str(new_employee))

                elif make_input == "2":  # if the user chooses flight attendant
                    role = ""
                    new_list = [
                        ssn, name, role, rank, liscense, address, phonenumber
                    ]
                    new_employee = flight_attendant(new_list)
                    self.__new_employee.add_employee(str(new_employee))

            else:
                print("Starfsmaður ekki vistaður")
                self.employee_menu()

###################ÁFANGASTAÐUR VALIN ################################################################################################

    def destination_menu(self):
        ''' The user gets to "make" add a new destination to the system, and the destination must have 
            a destination name, flight time, distance to the destiation from KEF, contact and emergency phone number'''
        print(self.BORDER * self.WITDH + "\n" +
              int((self.WITDH - len("Nýskrá áfangastað")) / 2) * " " +
              "Nýskrá áfangastað" + "\n" + self.BORDER * self.WITDH)
        print(self.PICK + "\n")
        print(self.GO_BACK + "\n")

        airportID = input("Flugvöllur: ")
        if airportID == "r":
            self.make_menu()
        else:
            destination = input("Áfangastaður: ")
            flight_time = input("Flugtími: ")
            distance = input("Fjarlægð: ")
            contact = input("Tengiliður: ")
            emergency_phone = input("Neyðarsími: ")
            save_input = ""
            if save_input != "1" and save_input != "2":
                print("\nViltu vista áfangastað \n'1' - Já: \n'2' - Nei: ")
                save_input = input(str(self.USER_INPUT))
                print()
            if save_input == "1":
                new_list = [
                    airportID, destination, flight_time, distance, contact,
                    emergency_phone
                ]
                new_destination = Destination(new_list)
                self.__new_destination.add_destination(str(new_destination))
            else:
                print("Áfangastaður ekki vistaður")
                self.destination_menu()

###################VINNUFERÐ VALIN ################################################################################################################

    def voyage_menu(self):
        ''' This is were the user can make a voyage. When making a voyage the user must first choose a destination, then he can
            choose a departing date, after that he can choose a aircraft and the system will shoe him if they are available or not, 
            then the user can add employees if he whants but he can also add them laiter, then finally he can choose to save the 
            voyage or not. '''
        self.chosen_destination = ""
        self.depart_voyage_info = [
            "flightnum1", "KEF", 2, 3, 4, 5, "", "", "", "", " "
        ]  # We use "" to represent no employees
        self.arriv_voyage_info = [
            "flightnum2", 1, "KEF", 3, 4, 5, "", "", "", "", " "
        ]  #We know every single voyage starts at KEF and ends at KEF
        make_input = ""
        while make_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Nýskrá vinnuferð")) / 2) * " " +
                  "Nýskrá vinnuferð" + "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print(self.GO_BACK + "\n")
            print("'1' - Áfangastaður")
            print("'2' - Dagsetning og tími")
            print("'3' - Flugvél")
            print("'4' - Starfsmenn")
            print("'5' - Vista vinnuferðina, án eða með starfsmönnum")
            print()
            make_input = input(self.USER_INPUT).lower()
            if make_input == "1":
                self.voyage_destination()
            if make_input == "2":
                self.voyage_date()
            if make_input == "3":
                self.voyage_aircraft()
            if make_input == "4":
                self.voyage_employees()
            if make_input == "5":
                self.save_voyage()
            if make_input == "r":
                self.make_menu()
                break
            if make_input != "1" or make_input != "2" or make_input != "3" or make_input != "4" or make_input != "r":
                print("Vinsamlegast veldu eitt af eftifarandi valmöguleikum!")

    def voyage_destination(self):
        ''' Choose the destination from a list of all the destinations in the systmen '''
        dest_input = ""
        print(self.BORDER * self.WITDH + "\n" +
              int((self.WITDH - len("Nýskrá vinnuferð")) / 2) * " " +
              "Nýskrá vinnuferð" + "\n" + self.BORDER * self.WITDH)
        print(self.PICK + "\n")
        print("Veldu áfangastað: ")
        all_dest_str, dest_counter = self.__new_destination.get_alldest(
        )  #Prints a list of all the destinations
        print(all_dest_str)
        dest_input = input(self.USER_INPUT)
        if dest_input.isdigit(
        ) == False:  # if the user doesnt input a number then send him back
            if dest_input == "r":
                pass
            else:
                print("Veldu áfangastað sem er í boði")
                self.voyage_destination()
        elif int(dest_input) >= 1 and int(dest_input) <= int(
                dest_counter):  # or int(dest_input) == "r"
            print()
            user_chosen_dest = self.__new_destination.get_dest(dest_input)
            print(
                "Áfangastaður: {}\nFlugvöllur: {}\nFlugtími: {}\nFjarlægð: {}\nTengiliður: {}\nNeyðarsímanúmer: {}"
                .format(user_chosen_dest[1], user_chosen_dest[0],
                        user_chosen_dest[2], user_chosen_dest[3],
                        user_chosen_dest[4], user_chosen_dest[5]))
            save_input = ""
            if save_input != "1" and save_input != "2":
                print(
                    "\nViltu velja þennan áfangastað \n'1' - Já \n'2' - Nei ")
                save_input = input(str(self.USER_INPUT))
                print()
            if save_input == "1":
                self.chosen_destination = self.__new_destination.get_dest(
                    dest_input)  #LYR  self.chosen_destination[0]
                self.chosen_destination = self.chosen_destination[
                    0]  # We only need the destination ID
                self.chosen_destination

    def voyage_date(self):
        ''' Choose a departing date for the voyage and '''
        if self.chosen_destination == "":  # To make sure that there is a chosend destination to find out all the dates and times
            print("Veldu fyrst áfangarstað")
        else:
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Nýskrá dags/tíma vinnuferðar")) / 2) *
                  " " + "Nýskrá dags/tíma vinnuferðar" + "\n" +
                  self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print("Skráðu dagsetningu vinnuferðar: ")
            print()
            year = input("Sláðu inn ár: ")  #Input aa year
            while year.isdigit(
            ) == False:  # if its not a number then let them try again
                print("Vinsamlegast skráðu ár!")
                year = input("Sláðu inn ár: ")
            month = input("Sláðu inn númer mánaðar: ")
            while month.isdigit() == False:
                print("Vinsamlegast skráðu númer mánaðar!")
                month = input("Sláðu inn númer mánaðar: ")
            day = input("Sláðu inn dagsetningu: ")
            while day.isdigit() == False:
                print("Vinsamlegast skráðu dagsettningu!")
                day = input("Sláðu inn dagsettningu: ")
            hour = input("Sláðu inn klukkustund brottfarar: ")
            while hour.isdigit() == False:
                print("Vinsamlegast skráðu klukkutíma!")
                hour = input("Sláðu inn klukkustund brottfarar: ")
            mint = input("Sláðu inn mínútu brottfarar: ")
            while mint.isdigit() == False:
                print("Vinsamlegast skráðu mínútur!")
                mint = input("Sláðu inn mínútu brottfarar: ")

            print()
            user_chosen_date = [year, month, day, hour, mint, 0]
            self.depart_date = self.__new_voyage.add_date(user_chosen_date)
            if self.depart_date != False:  # We check if the date is in a valid format and is in the future
                self.arrival_date = self.__new_voyage.get_arrival_time(
                    self.chosen_destination, self.depart_date)  #date 2
                self.return_depart = self.__new_voyage.get_return_flight_time(
                    self.chosen_destination, self.arrival_date)  #date3
                self.return_arrival = self.__new_voyage.get_arrival_time(
                    self.chosen_destination, self.return_depart)  #date4
                print(
                    "Brottfarartími frá Íslandi:",
                    datetime.datetime.strptime(self.depart_date,
                                               "%Y-%m-%dT%H:%M:%S"))
                print(
                    "Lendingartími á áfangarstað:",
                    datetime.datetime.strptime(self.arrival_date,
                                               "%Y-%m-%dT%H:%M:%S"))
                print(
                    "Brottfarartími frá áfangarstað:",
                    datetime.datetime.strptime(self.return_depart,
                                               "%Y-%m-%dT%H:%M:%S"))
                print(
                    "Lendingartími á Íslandi:",
                    datetime.datetime.strptime(self.return_arrival,
                                               "%Y-%m-%dT%H:%M:%S"))
                print()
                save_input = ""

                if save_input != "1" and save_input != "2":
                    print(self.GO_BACK + "\n")
                    print("Viltu vista dagsetningar \n'1' - Já \n'2' - Nei ")
                    save_input = input(str(self.USER_INPUT))
                    print()
                if save_input == "1":  # If the user wants to save then all the dates are saved in two lists one for departing and other for arriving
                    self.depart_voyage_info[2] = self.chosen_destination
                    self.depart_voyage_info[3] = self.depart_date
                    self.depart_voyage_info[4] = self.arrival_date
                    self.arriv_voyage_info[1] = self.chosen_destination
                    self.arriv_voyage_info[3] = self.return_depart
                    self.arriv_voyage_info[4] = self.return_arrival
                if save_input == "2":
                    self.voyage_date()  # send back

            else:
                print("Ógild dagsettning vinsamlegast reyndu aftur.")

    def voyage_aircraft(self):
        ''' Choose a aircraft from the "all aircraft list " and in the list it says which aircrafts are free and which are not'''
        if self.arriv_voyage_info[4] == 4:
            print("Skráðu fyrst dagsetningu brottfarar.")
        else:
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Nýskrá flugvél vinnuferðar")) / 2) *
                  " " + "Nýskrá flugvél vinnuferðar" + "\n" +
                  self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print(
                self.__new_voyage.print_avail_aircraft(self.depart_date,
                                                       self.return_arrival))
            print(self.GO_BACK + "\n")
            air_choice = input("Veldu nafn flugvélar: ")
            while air_choice != "r":
                valid_or_not = self.__new_voyage.is_valid_aircraft(
                    air_choice, self.depart_date, self.return_arrival
                )  # checks if the aircraft you chose is in use or not
                if valid_or_not == True:  # if ture then the aircraft is not in use at this date
                    save_input = ""
                    if save_input != "1" and save_input != "2":
                        print(self.GO_BACK + "\n")
                        print("Viltu vista flugvél? \n'1' - Já \n'2' - Nei ")
                        save_input = input(str(self.USER_INPUT))
                        print()
                        if save_input == "1":
                            self.depart_voyage_info[5] = air_choice
                            self.arriv_voyage_info[5] = air_choice
                            print("Flugvél vistuð.")
                            air_choice = "r"  # To go back automatically

                        else:
                            print("Flugvél ekki vistuð")
                            air_choice = "r"

                else:
                    print("Vinsamlegast veldu lausa flugvél úr listanum!")
                    air_choice = "r"

    def voyage_employees(self):
        if self.chosen_destination == "":  # To make sure that there is a chosend destination to find out all the dates and times
            print("Veldu fyrst áfangarstað!")
        if self.arriv_voyage_info[4] == 4:
            print("Skráðu fyrst dagsetningu brottfarar!")
        if self.arriv_voyage_info[5] == 5:
            print("Skráðu fyrst flugvél vinnuferðar!")
        else:
            empl_pick = ""
            while empl_pick != "r":
                print(self.BORDER * self.WITDH + "\n" +
                      int((self.WITDH - len("Nýskrá starfsmenn vinnuferðar")) /
                          2) * " " + "Nýskrá starfsmenn vinnuferðar" + "\n" +
                      self.BORDER * self.WITDH)
                print(self.PICK + "\n")
                print("'1' - Veldu flugstjóra")
                print("'2' - Veldu aðstoðarflugmann")
                print("'3' - Veldu yfir flugþjón")
                print("'4' - Veldu flugþjón 2")
                print("'5' - Veldu flugþjón 3")
                print()
                print(self.GO_BACK + "\n")
                #We use the datetime to get rid of the T so we can send a normal date to the service
                empl_pick = input(self.USER_INPUT)
                print()
                if empl_pick == "1":
                    capt_list = Voyage_crew_service(
                        self.depart_voyage_info[3], self.depart_voyage_info[5]
                    ).get_captain(
                    )  # Send the departure date and the aircraft choice to get the pilots that are available on that date and have a liscence on that plane
                    if capt_list == []:
                        print(
                            "Engir lausir flugstjórar fyrir þessa vél, vinsamlegast veldu aðra vél"
                        )
                        pass
                    else:
                        print(
                            self.__new_voyage.prnt_str(capt_list)
                        )  #Prints a list of all available captains that are free and have licence on this aircraft
                        empl_pick = input(self.PICK)
                        print()
                        while empl_pick.isdigit(
                        ) == False or int(empl_pick) > len(capt_list) or int(
                                empl_pick
                        ) < 1:  # the inputed integer has to be in the capt list range
                            print(self.BORDER * self.WITDH + "\n" +
                                  int((self.WITDH -
                                       len("Nýskrá starfsmenn vinnuferðar")) /
                                      2) * " " +
                                  "Nýskrá starfsmenn vinnuferðar" + "\n" +
                                  self.BORDER * self.WITDH)
                            print(self.PICK + "\n")
                            print("Veldu flugstjóra úr listanum!")
                            print(self.__new_voyage.prnt_str(capt_list))
                            empl_pick = input(self.PICK)

                        else:
                            save_input = ""
                            empl_pick = int(empl_pick)
                            if save_input != "1" and save_input != "2":
                                print(self.GO_BACK + "\n")
                                print(
                                    "Viltu vista flugstjóran? \n'1' - Já \n'2' - Nei "
                                )
                                save_input = input(str(self.USER_INPUT))
                                print()
                                if save_input == "1":
                                    empl_pick = int(
                                        empl_pick
                                    ) - 1  #-1 because in lists we count from 0 and up
                                    self.depart_voyage_info[6] = capt_list[
                                        empl_pick][0]
                                    self.arriv_voyage_info[6] = capt_list[
                                        empl_pick][0]
                                    print("Flugstjóri vistaður")
                                    print()
                                else:
                                    empl_pick = "r"
                                    print("Flugstjóri ekki vistaður")

                if empl_pick == "2":  # Copilot
                    copilot_list = Voyage_crew_service(
                        self.depart_voyage_info[3],
                        self.depart_voyage_info[5]).get_copilot()
                    if copilot_list == []:
                        print(
                            "Engir lausir aðstoðarflugmenn fyrir þessa vél, vinsamlegast veldu aðra vél"
                        )
                        pass
                    else:
                        print(self.__new_voyage.prnt_str(copilot_list))
                        empl_pick = input(self.PICK)
                        print()
                        while empl_pick.isdigit() == False or int(
                                empl_pick
                        ) > len(copilot_list) or int(
                                empl_pick
                        ) < 1:  # the inputed integer has to be in the capt list range
                            print(self.BORDER * self.WITDH + "\n" +
                                  int((self.WITDH -
                                       len("Nýskrá starfsmenn vinnuferðar")) /
                                      2) * " " +
                                  "Nýskrá starfsmenn vinnuferðar" + "\n" +
                                  self.BORDER * self.WITDH)
                            print(self.PICK + "\n")
                            print("Veldu aðstoðarflugmann úr listanum!")
                            print(self.__new_voyage.prnt_str(copilot_list))
                            empl_pick = input(self.PICK)

                        else:
                            save_input = ""
                            empl_pick = int(empl_pick)
                            if save_input != "1" and save_input != "2":
                                print(self.GO_BACK + "\n")
                                print(
                                    "Viltu vista aðstoðarflugmann? \n'1' - Já \n'2' - Nei "
                                )
                                save_input = input(str(self.USER_INPUT))
                                print()
                                if save_input == "1":
                                    empl_pick = int(empl_pick) - 1
                                    self.depart_voyage_info[7] = copilot_list[
                                        empl_pick][0]
                                    self.arriv_voyage_info[7] = copilot_list[
                                        empl_pick][0]
                                    print("Aðstoðarflugmaður vistaður")
                                    print()
                                else:
                                    empl_pick = "r"
                                    print("Aðstoðarflugmaður ekki vistaður")

                if empl_pick == "3":
                    flight_service_m_list = Voyage_crew_service(
                        self.depart_voyage_info[3],
                        self.depart_voyage_info[5]).get_fsm()
                    if flight_service_m_list == []:
                        print(
                            "Engir lausir yfirflugþjónar fyrir þetta flug, vinsamlegast velud aðra dagsettningu "
                        )
                        pass
                    else:
                        print(
                            self.__new_voyage.prnt_str(flight_service_m_list))
                        empl_pick = input(self.PICK)
                        print()
                        while empl_pick.isdigit() == False or int(
                                empl_pick
                        ) > len(flight_service_m_list) or int(
                                empl_pick
                        ) < 1:  # the inputed integer has to be in the capt list range
                            print(self.BORDER * self.WITDH + "\n" +
                                  int((self.WITDH -
                                       len("Nýskrá starfsmenn vinnuferðar")) /
                                      2) * " " +
                                  "Nýskrá starfsmenn vinnuferðar" + "\n" +
                                  self.BORDER * self.WITDH)
                            print(self.PICK + "\n")
                            print("Veldu yfirflugþjón úr listanum!")
                            print(
                                self.__new_voyage.prnt_str(
                                    flight_service_m_list))
                            empl_pick = input(self.PICK)

                        else:
                            save_input = ""
                            empl_pick = int(empl_pick)
                            if save_input != "1" and save_input != "2":  # Ef hvorki 2 né 1 er sleginn inn þá er aftur spurt um input
                                print(self.GO_BACK + "\n")
                                print(
                                    "Viltu vista yfirflugþjóninn? \n'1' - Já \n'2' - Nei "
                                )
                                save_input = input(str(self.USER_INPUT))
                                print()
                                if save_input == "1":
                                    empl_pick = int(
                                        empl_pick
                                    ) - 1  # þar sem staðsetningar í lista telja frá 0 og upp ekki 1 og upp
                                    self.depart_voyage_info[
                                        8] = flight_service_m_list[empl_pick][
                                            0]
                                    self.arriv_voyage_info[
                                        8] = flight_service_m_list[empl_pick][
                                            0]
                                    print("Yfirflugþjónn vistaður")
                                    print()
                                else:
                                    empl_pick = "r"
                                    print("Yfirflugþjón ekki vistaður")

                if empl_pick == "4":
                    flight_attendant_list = Voyage_crew_service(
                        self.depart_voyage_info[3],
                        self.depart_voyage_info[5]).get_fa()
                    if flight_attendant_list == []:
                        print(
                            "Engir lausir flugþjónar fyrir fyrir þetta flug, vinsamlegast velud aðra dagsettningu"
                        )
                        pass
                    else:
                        print(
                            self.__new_voyage.prnt_str(flight_attendant_list))
                        empl_pick = input(self.PICK)
                        print()
                        while empl_pick.isdigit() == False or int(
                                empl_pick
                        ) > len(flight_attendant_list) or int(
                                empl_pick
                        ) < 1:  # the inputed integer has to be in the capt list range
                            print(self.BORDER * self.WITDH + "\n" +
                                  int((self.WITDH -
                                       len("Nýskrá starfsmenn vinnuferðar")) /
                                      2) * " " +
                                  "Nýskrá starfsmenn vinnuferðar" + "\n" +
                                  self.BORDER * self.WITDH)
                            print(self.PICK + "\n")
                            print("Veldu yfirflugþjón úr listanum!")
                            print(
                                self.__new_voyage.prnt_str(
                                    flight_attendant_list))
                            empl_pick = input(self.PICK)

                        else:
                            save_input = ""
                            empl_pick = int(empl_pick)
                            if save_input != "1" and save_input != "2":  # Ef hvorki 2 né 1 er sleginn inn þá er aftur spurt um input
                                print(self.GO_BACK + "\n")
                                print(
                                    "Viltu vista yfirflugþjóninn? \n'1' - Já \n'2' - Nei "
                                )
                                save_input = input(str(self.USER_INPUT))
                                print()
                                if save_input == "1":
                                    empl_pick = int(
                                        empl_pick
                                    ) - 1  # þar sem staðsetningar í lista telja frá 0 og upp ekki 1 og upp
                                    self.depart_voyage_info[
                                        9] = flight_attendant_list[empl_pick][
                                            0]
                                    self.arriv_voyage_info[
                                        9] = flight_attendant_list[empl_pick][
                                            0]
                                    print("Yfirflugþjónn vistaður")
                                    print()
                                else:
                                    empl_pick = "r"
                                    print("Yfirflugþjón ekki vistaður")
                if empl_pick == "5":
                    flight_attendant_list = Voyage_crew_service(
                        self.depart_voyage_info[3],
                        self.depart_voyage_info[5]).get_fa()
                    if flight_attendant_list == []:
                        print(
                            "Engir lausir aðstoðarflugmenn fyrir fyrir þetta flug, vinsamlegast velud aðra dagsettningu"
                        )
                        pass
                    else:
                        print(
                            self.__new_voyage.prnt_str(flight_attendant_list))
                        empl_pick = input(self.PICK)
                        print()
                        while empl_pick.isdigit() == False or int(
                                empl_pick
                        ) > len(flight_attendant_list) or int(
                                empl_pick
                        ) < 1:  # the inputed integer has to be in the capt list range
                            print(self.BORDER * self.WITDH + "\n" +
                                  int((self.WITDH -
                                       len("Nýskrá starfsmenn vinnuferðar")) /
                                      2) * " " +
                                  "Nýskrá starfsmenn vinnuferðar" + "\n" +
                                  self.BORDER * self.WITDH)
                            print(self.PICK + "\n")
                            print("Veldu yfirflugþjón úr listanum!")
                            print(
                                self.__new_voyage.prnt_str(
                                    flight_attendant_list))
                            empl_pick = input(self.PICK)

                        else:
                            save_input = ""
                            empl_pick = int(empl_pick)
                            if save_input != "1" and save_input != "2":  # Ef hvorki 2 né 1 er sleginn inn þá er aftur spurt um input
                                print(self.GO_BACK + "\n")
                                print(
                                    "Viltu vista yfirflugþjóninn? \n'1' - Já: \n'2' - Nei: "
                                )
                                save_input = input(str(self.USER_INPUT))
                                print()
                                if save_input == "1":
                                    empl_pick = int(
                                        empl_pick
                                    ) - 1  # þar sem staðsetningar í lista telja frá 0 og upp ekki 1 og upp
                                    self.depart_voyage_info[
                                        10] = flight_attendant_list[empl_pick][
                                            0]
                                    self.arriv_voyage_info[
                                        10] = flight_attendant_list[empl_pick][
                                            0]
                                    print("Yfirflugþjónn vistaður")
                                    print()
                                else:
                                    empl_pick = "r"
                                    print("Yfirflugþjón ekki vistaður")

    def save_voyage(self):
        #First the user has to pick a destination, date and aricraft so that he can save the voyage
        if self.arriv_voyage_info[5] == 5:
            print("Skráðu fyrst flugvél vinnuferðar!")
        elif self.arriv_voyage_info[4] == 4:
            print("Skráðu fyrst dagsetningu brottfarar!")
        elif self.chosen_destination == "":  # To make sure that there is a chosend destination to find out all the dates and times
            print("Veldu fyrst áfangarstað!")
        else:
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Nýskrá starfsmenn vinnuferðar")) /
                      2) * " " + "Nýskrá starfsmenn vinnuferðar" + "\n" +
                  self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print("Viltu vista vinnuferð með eftirfarandi upplýsingum?")
            print()
            print("Brottfarartími frá Íslandi: {}".format(
                self.depart_voyage_info[1]))
            print("Lendingartími á áfangarstað: {}".format(
                self.depart_voyage_info[2]))
            print("Brottfarartími frá áfangarstað: {}".format(
                self.arriv_voyage_info[3]))
            print("Lendingartími á Íslandi: {}".format(
                self.arriv_voyage_info[4]))
            print("Flugvél: {}".format(self.depart_voyage_info[5]))
            print("Flugstjóri: {}".format(self.depart_voyage_info[6]))
            print("Aðstoðarflugmaður: {}".format(self.depart_voyage_info[7]))
            print("Yfir flugþjónn: {}".format(self.depart_voyage_info[8]))
            print("Flugþjónn: {}".format(self.depart_voyage_info[9]))
            print("Flugþjónn 3: {}".format(self.depart_voyage_info[10]))
            print()
            save_input = ""
            if save_input != "1" and save_input != "2":  # Ef hvorki 2 né 1 er sleginn inn þá er aftur spurt um input
                print(self.GO_BACK + "\n")
                print("Viltu vista Vinnuferð \n'1' - Já \n'2' - Nei ")
                save_input = input(str(self.USER_INPUT))
                print()
                if save_input == "1":
                    flight_nums = self.__new_voyage.add_flight_nums(
                        self.depart_voyage_info[2]
                    )  # adds flight numbers to the voyage
                    self.depart_voyage_info[0] = flight_nums[0]
                    self.arriv_voyage_info[0] = flight_nums[1]
                    the_voyage_str = Voyage(self.depart_voyage_info,
                                            self.arriv_voyage_info
                                            )  #turn the lists into to strings
                    self.__new_voyage.add_voyage(str(the_voyage_str))

                else:
                    print("Vinnuferð ekki vistuð.")
                    self.voyage_menu()
class GetUI():
    def __init__(self):
        self.__get_employee = Employee_service()
        self.__get_destination = Destination_service()
        self.__get_pastflight = Past_flight_service()
        self.__get_upcflight = Upcoming_flight_service()
        self.__get_voyage = Voyage_service()
        #self.__get_worktime = Worktime_service()

        self.WITDH = 50
        self.BORDER = "*"
        self.QUIT = "'q' - Hætta"
        self.GO_BACK = "'r' - Til baka"
        self.PICK = "Veldu skipun:"
        self.USER_INPUT = ("Valin skipun: ")
        # self.get_menu()

    ###########################################################################
    ############################### get sub menu ##############################
    ###########################################################################
    def get_menu(self):
        get_input = ""
        while get_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Sækja")) / 2) * " " + "Sækja" + "\n" +
                  self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print(self.GO_BACK + "\n")
            print("'1' - Starfsmann" + "\n" + "'2' - Áfangastað" + "\n" +
                  "'3' - Vinnuferð" + "\n" + "'4' - Vinnutímar starfsmanna" +
                  "\n")
            get_input = input(self.USER_INPUT)
            print()
            if get_input != "r":
                if get_input == "1":
                    self.employee_menu()
                if get_input == "2":
                    self.destination_menu()
                if get_input == "3":
                    self.voyage_menu()
                if get_input == "4":
                    self.worktime_menu()
                else:
                    print("Vinsamlegast veldu eitt af eftirfarandi!")
                    break
            else:
                pass

    def employee_menu(self):
        ''' If the user inputed '1' he gets to the employee menu. Here the user can choose what information he whants to see
            he can choose to see all employees in a list, only the pilots, only the flight attendants or look up a specific employee
            by his ssn number '''
        get_input = ""
        if get_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Sækja starfsmann")) / 2) * " " +
                  "Sækja starfsmann" + "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print(self.GO_BACK + "\n")
            print("'1'- Allir starfsmenn")
            print("'2' - Flugmenn")
            print("'3' - Flugþjónn")
            print("'4' - Leita af starfsmanni")
            print()
            get_input = input(self.USER_INPUT)
            while get_input != "1" and get_input != "2" and get_input != "3" and get_input != "4" and get_input != "r":  # We have to make sure that if the user inputs something that is not available there will not be an error
                print("Innsláttarvilla!\nVinsamlegast veldu aftur")
                print(self.BORDER * self.WITDH + "\n" +
                      int((self.WITDH - len("Sækja starfsmann")) / 2) * " " +
                      "Sækja starfsmann" + "\n" + self.BORDER * self.WITDH)
                print(self.PICK + "\n")
                print(self.GO_BACK + "\n")
                print("'1'- Allir starfsmenn")
                print("'2' - Flugmenn")
                print("'3' - Flugþjónn")
                print("'4' - Leita af starfsmanni")
                get_input = input(self.USER_INPUT)

            if get_input == "1":
                print(self.__get_employee.get_allemployees()
                      )  # Prints all the employees, their ssn, name and role
                while get_input != "r":
                    print(self.GO_BACK + "\n")
                    get_input = input(self.USER_INPUT)
                else:
                    self.employee_menu()

            if get_input == "2":  #Get only pilots
                print()
                print(self.__get_employee.get_pilots())
                while get_input != "r":
                    print(self.GO_BACK + "\n")
                    get_input = input(self.USER_INPUT)
                else:
                    self.employee_menu()

            if get_input == "3":  #Get flight attendants
                print()
                print(self.__get_employee.get_flightattendants())
                while get_input != "r":
                    print(self.GO_BACK + "\n")
                    get_input = input(self.USER_INPUT)
                else:
                    self.employee_menu()

            if get_input == "4":  # Get one employee by his ssn number and the user inputs the ssn
                print()
                print(self.GO_BACK + "\n")
                employee_ssn_input = ""
                while employee_ssn_input != "r":
                    employee_ssn_input = input("Kennitala starfsmanns: ")
                    empl_info_lst = self.__get_employee.get_employee(
                        employee_ssn_input)
                    if empl_info_lst != False:  # If empl_info_list returns false then the employee is not in the system/or the ssn was inputed wrong
                        if get_input != "r":
                            info_output = Employee(empl_info_lst)
                            print(self.BORDER * self.WITDH + "\n" +
                                  int((self.WITDH - len("Sækja starfsmann")) /
                                      2) * " " + "Sækja starfsmanni" + "\n" +
                                  self.BORDER * self.WITDH)
                            print(self.PICK + "\n")
                            print(self.GO_BACK + "\n")
                            print("Kennitala: {}".format(
                                info_output.get_ssn()))
                            print("Nafn: {}".format(info_output.get_name()))
                            print("Starfsheiti: {}".format(
                                info_output.get_role()))
                            print("Stöðugildi: {}".format(
                                info_output.get_rank()))
                            print("Leyfi: {}".format(
                                info_output.get_licence()))
                            print("Heimilisfang: {}".format(
                                info_output.get_address()))
                            print("Símanúmer: {}".format(
                                info_output.get_phone()))
                            print()
                            get_input = input(self.USER_INPUT)
                        else:
                            self.employee_menu()
                    else:
                        if employee_ssn_input == "r":
                            self.employee_menu()
                        print()
                        print("Starfsmaður ekki til! Vitlaus kennitala.")
                        print()

    def destination_menu(self):
        ''' The program prints a list of all the available destinations and the user can choose which one he wants to get more information on
            he cannot do anything with the infirmation other then look at it'''
        get_input = ""
        while get_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Sækja áfangastað")) / 2) * " " +
                  "Sækja áfangastað" + "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            prnt_str, counter = self.__get_destination.get_alldest(
            )  #Prints a list of all the destinations and the counter for how many destinations there are
            print(prnt_str)
            print(self.GO_BACK + "\n")
            get_input = input(
                self.USER_INPUT
            )  # User chooses which destination he wants to get more info on
            if get_input.isdigit(
            ) == False:  # if the user doesnt input a number then make him choose again
                if get_input == "r":
                    self.get_menu()
                    break
                else:
                    print("Veldu áfangastað sem er í boði!")
                    self.destination_menu()
                    break
            elif get_input.isdigit() == True and int(get_input) >= 1 and int(
                    get_input) <= int(counter -
                                      1):  # the user inputs must be a digit
                if get_input != "r":
                    print()
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Áfangastaður")) / 2) * " " +
                          "Áfangastaður" + "\n" + self.BORDER * self.WITDH)
                    print(self.PICK + "\n")
                    chosen_dest = self.__get_destination.get_dest(
                        get_input
                    )  #Takes the users input and sends it to get the destinaton he chose
                    output = Destination(chosen_dest)
                    print("Áfangastaður: {}".format(
                        output.get_destinationName()))
                    print("Flugvöllur: {}".format(output.get_destinationId()))
                    print("Flugtími: {}".format(output.get_flighttime()))
                    print("Fjarlægð: {}".format(output.get_distance()))
                    print("Tengiliður: {}".format(output.get_contact()))
                    print("Neyðarsímanúmer: {}".format(output.get_phone()))
                    while get_input != "r":
                        print()
                        print(self.GO_BACK + "\n")
                        get_input = input(self.USER_INPUT)
                    if get_input == "r":
                        self.destination_menu()
                        break
                else:
                    self.get_menu()
                    break

    def voyage_menu(self):
        ''' Here the user can choose to se old or new voyages, and in both of those categories he can choose to se a 
            voyage on a specific date or to see all voyages in a certain time window that he chooses'''
        get_input = ""
        while get_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Sækja vinnuferðir")) / 2) * " " +
                  "Sækja vinnuferðir" + "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print("'1' - Til að sjá gamlar vinnuferðir")
            print("'2' - Til að sjá áætlaðir vinnuferðir")
            print()
            print(self.GO_BACK + "\n")
            get_input = input(self.USER_INPUT)
            if get_input != "1" and get_input != "2" and get_input != "r":
                print("Vinsamlegast veldu eitt af eftirfarandi!")
                self.voyage_menu()
            if get_input == "r":
                self.get_menu()
                break
            elif get_input == "1":
                print(self.BORDER * self.WITDH + "\n" +
                      int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                      "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                print(self.PICK + "\n")
                print("'1' - Sjá gamlar vinnuferðir á tímabili")
                print("'2' - Sjá gamlar vinnuferðir á ákveðni dagsetningu")
                print()
                print(self.GO_BACK + "\n")
                old_voyage = input(self.USER_INPUT)
                if old_voyage != "1" and old_voyage != "2" and old_voyage != "r":
                    print("Vinsamlegast veldu eitt af eftirfarandi!")
                elif old_voyage == "1":
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                          "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                    print(self.PICK + "\n")
                    first_date = "Skráðu fyrri dagsetningu tímabilsins"
                    next_date = "Skráðu seinni dagsetning tímabilsins "
                    date1 = self.__get_voyage.get_date_voyage(
                        first_date
                    )  # this is a fucntion were the user inputs the dates
                    date2 = self.__get_voyage.get_date_voyage(next_date)
                    if date1 == False or date2 == False:  # To make sure that the user inputs a date that is available
                        print()
                        print(
                            "Vitlausar dagsetningar!\nSkráðu réttan brottfarartíma!"
                        )
                        self.voyage_menu()
                        break
                    else:
                        past_flightss = self.__get_pastflight.get_pastflights(
                            date1, date2)
                        print(self.BORDER * self.WITDH + "\n" +
                              int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                              "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                        print(past_flightss)
                elif old_voyage == "2":
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                          "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                    print(self.PICK + "\n")
                    only_date = "Skráðu dagsetnungu vinnuferða"
                    date = self.__get_voyage.get_date_voyage(only_date)
                    past_flight = self.__get_pastflight.get_pastflight(date)
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                          "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                    print()
                    print(past_flight)
                    print()

            elif get_input == "2":
                print(self.BORDER * self.WITDH + "\n" +
                      int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                      "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                print(self.PICK + "\n")
                print("'1' - Sjá áætlaðar vinnuferðir á tímabili")
                print("'2' - Sjá áætlaðar vinnuferðor á ákveðni dagsetningu")
                print()
                print(self.GO_BACK + "\n")
                upcm_voyage = input(self.USER_INPUT)
                print()
                if upcm_voyage != "1" and upcm_voyage != "2" and upcm_voyage != "r":
                    print("Vinsamlegast veldu eitt af eftirfarandi!")
                elif upcm_voyage == "1":
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                          "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                    print(self.PICK + "\n")
                    first_date = "Skráðu fyrri dagsetningu tímabilsins"
                    next_date = "Skráðu seinni dagsetning tímabilsins "
                    date1 = self.__get_voyage.get_date_voyage(first_date)
                    date2 = self.__get_voyage.get_date_voyage(next_date)
                    if date1 == False or date2 == False:
                        print()
                        print(
                            "Vitlausar dagsetningar!\nSkráðu réttan brottfarartíma!"
                        )
                        self.voyage_menu()
                        break
                    else:
                        upc_flightss = self.__get_upcflight.get_upcomingflights(
                            date1, date2)
                        print(self.BORDER * self.WITDH + "\n" +
                              int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                              "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                        print(upc_flightss)
                elif upcm_voyage == "2":
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                          "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                    print(self.PICK + "\n")
                    only_date = "Skráðu dagsetningu vinnuferða"
                    date = self.__get_voyage.get_date_voyage(only_date)
                    upc_flight = self.__get_upcflight.get_upcomingflight(date)
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Vinnuferð")) / 2) * " " +
                          "Vinnuferð" + "\n" + self.BORDER * self.WITDH)
                    print()
                    print(upc_flight)
                    print()

    def worktime_menu(self):
        ''' The user can choose to see a list of all the employees that are not / or are working on a specific date the user can 
            also see the work summary for one employee'''
        get_input = ""
        while get_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Sækja vinnutíma")) / 2) * " " +
                  "Sækja vinnutíma" + "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print(self.GO_BACK + "\n")
            print(
                "'1' - Sjá lista yfir alla starfsmenn sem eru ekki að vinna ákveðin dag"
            )
            print(
                "'2' - Sjá lista yfir alla starfsmenn sem eru að vinna ákveðin dag"
            )
            print("'3' - Sjá vinnuyfirlit fyrir ákveðins starfsmanns")
            print()
            get_input = input(self.USER_INPUT)
            if get_input != "1" and get_input != "2" and get_input != "3":
                print("Vinsamlegast veldu eitthvert af eftirfarandi!")
            elif get_input == "1":
                print(self.BORDER * self.WITDH + "\n" +
                      int((self.WITDH - len("Sækja vinnutíma")) / 2) * " " +
                      "Sækja vinnutíma" + "\n" + self.BORDER * self.WITDH)
                print(self.PICK + "\n")
                prnt_str = ("Skráðu dagsetningu")
                date = self.__get_voyage.get_date_voyage(
                    prnt_str)  # User chooses the date
                not_working = Worktime_service(date).not_working_list()
                print()
                print(self.__get_voyage.print_list(not_working))

            elif get_input == "2":
                print(self.BORDER * self.WITDH + "\n" +
                      int((self.WITDH - len("Sækja vinnutíma")) / 2) * " " +
                      "Sækja vinnutíma" + "\n" + self.BORDER * self.WITDH)
                print(self.PICK + "\n")
                prnt_str = ("Skráðu dagsetningu")
                date = self.__get_voyage.get_date_voyage(
                    prnt_str)  # User chooses the date
                working = Worktime_service(
                    date).print_working_list_destination()
                if working == " ":
                    print("Dagsetning ekki til")
                print()
                print(working)
                #print(self.__get_voyage.print_list(working))   # Prints out the list of employees that are working and the destination he is going to on that date

            elif get_input == "3":
                print(self.BORDER * self.WITDH + "\n" +
                      int((self.WITDH - len("Sækja vinnutíma")) / 2) * " " +
                      "Sækja vinnutíma" + "\n" + self.BORDER * self.WITDH)
                print(self.PICK + "\n")
                first_date = "\nSkráðu fyrri dagsetningu tímabilsins"
                next_date = "Skráðu seinni dagsetning tímabilsins "
                date1 = self.__get_voyage.get_date_voyage(first_date)
                date2 = self.__get_voyage.get_date_voyage(next_date)
                print()
                ssn_input = input("\nSkráðu kennitölu starfsmanns: ")
                if ssn_input != "r":
                    empl_info_lst = self.__get_employee.get_employee(ssn_input)
                if empl_info_lst != False:
                    upc_flightss = self.__get_upcflight.get_upcomingflights_list_selected_time(
                        date1, date2)
                    # print(upc_flightss)
                    print(
                        self.__get_upcflight.find_empl_worktime(
                            ssn_input, upc_flightss))
                else:
                    if ssn_input == "r":
                        self.worktime_menu()
                    print("Starfsmaður ekki til! Vitlaus kennitala.")
                    self.worktime_menu()
                    break
class ChangeUI():
    def __init__(self):
        self.__change_employee = Employee_service()
        self.__change_dest = Destination_service()
        self.__change_voyage = Voyage_service()
        self.__get_upcflight = Upcoming_flight_service()
        self.WITDH = 50
        self.BORDER = "*"
        self.QUIT = "'q' - Hætta"
        self.GO_BACK = "'r' - Til baka"
        self.PICK = "Veldu skipun:"
        self.USER_INPUT = ("Valin skipun: ")
        # self.change_menu()

    ###########################################################################
    ############################### change sub menu ###########################
    ###########################################################################
    def change_menu(self):
        change_input = ""  # til að maður geti bakkað um 1 í stað þess að quita bara
        while change_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Breyta")) / 2) * " " + "Breyta" +
                  "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print(self.GO_BACK + "\n")
            print("'1' - Starfsmann" + "\n" + "'2' - Vinnuferð" + "\n" +
                  "'3' - Áfangastað" + "\n")
            change_input = input(self.USER_INPUT).lower()
            print()
            if change_input != "r":
                if change_input == "1":
                    self.employee_menu()
                if change_input == "2":
                    self.voyage_menu()
                if change_input == "3":
                    self.destination_menu()
                else:
                    print(
                        "Vinsamlegast veldu eitt af eftir farandi möguleikum")
            break

################################## STARFSMENN VALINN ###########################################################

    def employee_menu(self):
        ''' The user has to choose a user to change by inputing his ssn. The user can not change the employees name or ssn but
        he can choose if he wants to change the role, rankm licence, address, phonenumber. '''
        change_employee_input = ""
        print(self.GO_BACK + "\n")
        employee_ssn_input = input("Kennitala starfsmanns: ")
        if employee_ssn_input != "r":
            empl_info_lst = self.__change_employee.get_employee(
                employee_ssn_input)
            if empl_info_lst != False:
                while change_employee_input != "r":
                    empl_info_lst = self.__change_employee.get_employee(
                        employee_ssn_input)
                    info_output = Employee(empl_info_lst)
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Breyta starfsmanni")) / 2) *
                          " " + "Breyta starfsmanni" + "\n" +
                          self.BORDER * self.WITDH)
                    print(self.PICK + "\n")
                    print("Kennitala: {}".format(info_output.get_ssn()))
                    print("Nafn: {}".format(info_output.get_name()))
                    print("'1' - Starfsheiti: {}".format(
                        info_output.get_role()))
                    print("'2' - Stöðugildi: {}".format(
                        info_output.get_rank()))
                    print("'3' - Leyfi: {}".format(info_output.get_licence()))
                    print("'4' - Heimilisfang: {}".format(
                        info_output.get_address()))
                    print("'5' - Símanúmer: {}".format(
                        info_output.get_phone()))
                    print()
                    print(self.GO_BACK + "\n")
                    change_employee_input = input(
                        self.USER_INPUT
                    )  # Input what attribute you whant to change
                    print()
                    if change_employee_input == "r":
                        self.change_menu
                    elif change_employee_input != "1" and change_employee_input != "2" and change_employee_input != "3" and change_employee_input != "4" and change_employee_input != "5":
                        print("Vinsamlegast veldu það sem þú vilt breyta!")
                        pass
                    else:
                        # Go back if you dont whant to edit what you picked
                        print(self.GO_BACK + "\n")
                        the_change = input("Skráðu breytingu: ")
                        if the_change != "r":
                            save_input = ""
                            if save_input != "1" and save_input != "2":
                                print(
                                    "\nViltu vista starfsmanninn \n'1' - Já: \n'2' - Nei: "
                                )
                                save_input = input(str(self.USER_INPUT))
                                print()
                            if save_input == "1":

                                print(
                                    self.__change_employee.change_employee(
                                        change_employee_input, the_change,
                                        employee_ssn_input))
                            else:
                                pass
                else:
                    self.employee_menu()
            else:
                if employee_ssn_input == "r":
                    self.change_menu()
                print("Starfsmaður ekki til! Vitlaus kennitala.")
                self.employee_menu()
        else:
            self.change_menu()

################################## VINNUFERÐ VALINN###########################################################

    def voyage_menu(self):
        ''' The user can change what employees are on a voyage. He first has to find a voyage by inputing a specific date, then he 
        can choose from 5 employee slots to fill in or change employees that were already in the voyage out '''
        change_input = ""
        while change_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Breyta vinnuferð")) / 2) * " " +
                  "Breyta vinnuferð" + "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            print(self.GO_BACK)
            print("'Enter' - Til að velja dagsetningu.")
            print()
            change_input = input("Viltu velja dagsetningu? ")
            if change_input == "r":
                self.change_menu()
                break
            else:
                a_prnt_str = "Veldu dagsetningu vinnuferðar sem þú vilt breyta"
                date = self.get_date_voyage(a_prnt_str)
                the_flight = self.__get_upcflight.get_upcomingflight_list(date)
                if the_flight[
                        1] != "KEF":  # To make sure that the user inputs a departing date
                    print()
                    print("Flug fannst ekki!\nSkráðu réttan brottfarartíma!")
                    self.voyage_menu()
                    break

                else:
                    change_flight = self.__get_upcflight.get_upcomingflight(
                        date)
                    date1, date2 = self.__get_upcflight.get_upcoming_voyage(
                        date)
                    while change_input != "r":
                        print(self.BORDER * self.WITDH + "\n" +
                              int((self.WITDH - len("Breyta vinnuferð")) / 2) *
                              " " + "Breyta vinnuferð" + "\n" +
                              self.BORDER * self.WITDH)
                        print(self.PICK + "\n")
                        print(change_flight)
                        print("Starfsmenn vinnuferðar")
                        print("'1' - Flugstjóri: {}".format(date1[6]))
                        print("'2' - Aðstoðarflugmaður:  {}".format(date1[7]))
                        print("'3' - Yfirflugþjónn: {}".format(date1[8]))
                        print("'4' - Flugþjónn 1: {}".format(date1[9]))
                        print("'5' - Flugþjónn 2: {}".format(date1[10]))
                        print()
                        print(self.GO_BACK + "\n")
                        change_input = input(self.USER_INPUT).lower()
                        if change_input != "1" and change_input != "2" and change_input != "3" and change_input != "4" and change_input != "5":
                            if change_input == "r":
                                self.voyage_menu()
                            else:
                                print(
                                    "Vinsamlegast veldu starfsmann til að breyta/skrá í vinnuferð!"
                                )
                                pass
                        else:
                            if change_input == "1":
                                print(self.BORDER * self.WITDH + "\n" + int(
                                    (self.WITDH - len("Lausir starfsmenn")) /
                                    2) * " " + "Lausir starfsmenn" + "\n" +
                                      self.BORDER * self.WITDH)
                                print(self.PICK + "\n")
                                print("Breyta/skrá flugstjóra.")
                                print()
                                capt_list = Voyage_crew_service(
                                    date1[3], date1[5]).get_captain()
                                if capt_list == []:
                                    print(
                                        "Engir lausir flugstjórar fyrir þessa vél, vinsamlegast veldu aðra vél"
                                    )
                                    pass
                                else:
                                    print(
                                        self.__change_voyage.prnt_str(
                                            capt_list))
                                    change_input = input(self.USER_INPUT)
                                    print()
                                    while change_input.isdigit(
                                    ) == False or int(change_input) > len(
                                            capt_list) or int(
                                                change_input) < 1:
                                        print(self.BORDER * self.WITDH + "\n" +
                                              int((self.WITDH -
                                                   len("Breyta vinnuferð")) /
                                                  2) * " " +
                                              "Breyta vinnuferð" + "\n" +
                                              self.BORDER * self.WITDH)
                                        print(self.PICK + "\n")
                                        print("Veldu flugstjóra úr listanum!")
                                        print(
                                            self.__change_voyage.prnt_str(
                                                capt_list))
                                        change_input = input(self.USER_INPUT)
                                    else:
                                        save_input = ""
                                        change_input = int(change_input)
                                        if save_input != "1" and save_input != "2":
                                            print(self.GO_BACK + "\n")
                                            print(
                                                "Viltu vista flugstjóran? \n'1' - Já: \n'2' - Nei: "
                                            )
                                            save_input = input(
                                                str(self.USER_INPUT))
                                            print()
                                        if save_input == "1":
                                            change_input = int(
                                                change_input) - 1
                                            date1[6] = capt_list[change_input][
                                                0]
                                            date2[6] = capt_list[change_input][
                                                0]
                                            self.__get_upcflight.change_upcoming_voyage(
                                                date1, date2)
                                            print("Flugstjóri vistaður")
                                            print()
                                        else:
                                            empl_pick = "r"
                                            print("Flugstjóri ekki vistaður")

                            if change_input == "2":
                                print(self.BORDER * self.WITDH + "\n" + int(
                                    (self.WITDH - len("Lausir starfsmenn")) /
                                    2) * " " + "Lausir starfsmenn" + "\n" +
                                      self.BORDER * self.WITDH)
                                print(self.PICK + "\n")
                                print("Breyta/skrá  aðstoðarflugmanni.")
                                copilot_list = Voyage_crew_service(
                                    date1[3], date1[5]).get_copilot()
                                if copilot_list == []:
                                    print(
                                        "Engir lausir aðstoðarflugmenn fyrir þessa vél, vinsamlegast veldu aðra vél"
                                    )
                                    pass
                                else:
                                    print(
                                        self.__change_voyage.prnt_str(
                                            copilot_list))
                                    change_input = input(self.USER_INPUT)
                                    print()
                                    while change_input.isdigit(
                                    ) == False or int(change_input) > len(
                                            copilot_list) or int(
                                                change_input) < 1:
                                        print(self.BORDER * self.WITDH + "\n" +
                                              int((self.WITDH -
                                                   len("Breyta vinnuferð")) /
                                                  2) * " " +
                                              "Breyta vinnuferð" + "\n" +
                                              self.BORDER * self.WITDH)
                                        print(self.PICK + "\n")
                                        print(
                                            "Veldu aðstoðarflugmann úr listanum!"
                                        )
                                        print(
                                            self.__change_voyage.prnt_str(
                                                copilot_list))
                                        change_input = input(self.USER_INPUT)
                                    else:
                                        save_input = ""
                                        change_input = int(change_input)
                                        if save_input != "1" and save_input != "2":
                                            print(self.GO_BACK + "\n")
                                            print(
                                                "Viltu vista aðstoðarflugmanninn? \n'1' - Já: \n'2' - Nei: "
                                            )
                                            save_input = input(
                                                str(self.USER_INPUT))
                                            print()
                                        if save_input == "1":
                                            change_input = int(
                                                change_input) - 1
                                            date1[7] = copilot_list[
                                                change_input][0]
                                            date2[7] = copilot_list[
                                                change_input][0]
                                            self.__get_upcflight.change_upcoming_voyage(
                                                date1, date2)
                                            print("Flugstjóri vistaður")
                                            print()
                                        else:
                                            empl_pick = "r"
                                            print(
                                                "Aðstoðarflugmann ekki vistaður"
                                            )

                            if change_input == "3":
                                print(self.BORDER * self.WITDH + "\n" + int(
                                    (self.WITDH - len("Lausir starfsmenn")) /
                                    2) * " " + "Lausir starfsmenn" + "\n" +
                                      self.BORDER * self.WITDH)
                                print(self.PICK + "\n")
                                print("Breyta/skrá  yfirflugþjóni.")
                                flight_service_m_list = Voyage_crew_service(
                                    date1[3], date1[5]).get_fsm()
                                if flight_service_m_list == []:
                                    print(
                                        "Engir lausir yfirflugþjónar fyrir þessa dagsetningu!"
                                    )
                                    pass
                                else:
                                    print(
                                        self.__change_voyage.prnt_str(
                                            flight_service_m_list))
                                    change_input = input(self.USER_INPUT)
                                    print()
                                    while change_input.isdigit(
                                    ) == False or int(change_input) > len(
                                            flight_service_m_list) or int(
                                                change_input) < 1:
                                        print(self.BORDER * self.WITDH + "\n" +
                                              int((self.WITDH -
                                                   len("Breyta vinnuferð")) /
                                                  2) * " " +
                                              "Breyta vinnuferð" + "\n" +
                                              self.BORDER * self.WITDH)
                                        print(self.PICK + "\n")
                                        print(
                                            "Veldu yfirflugþjón úr listanum!")
                                        print(
                                            self.__change_voyage.prnt_str(
                                                flight_service_m_list))
                                        change_input = input(self.USER_INPUT)
                                    else:
                                        save_input = ""
                                        change_input = int(change_input)
                                        if save_input != "1" and save_input != "2":
                                            print(self.GO_BACK + "\n")
                                            print(
                                                "Viltu vista yfirflugþjóninn? \n'1' - Já: \n'2' - Nei: "
                                            )
                                            save_input = input(
                                                str(self.USER_INPUT))
                                            print()
                                        if save_input == "1":
                                            change_input = int(
                                                change_input) - 1
                                            date1[8] = flight_service_m_list[
                                                change_input][0]
                                            date2[8] = flight_service_m_list[
                                                change_input][0]
                                            self.__get_upcflight.change_upcoming_voyage(
                                                date1, date2)
                                            print("Yfirflugþjónn vistaður")
                                            print()
                                        else:
                                            empl_pick = "r"
                                            print(
                                                "Yfirflugþjónn ekki vistaður")

                            if change_input == "4":
                                print(self.BORDER * self.WITDH + "\n" + int(
                                    (self.WITDH - len("Lausir starfsmenn")) /
                                    2) * " " + "Lausir starfsmenn" + "\n" +
                                      self.BORDER * self.WITDH)
                                print(self.PICK + "\n")
                                print("Breyta/skrá flugþjóni 1.")
                                flight_attendant_list = Voyage_crew_service(
                                    date1[3], date1[5]).get_fa()
                                if flight_attendant_list == []:
                                    print(
                                        "Engir lausir flugþjónar fyrir þessa dagsetningu!"
                                    )
                                    pass
                                else:
                                    print(
                                        self.__change_voyage.prnt_str(
                                            flight_attendant_list))
                                    change_input = input(self.USER_INPUT)
                                    print()
                                    while change_input.isdigit(
                                    ) == False or int(change_input) > len(
                                            flight_attendant_list) or int(
                                                change_input) < 1:
                                        print(self.BORDER * self.WITDH + "\n" +
                                              int((self.WITDH -
                                                   len("Breyta vinnuferð")) /
                                                  2) * " " +
                                              "Breyta vinnuferð" + "\n" +
                                              self.BORDER * self.WITDH)
                                        print(self.PICK + "\n")
                                        print("Veldu flugþjóna úr listanum!")
                                        print(
                                            self.__change_voyage.prnt_str(
                                                flight_attendant_list))
                                        change_input = input(self.USER_INPUT)
                                    else:
                                        save_input = ""
                                        change_input = int(change_input)
                                        if save_input != "1" and save_input != "2":
                                            print(self.GO_BACK + "\n")
                                            print(
                                                "Viltu vista flugþjóninn? \n'1' - Já: \n'2' - Nei: "
                                            )
                                            save_input = input(
                                                str(self.USER_INPUT))
                                            print()
                                        if save_input == "1":
                                            change_input = int(
                                                change_input) - 1
                                            date1[9] = flight_attendant_list[
                                                change_input][0]
                                            date2[9] = flight_attendant_list[
                                                change_input][0]
                                            self.__get_upcflight.change_upcoming_voyage(
                                                date1, date2)
                                            print("Flugþjónn  vistaður")
                                            print()
                                        else:
                                            empl_pick = "r"
                                            print("Flugþjónn ekki vistaður")

                            if change_input == "5":
                                print(self.BORDER * self.WITDH + "\n" + int(
                                    (self.WITDH - len("Lausir starfsmenn")) /
                                    2) * " " + "Lausir starfsmenn" + "\n" +
                                      self.BORDER * self.WITDH)
                                print(self.PICK + "\n")
                                print("Breyta/skrá  flugjóni 2.")
                                flight_attendant_list = Voyage_crew_service(
                                    date1[3], date1[5]).get_fa()
                                if flight_attendant_list == []:
                                    print(
                                        "Engir lausir flugþjónar fyrir þessa dagsetningu!"
                                    )
                                    pass
                                else:
                                    print(
                                        self.__change_voyage.prnt_str(
                                            flight_attendant_list))
                                    change_input = input(self.USER_INPUT)
                                    print()
                                    while change_input.isdigit(
                                    ) == False or int(change_input) > len(
                                            flight_attendant_list) or int(
                                                change_input) < 1:
                                        print(self.BORDER * self.WITDH + "\n" +
                                              int((self.WITDH -
                                                   len("Breyta vinnuferð")) /
                                                  2) * " " +
                                              "Breyta vinnuferð" + "\n" +
                                              self.BORDER * self.WITDH)
                                        print(self.PICK + "\n")
                                        print("Veldu flugþjón úr listanum!")
                                        print(
                                            self.__change_voyage.prnt_str(
                                                flight_attendant_list))
                                        change_input = input(self.USER_INPUT)
                                    else:
                                        save_input = ""
                                        change_input = int(change_input)
                                        if save_input != "1" and save_input != "2":
                                            print(self.GO_BACK + "\n")
                                            print(
                                                "Viltu vista flugþjóninn? \n'1' - Já: \n'2' - Nei: "
                                            )
                                            save_input = input(
                                                str(self.USER_INPUT))
                                            print()
                                        if save_input == "1":
                                            change_input = int(
                                                change_input) - 1
                                            date1[10] = flight_attendant_list[
                                                change_input][0]
                                            date2[10] = flight_attendant_list[
                                                change_input][0]
                                            self.__get_upcflight.change_upcoming_voyage(
                                                date1, date2)
                                            print("Flugþjónn  vistaður")
                                            print()
                                        else:
                                            empl_pick = "r"
                                            print("Flugþjónn  ekki vistaður")

################################## Áfangastað VALINN###########################################################

    def destination_menu(self):
        ''' The user can change the contact and emergency phone for all of the destinations. '''
        change_input = ""
        if change_input != "r":
            print(self.BORDER * self.WITDH + "\n" +
                  int((self.WITDH - len("Breyta áfangastað")) / 2) * " " +
                  "Breyta áfangastað" + "\n" + self.BORDER * self.WITDH)
            print(self.PICK + "\n")
            prnt_str, counter = self.__change_dest.get_alldest(
            )  # prints out a list of all available destinations
            print(prnt_str)
            print(self.GO_BACK + "\n")
            change_input = input(self.USER_INPUT)
            if change_input.isdigit(
            ) == False:  # if the user doesnt input a number then send him back
                if change_input == "r":
                    self.change_menu()
                else:
                    print("Veldu áfangastað sem er í boði!")
                    self.destination_menu()
            elif change_input.isdigit() == True and int(
                    change_input) >= 1 and int(change_input) <= int(counter):
                print()
                chosen_dest = self.__change_dest.get_dest(change_input)
                output = Destination(chosen_dest)
                change_input = ""
                while change_input != "1" and change_input != "2":
                    if change_input == "r":
                        self.destination_menu()
                        break
                    print(self.BORDER * self.WITDH + "\n" +
                          int((self.WITDH - len("Breyta áfangastað")) / 2) *
                          " " + "Breyta áfangastað" + "\n" +
                          self.BORDER * self.WITDH)
                    print(self.PICK + "\n")
                    print("Áfangastaður: {}".format(
                        output.get_destinationName()))
                    print("Flugvöllur: {}".format(output.get_destinationId()))
                    print("Flugtími: {}".format(output.get_flighttime()))
                    print("Fjarlægð: {}".format(output.get_distance()))
                    print("'1' - Tengiliður: {}".format(output.get_contact()))
                    print("'2' - Neyðarsímanúmer: {}".format(
                        output.get_phone()))
                    print()
                    print(self.GO_BACK + "\n")
                    change_input = input(self.USER_INPUT).lower()
                    print()
                    if change_input != "1" and change_input != "2":  # contact
                        print("Skipun ekki til. Vinsmlegast reyndu aftur!")
                        pass
                    else:
                        print(self.GO_BACK + "\n")
                        the_change = input("Skráðu breytingu: ")
                        if the_change != "r":
                            save_input = ""
                            if save_input != "1" and save_input != "2":
                                print(
                                    "\nViltu vista áfangastað \n'1' - Já: \n'2' - Nei: "
                                )
                                save_input = input(str(self.USER_INPUT))
                                print()
                            if save_input == "1":
                                print("Áfangastaður vistaður ")
                                print(
                                    self.__change_dest.change_dest(
                                        change_input, the_change,
                                        chosen_dest[0]))
                                self.destination_menu()
                                break
                            else:
                                print("Áfangastaður ekki vistaður ")
                                pass
                        else:
                            print("Skipun ekki til. Vinsmlegast reyndu aftur!")
                            self.destination_menu()

        else:
            self.change_menu()

    def get_date_voyage(self, prnt_str):
        print(self.BORDER * self.WITDH + "\n" +
              int((self.WITDH - len("Breyta vinnuferð")) / 2) * " " +
              "Breyta vinnuferð" + "\n" + self.BORDER * self.WITDH)
        print(self.PICK + "\n")
        self.prnt_str = prnt_str
        print(prnt_str)
        print()
        year = input("Sláðu inn ár: ")  #Input a year
        while year.isdigit(
        ) == False:  # if its not a number then let them try again
            print("Vinsamlegast skráðu ár!")
            year = input("Sláðu inn ár: ")
        month = input("Sláðu inn númer mánaðar: ")
        while month.isdigit() == False:
            print("Vinsamlegast skráðu númer mánaðar!")
            month = input("Sláðu inn númer mánaðar: ")
        day = input("Sláðu inn dagsetningu: ")
        while day.isdigit() == False:
            print("Vinsamlegast skráðu dagsettningu!")
            day = input("Sláðu inn dagsettningu: ")
        hour = input("Sláðu inn klukkustund brottfarar: ")
        while hour.isdigit() == False:
            print("Vinsamlegast skráðu klukkutíma!")
            hour = input("Sláðu inn klukkustund brottfarar: ")
        mint = input("Sláðu inn mínútu brottfarar: ")
        while mint.isdigit() == False:
            print("Vinsamlegast skráðu mínútur!")
            mint = input("Sláðu inn mínútu brottfarar: ")
        user_chosen_date = [year, month, day, hour, mint, 0]
        date = self.__get_upcflight.add_date(
            user_chosen_date
        )  # The date gets set to the right format in add_date
        return date