示例#1
0
    def working(self):
        """returns true or false depending on whether or not a CO is available at current date and time"""

        day_of_week = h.current_day(self)

        if self.start_sim_time <= self.env.now < self.end_sim_time and \
                self.input_data['availability'][str(day_of_week)]:

            for i in range(
                    0, len(self.input_data['availability'][str(day_of_week)]),
                    2):

                start_time = dt.time(*map(
                    int, self.input_data['availability'][str(day_of_week)]
                    [i].split(':')))
                end_time = dt.time(*map(
                    int, self.input_data['availability'][str(day_of_week)][
                        i + 1].split(':')))

                start_sim_time = h.make_time_decimal(start_time) + math.floor(
                    self.env.now / 24) * 24
                end_sim_time = h.make_time_decimal(end_time) + math.floor(
                    self.env.now / 24) * 24

                if start_sim_time <= self.env.now < end_sim_time:
                    return True

        return False
示例#2
0
    def adviser_check(self, time):
        # returns the adviser type that is available at the current time if any

        for k, v in self.rep.adviser_types.items():
            # between the dates
            if v['start_time'] < time <= v['end_time']:

                # then between each set of times
                current_dow = str((self.rep.start_date + dt.timedelta(days=math.floor(time / 24))).weekday())
                for i in range(0, len(v['availability'][current_dow]), 2):
                    in_time = h.make_time_decimal(dt.time(*map(int, v['availability'][current_dow][i].split(':'))))
                    out_time = h.make_time_decimal(dt.time(*map(int, v['availability'][current_dow][i+1].split(':'))))

                    if in_time <= self.env.now % 24 < out_time:
                        return k

        return None