def getNextAvailable()

in source/src/molecule-unfolding/lambda/DeviceAvailableCheckLambda/app.py [0:0]


def getNextAvailable(device):
    DaysEnum = {
        'Sunday': 6,
        'Monday': 0,
        'Tuesday': 1,
        'Wednesday': 2,
        'Thursday': 3,
        'Friday': 4,
        'Saturday': 5
    }

    window = device.properties.service.executionWindows[0]
    exec_days = window.executionDay.value

    # minimum time is 20 ms
    min_time = None
    calc_time = 0

    date = datetime.datetime.utcnow()

    # "Everyday" | "Weekdays" | "Weekend" | "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday" | "Sunday"
    if exec_days == 'Everyday':
        calc_time = getTimeDifference(date, window, range(0, 7))
    elif exec_days == 'Weekdays':
        calc_time = getTimeDifference(date, window, range(0, 6))
    elif exec_days == 'Weekend':
        calc_time = getTimeDifference(date, window, [5, 6])
    else:
        calc_time = getTimeDifference(date, window, [DaysEnum[exec_days]])

    if (min_time == None or calc_time < min_time):
        min_time = calc_time
    log.info("calc time {}".format(calc_time))
    if min_time == None:
        return 0
    else:
        return min_time/1000.