示例#1
0
    def hour_match(inputs, pattern):
        """ This function is used to create instance for hour match score count function.

        Args:
            inputs (dict): Qualified shifter data and vacated shift, shifter data as dictionary.
            pattern  (list): Score pattern.

        Return:
            dict: The instance for calculate hour match score. """

        try:
            shifter_data = inputs["qualified_shifter"]["confirmedshifthours"]
            vacated_data = inputs["vacated_params"]
            shifter_hour_list = []
            for data in shifter_data:
                status = DateTimeDuration.is_date_match(
                    data, vacated_data, "date")
                if status is True:
                    shifter_hour_list = DateTimeDuration.get_hour_list(
                        data["starttime"], data["endtime"])
            vacated_hour_list = DateTimeDuration.get_hour_list(
                vacated_data["startTime"], vacated_data["endTime"])
            instance = {
                "hour_match": {
                    "input": {
                        "shifter_available_hour": shifter_hour_list,
                        "vacated_shifter_hour": vacated_hour_list
                    },
                    "pattern": pattern
                }
            }
            return instance
        except BaseException:
            return None
示例#2
0
    def week_overtime_risk(inputs, discualify_params):
        """ This function is used to create instance for shift week overtime risk filter function.

        Args:
            inputs (dict): Shifter data and vacated shift data as dictionary.
            discualify_params  (list): Disqualify pattern.

        Return:
            Instance: The return value. """
        try:
            shifter_shift_data = inputs["shifter"]["confirmedshifthours"]
            vacated_data = inputs["vacated_params"]
            vacated_duration = DateTimeDuration.get_duration(
                vacated_data["startTime"], vacated_data["endTime"], "hour")
            shifter_week_hour = 0
            for data in shifter_shift_data:
                status = DateTimeDuration.is_date_match(
                    data, vacated_data, "week")
                if status is True:
                    duration = DateTimeDuration.get_duration(
                        data["starttime"], data["endtime"], "hour")
                    shifter_week_hour = shifter_week_hour + duration
            instance = {
                "week_overtime_risk": {
                    "shifter_week_hour": shifter_week_hour,
                    "vacated_hour": vacated_duration,
                    "disqualify_params": discualify_params
                }
            }
            return instance
        except BaseException:
            return None
示例#3
0
    def convenience(inputs, pattern):
        """ This function is used to create instance for convenience score function.

        Args:
            inputs (dict): Qualified shifter data and vacated shifter, shift data as dictionary.
            pattern  (list): Score pattern.

        Return:
            dict: The instance for calculate convenience score value. """

        try:
            shifter_data = inputs["qualified_shifter"]["confirmedshifthours"][
                0]
            vacated_data = inputs["vacated_params"]
            shifter_hour_list = DateTimeDuration.get_hour_list(
                shifter_data["starttime"], shifter_data["endtime"])
            vacated_hour_list = DateTimeDuration.get_hour_list(
                vacated_data["startTime"], vacated_data["endTime"])
            instance = {
                "convenience": {
                    "input": {
                        "shifter_branch": shifter_data["existingshifterjpid"],
                        "Vacated_shift_branch": vacated_data["jobProviderId"],
                        "shifter_shift_hour": shifter_hour_list,
                        "vacated_shift_hours": vacated_hour_list
                    },
                    "pattern": pattern
                }
            }
            return instance
        except BaseException:
            return None
示例#4
0
    def shift_overlap(inputs, discualify_params):
        """ This function is used to create instance for shift overlap filter function.

        Args:
            inputs (dict): Shifter data and vacated shift data as dictionary.
            discualify_params  (list): Disqualify pattern.

        Return:
            Instance: The return value. """
        try:
            shifter_shift_data = inputs["shifter"]["confirmedshifthours"]
            vacated_data = inputs["vacated_params"]
            vacated_hour_list = DateTimeDuration.get_hour_list(
                vacated_data["startTime"], vacated_data["endTime"])
            shifter_hour_list = []
            for data in shifter_shift_data:
                status = DateTimeDuration.is_date_match(
                    data, vacated_data, "date")
                if status is True:
                    shifter_hour_list = DateTimeDuration.get_hour_list(
                        data["starttime"], data["endtime"])
            instance = {
                "shift_overlap": {
                    "shifter_hour_list": shifter_hour_list,
                    "vacated_hour_list": vacated_hour_list,
                    "disqualify_params": discualify_params
                }
            }
            return instance
        except BaseException:
            return None
