Ejemplo n.º 1
0
 def __init__(self):
     self.desIO = DestinationIO('IO/Data/Destinations.csv') # Hardcoded filenames - Only place to change the path is here
     self.voyIO = VoyageIO('IO/Data/Voyages.csv')
     self.plaIO = PlaneIO('IO/Data/Planes.csv')
     self.empIO = EmployeeIO('IO/Data/Crew.csv')
     self.rouIO = RouteIO('IO/Data/Routes.csv')
     self.typIO = PlaneTypeIO('IO/Data/AircraftType.csv')
Ejemplo n.º 2
0
    def addCaptain(self, voyage_id, date, employee_id):
        '''Captain added to an existing voyage'''

        # check if employee is working on inputted date
        is_unavailable_bool = self.isEmployeeWorkingOnDate(date, employee_id)

        if is_unavailable_bool:
            raise Exception("Staff member not available on this date")

        voyage_instance = VoyageIO.getOneVoyage(voyage_id)
        if voyage_instance is None:
            raise Exception("Voyage not found")
        # captain added to voyage instance
        voyage_instance.setCaptain(employee_id)
Ejemplo n.º 3
0
 def addVoyageToFile(self, new_voyage_str):
     '''Adds new voyage into file'''
     return VoyageIO().addVoyageToFile(new_voyage_str)
Ejemplo n.º 4
0
 def changeVoyageFile(self, voyage):
     '''Inserts a changed instance into file'''
     return VoyageIO().changeVoyageFile(voyage)
Ejemplo n.º 5
0
 def loadVoyageFromFile(self):
     '''Returns an instance list of all voyages'''
     return VoyageIO().loadVoyageFromFile()
Ejemplo n.º 6
0
class IOAPI ():

    def __init__(self):
        self.desIO = DestinationIO('IO/Data/Destinations.csv') # Hardcoded filenames - Only place to change the path is here
        self.voyIO = VoyageIO('IO/Data/Voyages.csv')
        self.plaIO = PlaneIO('IO/Data/Planes.csv')
        self.empIO = EmployeeIO('IO/Data/Crew.csv')
        self.rouIO = RouteIO('IO/Data/Routes.csv')
        self.typIO = PlaneTypeIO('IO/Data/AircraftType.csv')

    def loadDestinationFromFile (self):
        return self.desIO.loadFile()
    
    def storeDestinationToFile(self,dest):
        return self.desIO.storeDestinationToFile(dest)

    def updateContactInfoInFile(self,line_index,row_index,updated_info):
        return self.desIO.updateContactInfoInFile(line_index,row_index,updated_info)

    def loadVoyagesFromFile (self):
        return self.voyIO.loadFile()
    
    def storeVoyageToFile(self,voyage):
        routeOut = voyage.getRouteOut()
        routeIn = voyage.getRouteIn()
        self.rouIO.storeRouteOutToFile(routeOut)
        self.rouIO.storeRouteInToFile(routeIn)
        return self.voyIO.storeVoyageToFile(voyage)

    def updateVoyageInFile(self):
        return self.voyIO.updateVoyageInFile()

    def loadPlanesFromFile(self):
        return self.plaIO.loadFile()

    def storePlaneToFile(self,plane):
        return self.plaIO.storePlaneToFile(plane)

    def storePlaneTypeToFile(self,planeType):
        return self.typIO.storePlaneTypeToFile(planeType)
    
    def loadPlaneTypesFromFile(self):
        return self.typIO.loadFile()

    def loadEmployeesFromFile(self):
        return self.empIO.loadFile()

    def storeEmployeeToFile(self,employee):
        return self.empIO.storeEmployeeToFile(employee)

    def updateEmployeeInFile(self,line_index,row_index,updated_info):
        return self.empIO.updateEmployeeInFile(line_index,row_index,updated_info)

    def loadRoutesFromFile(self):
        return self.rouIO.loadFile()

    def storeRouteToFile(self):
        return self.rouIO.storeRouteToFile()

    def storeCrewToFile(self,voyage):
        return self.voyIO.storeCrewToFile(voyage)
        
    def storeRouteOutToFile(self,routeOut):
        return self.rouIO.storeRouteOutToFile(routeOut)

    def storeRouteInToFile(self,routeIn):
        return self.rouIO.storeRouteInToFile(routeIn)
