#!/usr/bin/env python

from datetime import datetime, timedelta

from aman.types.ArrivalRoute import ArrivalRoute

class ArrivalTime:
    def __init__(self, **kargs):
        self.Star = None
        self.MaximumTimeToGain = None
        self.MaximumTimeToLose = None
        self.FlightTimeUntilIaf = None
        self.FlightTimeUntilTouchdown = None
        self.InitialArrivalTime = None
        self.EarliestArrivalTime = None
        self.LatestArrivalTime = None

        for key, value in kargs.items():
            if 'ttg' == key:
                if True == isinstance(value, timedelta):
                    self.MaximumTimeToGain = value
                elif True == isinstance(value, (int, float)):
                    self.MaximumTimeToGain = timedelta(seconds = float(value))
                else:
                    raise Exception('Invalid type for ttg')
            elif 'ttl' == key:
                if True == isinstance(value, timedelta):
                    self.MaximumTimeToLose = value
                elif True == isinstance(value, (int, float)):
                    self.MaximumTimeToLose = timedelta(seconds = float(value))
                else:
                    raise Exception('Invalid type for ttl')
            elif 'star' == key:
                if True == isinstance(value, ArrivalRoute):
                    self.Star = value
                else:
                    raise Exception('Invalid type for star')
            elif 'ita' == key:
                if True == isinstance(value, datetime):
                    self.InitialArrivalTime = value
                else:
                    raise Exception('Invalid type for ita')
            elif 'earliest' == key:
                if True == isinstance(value, datetime):
                    self.EarliestArrivalTime = value
                else:
                    raise Exception('Invalid type for earliest')
            elif 'latest' == key:
                if True == isinstance(value, datetime):
                    self.LatestArrivalTime = value
                else:
                    raise Exception('Invalid type for latest')
            elif 'touchdown' == key:
                if True == isinstance(value, timedelta):
                    self.FlightTimeUntilTouchdown = value
                else:
                    raise Exception('Invalid type for touchdown')
            elif 'entry' == key:
                if True == isinstance(value, timedelta):
                    self.FlightTimeUntilIaf = value
                else:
                    raise Exception('Invalid type for entry')
            else:
                raise Exception('Unknown key: ' + key)