示例#5
0
 def test_get_datetime_iso_str(self):
     print(
         "======================== Test get_datetime_iso_str function =================="
     )
     datetime_str = DateTimeDuration.get_datetime_iso_str(DATETIME)
     self.type_datetime = type(datetime_str)
     assert self.type_datetime.__name__ == 'str'
示例#6
0
 def test_is_iso_formate(self):
     print(
         "======================== Test is_iso_formate function =================="
     )
     self.response = DateTimeDuration.is_iso_formate(
         TEST_DATA["start_time"])
     assert self.response is True
示例#7
0
 def test_get_duration(self):
     print(
         "======================== Test get_duration function =================="
     )
     self.response = DateTimeDuration.get_duration(TEST_DATA["start_time"],
                                                   TEST_DATA["end_time"],
                                                   "hour")
     assert self.response == 24
示例#8
0
 def test_get_datetime_obj(self):
     print(
         "======================== Test get_datetime_obj function =================="
     )
     datetime_obj = DateTimeDuration.get_datetime_obj(
         TEST_DATA["start_time"])
     self.type_datetime = type(datetime_obj)
     assert self.type_datetime.__name__ == 'datetime'
示例#9
0
    def duration_difference(inputs, discualify_params):
        """ This function is used to create instance for shifter flexibility filter function.

        Args:
            inputs (dict): Shifter data and vacated shift data as dictionary.
            discualify_params  (list): Disqualify pattern.

        Return:
            Instance: The return value. """
        try:
            shifter_shift_data = inputs["shifter"]["confirmedshifthours"]
            vacated_data = inputs["vacated_params"]
            duration_difference_list = []
            for data in shifter_shift_data:
                status = DateTimeDuration.is_date_match(
                    data, vacated_data, "date")
                if status is True:
                    shifter_start_to_shift_end = DateTimeDuration.get_duration(
                        data["starttime"], vacated_data["endTime"], "hour")
                    shifter_end_to_shift_start = DateTimeDuration.get_duration(
                        data["endtime"], vacated_data["startTime"], "hour")
                    duration_difference_list.append(
                        abs(shifter_start_to_shift_end))
                    duration_difference_list.append(
                        abs(shifter_end_to_shift_start))
            instance = {
                "duration_difference": {
                    "duration_difference_list":
                    duration_difference_list,
                    "duration_difference_range":
                    discualify_params["duration_difference_range"]
                }
            }
            return instance
        except BaseException:
            return None
示例#10
0
    def pay_match(inputs, pattern):
        """ This function is used to create instance for pay match score function.

        Args:
            inputs (dict): Qualified shifter data and vacated shifter, shift data as dictionary.
            pattern  (list): Score pattern.

        Return:
            dict: The instance for calculate pay match score. """

        try:
            shifter_data = inputs["qualified_shifter"]
            vacated_data = inputs["vacated_params"]
            vacated_pay_rate = vacated_data["rate"]
            shifter_pay_rate = 0
            pay_type = None
            vacated_date = DateTimeDuration.get_datetime_obj(
                vacated_data["startTime"])
            vacated_day = vacated_date.weekday()
            for data in shifter_data["shifteravailability"]:
                if data["day"] == vacated_day:
                    shifter_pay_rate = data["minimumsalary"]
                    pay_type = data["minimumsalarytype"]
            instance = {
                "pay_match": {
                    "input": {
                        "shifter_pref_pay": vacated_pay_rate,
                        "vacated_shift_pay": shifter_pay_rate,
                        "pay_type": pay_type
                    },
                    "pattern": pattern
                }
            }
            return instance
        except BaseException:
            return None