Ejemplo n.º 7
0
class VoyageLL():

    def __init__(self):
        self.__io_voyage = VoyageIO()
        self.__employee = EmployeeIO()
        self.__destinatio = DestinationIO()

    def check_if_exists(self, check, num):
        """Checks if a specific destination element already exists in other destinations"""
        destination_set = self.__io_voyage.get_set(num)
        for elements in destination_set:
            if check == elements:
                return False
        else: 
            return True

    def load_voyage_from_file(self):
        self.__io_voyage.load_voyage_from_file()
        return str(self.__io_voyage)

    def load_all_voyages(self,ssn):
        a = self.__io_voyage.get_all_voyages_for_employee(ssn)
        return str(self.__io_voyage)

    def make_flight_number(self,date,destination_number):
        """Gets a list of all the flights that day to that destination. Makes the flight number"""
        flight_list = self.__io_voyage.make_flight_list(destination_number, date)
        flight_system = ["NA","XX","X"]

        flight_system[1] = destination_number

        if len(flight_list) == 0:
            length = len(flight_list)
        else:
            length = len(flight_list) + 1 #The voyage we are making would be the next element in that list

        flight_number1 = flight_system.copy()
        flight_number1[-1] = str(length*2)
        flight_number2 = flight_system.copy()
        flight_number2[-1] = str(length * 2 + 1)

        flight_number1 = "".join(flight_number1)
        flight_number2 = "".join(flight_number2)

        return flight_number1,flight_number2
    
    def create_voyage(self, new_voyage):
        start_of_journey , departure_time_out, arriving_abroad, aircraft_ID, captain, co_pilot, fsm, fa1, fa2= new_voyage.split(",")

        year,month,day,hour,minutes = departure_time_out.split("/")
        date = "{}-{}-{}".format(year,month,day)
        departure_time_out_datetime = datetime.datetime(int(year),int(month),int(day),int(hour),int(minutes))
        
        flight_time = self.__io_voyage.get_flight_time(arriving_abroad)

        hours, minutes = flight_time.split(".")

        arrival_time_abroad = departure_time_out_datetime + datetime.timedelta(hours = int(hours), minutes = int(minutes))
        departing_to_RVK = "KEF"
        departure_time_home = (arrival_time_abroad + datetime.timedelta(hours = 1))
        arrival_time_home = departure_time_home + datetime.timedelta(hours= int(hours), minutes = int(minutes))

        flight_number1,flight_number2 = self.make_flight_number(date,arriving_abroad)

        captain = self.__io_voyage.transform_ssn_into_user_name(captain)
        co_pilot = self.__io_voyage.transform_ssn_into_user_name(co_pilot)
        fsm  = self.__io_voyage.transform_ssn_into_user_name(fsm)
        fa1 = self.__io_voyage.transform_ssn_into_user_name(fa1)
        fa2 = self.__io_voyage.transform_ssn_into_user_name(fa2)
        self.__io_voyage.Add_voyage_to_file(start_of_journey, departure_time_out_datetime, arriving_abroad, arrival_time_abroad,flight_number1, departing_to_RVK, departure_time_home, arrival_time_home, aircraft_ID, captain, co_pilot, fsm, fa1, fa2, flight_number2)


    def change_voyage(self, date_time, change, new):
        self.__io_voyage.change_voyage(date_time,change,new) 

    def validate_departure(self,departure):
        try:
            year,month,day,hours,minutes = departure.split("/")
            departure = datetime.datetime(int(year),int(month),int(day),int(hours),int(minutes))
            now = datetime.datetime.now()
            if now < departure:
                if validate_departure_availability(self):
                    return True
        except ValueError:
            return False
        
    def validate_departure_availability(self):
        pass

    # Here comes validations form the former Flight_LL class

    def validate_departing_from(self, departing_from):   # Check if string only has alphabetical letters and is 3 letters long
        """ Validates whether "departing_from" is 3 letters long (e.g KEF) and that every letter is a part of the alphabet"""
        if len(departing_from) == 3:
            for letter in departing_from:
                if letter.isdigit() or letter in string.punctuation:
                    return False
        else:
            return False
        return True
    
    def validate_arriving_at(self, arriving_at):  # Check if string only has alphabetical letters and is 3 letters long
        """ Validates whether "arriving_at" is 3 letters long (e.g KEF) and that every letter is a part of the alphabet"""
        if len(arriving_at) == 3:
            for letter in arriving_at:
                if letter.isdigit() or letter in string.punctuation:
                    return False
        else:
            return False
        return True
       

    def show_voyages_on_a_day(self, date):
        self.__io_voyage.display_voyages_on_a_day(date)
        return str(self.__io_voyage)
Ejemplo n.º 8
0
 def __init__(self):
     self.__io_voyage = VoyageIO()
     self.__employee = EmployeeIO()
     self.__destinatio = DestinationIO()