def parse_time_input()

in lambda/src/medication_diary_bot.py [0:0]


def parse_time_input(time_val, time_of_day_val, time_val_alts=[]):
    if time_val is None:
        if time_val_alts:  # e.g. ["05:00", "17:00" ] ambiguous AM or PM
            time_val_alts.sort()  # pick the smaller one
            if time_of_day_val is None:
                time_val = time_val_alts[0]
                return TimeDetail(time_str=time_val, time_of_day=None, finished=False)
            elif time_of_day_val == 'AM':
                time_val = time_val_alts[0]
                return TimeDetail(time_str=time_val, time_of_day=time_of_day_val, finished=True)
            else:  # PM
                time_val = time_val_alts[1]
                return TimeDetail(time_str=time_val, time_of_day=time_of_day_val, finished=True)
        else:
            # did not get time value
            return TimeDetail(time_str=None, time_of_day=time_of_day_val, finished=False)
    else:
        # case: time_val is one of "NI", "MO", "AF", "EV"
        if time_val in PERIOD_TO_AMPM:
            time_of_day_val = PERIOD_TO_AMPM[time_val]
            return TimeDetail(time_str=None, time_of_day=time_of_day_val, finished=False)
        elif time_of_day_val is not None:
            if time_of_day_val == 'PM':
                hour = int(time_val.split(':')[0])
                if hour < 12:
                    hour += 12
                    time_val = str(hour) + time_val[2:]
            return TimeDetail(time_str=time_val, time_of_day=time_of_day_val, finished=True)
        else:
            hour = int(time_val.split(':')[0])
            logger.info(f'hour: {hour}')
            time_of_day_val = 'AM' if hour < 12 else 'PM'
            return TimeDetail(time_str=time_val, time_of_day=time_of_day_val, finished=True)