"""mindbodypublicapi.

This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
"""

# ruff: noqa: E501
from mindbodypublicapi.api_helper import APIHelper
from mindbodypublicapi.models.appointment import (
    Appointment,
)
from mindbodypublicapi.models.availability import (
    Availability,
)
from mindbodypublicapi.models.staff_setting import (
    StaffSetting,
)
from mindbodypublicapi.models.unavailability import (
    Unavailability,
)


class Staff(object):
    """Implementation of the 'Staff' model.

    The Staff

    Attributes:
        address (str): The address of the staff member who is teaching the class.
        appointment_instructor (bool): When `true`, indicates that the staff member
            offers appointments.<br />  When `false`, indicates that the staff member
            does not offer appointments.
        always_allow_double_booking (bool): When `true`, indicates that the staff
            member can be scheduled for overlapping services.<br />  When `false`,
            indicates that the staff can only be scheduled for one service at a time
            in any given time-frame.
        bio (str): The staff member’s biography. This string contains HTML.
        city (str): The staff member’s city.
        country (str): The staff member’s country.
        email (str): The staff member’s email address.
        first_name (str): The staff member’s first name.
        display_name (str): The staff member’s Nickname.
        home_phone (str): The staff member’s home phone number.
        id (int): The ID assigned to the staff member.
        independent_contractor (bool): When `true`, indicates that the staff member
            is an independent contractor.  When `false`, indicates that the staff
            member is not an independent contractor.
        is_male (bool): When `true`, indicates that the staff member is male.  When
            `false`, indicates that the staff member is female.
        last_name (str): The staff member’s last name.
        mobile_phone (str): The staff member’s mobile phone number.
        name (str): The staff member’s name.
        postal_code (str): The staff member’s postal code.
        class_teacher (bool): When `true`, indicates that the staff member can teach
            classes.  When `false`, indicates that the staff member cannot teach
            classes.
        sort_order (int): If configured by the business owner, this field determines
            a staff member’s weight when sorting. Use this field to sort staff
            members on your interface.
        state (str): The staff member’s state.
        work_phone (str): The staff member’s work phone number.
        image_url (str): The URL of the staff member’s image, if one has been
            uploaded.
        class_assistant (bool): Is the staff an assistant
        class_assistant_2 (bool): Is the staff an assistant2
        employment_start (datetime): The start date of employment
        employment_end (datetime): The end date of employment
        provider_i_ds (List[str]): A list of ProviderIds for the staff.
        rep (bool): return true if staff is sales Rep 1 else false.
        rep_2 (bool): return true if staff is sales Rep 2 else false.
        rep_3 (bool): return true if staff is sales Rep 3 else false.
        rep_4 (bool): return true if staff is sales Rep 4 else false.
        rep_5 (bool): return true if staff is sales Rep 5 else false.
        rep_6 (bool): return true if staff is sales Rep 6 else false.
        staff_settings (StaffSetting): contains the information about the staff
            settings.
        appointments (List[Appointment]): A list of appointments for the staff.
        unavailabilities (List[Unavailability]): A list of unavailabilities for the
            staff.
        availabilities (List[Availability]): A list of availabilities for the staff.
        emp_id (str): The EmpID assigned to the staff member.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "address": "Address",
        "appointment_instructor": "AppointmentInstructor",
        "always_allow_double_booking": "AlwaysAllowDoubleBooking",
        "bio": "Bio",
        "city": "City",
        "country": "Country",
        "email": "Email",
        "first_name": "FirstName",
        "display_name": "DisplayName",
        "home_phone": "HomePhone",
        "id": "Id",
        "independent_contractor": "IndependentContractor",
        "is_male": "IsMale",
        "last_name": "LastName",
        "mobile_phone": "MobilePhone",
        "name": "Name",
        "postal_code": "PostalCode",
        "class_teacher": "ClassTeacher",
        "sort_order": "SortOrder",
        "state": "State",
        "work_phone": "WorkPhone",
        "image_url": "ImageUrl",
        "class_assistant": "ClassAssistant",
        "class_assistant_2": "ClassAssistant2",
        "employment_start": "EmploymentStart",
        "employment_end": "EmploymentEnd",
        "provider_i_ds": "ProviderIDs",
        "rep": "Rep",
        "rep_2": "Rep2",
        "rep_3": "Rep3",
        "rep_4": "Rep4",
        "rep_5": "Rep5",
        "rep_6": "Rep6",
        "staff_settings": "StaffSettings",
        "appointments": "Appointments",
        "unavailabilities": "Unavailabilities",
        "availabilities": "Availabilities",
        "emp_id": "EmpID",
    }

    _optionals = [
        "address",
        "appointment_instructor",
        "always_allow_double_booking",
        "bio",
        "city",
        "country",
        "email",
        "first_name",
        "display_name",
        "home_phone",
        "id",
        "independent_contractor",
        "is_male",
        "last_name",
        "mobile_phone",
        "name",
        "postal_code",
        "class_teacher",
        "sort_order",
        "state",
        "work_phone",
        "image_url",
        "class_assistant",
        "class_assistant_2",
        "employment_start",
        "employment_end",
        "provider_i_ds",
        "rep",
        "rep_2",
        "rep_3",
        "rep_4",
        "rep_5",
        "rep_6",
        "staff_settings",
        "appointments",
        "unavailabilities",
        "availabilities",
        "emp_id",
    ]

    def __init__(
        self,
        address=APIHelper.SKIP,
        appointment_instructor=APIHelper.SKIP,
        always_allow_double_booking=APIHelper.SKIP,
        bio=APIHelper.SKIP,
        city=APIHelper.SKIP,
        country=APIHelper.SKIP,
        email=APIHelper.SKIP,
        first_name=APIHelper.SKIP,
        display_name=APIHelper.SKIP,
        home_phone=APIHelper.SKIP,
        id=APIHelper.SKIP,
        independent_contractor=APIHelper.SKIP,
        is_male=APIHelper.SKIP,
        last_name=APIHelper.SKIP,
        mobile_phone=APIHelper.SKIP,
        name=APIHelper.SKIP,
        postal_code=APIHelper.SKIP,
        class_teacher=APIHelper.SKIP,
        sort_order=APIHelper.SKIP,
        state=APIHelper.SKIP,
        work_phone=APIHelper.SKIP,
        image_url=APIHelper.SKIP,
        class_assistant=APIHelper.SKIP,
        class_assistant_2=APIHelper.SKIP,
        employment_start=APIHelper.SKIP,
        employment_end=APIHelper.SKIP,
        provider_i_ds=APIHelper.SKIP,
        rep=APIHelper.SKIP,
        rep_2=APIHelper.SKIP,
        rep_3=APIHelper.SKIP,
        rep_4=APIHelper.SKIP,
        rep_5=APIHelper.SKIP,
        rep_6=APIHelper.SKIP,
        staff_settings=APIHelper.SKIP,
        appointments=APIHelper.SKIP,
        unavailabilities=APIHelper.SKIP,
        availabilities=APIHelper.SKIP,
        emp_id=APIHelper.SKIP):
        """Initialize a Staff instance."""
        # Initialize members of the class
        if address is not APIHelper.SKIP:
            self.address = address
        if appointment_instructor is not APIHelper.SKIP:
            self.appointment_instructor = appointment_instructor
        if always_allow_double_booking is not APIHelper.SKIP:
            self.always_allow_double_booking = always_allow_double_booking
        if bio is not APIHelper.SKIP:
            self.bio = bio
        if city is not APIHelper.SKIP:
            self.city = city
        if country is not APIHelper.SKIP:
            self.country = country
        if email is not APIHelper.SKIP:
            self.email = email
        if first_name is not APIHelper.SKIP:
            self.first_name = first_name
        if display_name is not APIHelper.SKIP:
            self.display_name = display_name
        if home_phone is not APIHelper.SKIP:
            self.home_phone = home_phone
        if id is not APIHelper.SKIP:
            self.id = id
        if independent_contractor is not APIHelper.SKIP:
            self.independent_contractor = independent_contractor
        if is_male is not APIHelper.SKIP:
            self.is_male = is_male
        if last_name is not APIHelper.SKIP:
            self.last_name = last_name
        if mobile_phone is not APIHelper.SKIP:
            self.mobile_phone = mobile_phone
        if name is not APIHelper.SKIP:
            self.name = name
        if postal_code is not APIHelper.SKIP:
            self.postal_code = postal_code
        if class_teacher is not APIHelper.SKIP:
            self.class_teacher = class_teacher
        if sort_order is not APIHelper.SKIP:
            self.sort_order = sort_order
        if state is not APIHelper.SKIP:
            self.state = state
        if work_phone is not APIHelper.SKIP:
            self.work_phone = work_phone
        if image_url is not APIHelper.SKIP:
            self.image_url = image_url
        if class_assistant is not APIHelper.SKIP:
            self.class_assistant = class_assistant
        if class_assistant_2 is not APIHelper.SKIP:
            self.class_assistant_2 = class_assistant_2
        if employment_start is not APIHelper.SKIP:
            self.employment_start =\
                 APIHelper.apply_datetime_converter(
                employment_start, APIHelper.RFC3339DateTime)\
                 if employment_start else None
        if employment_end is not APIHelper.SKIP:
            self.employment_end =\
                 APIHelper.apply_datetime_converter(
                employment_end, APIHelper.RFC3339DateTime)\
                 if employment_end else None
        if provider_i_ds is not APIHelper.SKIP:
            self.provider_i_ds = provider_i_ds
        if rep is not APIHelper.SKIP:
            self.rep = rep
        if rep_2 is not APIHelper.SKIP:
            self.rep_2 = rep_2
        if rep_3 is not APIHelper.SKIP:
            self.rep_3 = rep_3
        if rep_4 is not APIHelper.SKIP:
            self.rep_4 = rep_4
        if rep_5 is not APIHelper.SKIP:
            self.rep_5 = rep_5
        if rep_6 is not APIHelper.SKIP:
            self.rep_6 = rep_6
        if staff_settings is not APIHelper.SKIP:
            self.staff_settings = staff_settings
        if appointments is not APIHelper.SKIP:
            self.appointments = appointments
        if unavailabilities is not APIHelper.SKIP:
            self.unavailabilities = unavailabilities
        if availabilities is not APIHelper.SKIP:
            self.availabilities = availabilities
        if emp_id is not APIHelper.SKIP:
            self.emp_id = emp_id

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Create an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object
            as obtained from the deserialization of the server's response. The
            keys MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """
        if not isinstance(dictionary, dict) or dictionary is None:
            return None

        # Extract variables from the dictionary
        address =\
            dictionary.get("Address")\
            if dictionary.get("Address")\
                else APIHelper.SKIP
        appointment_instructor =\
            dictionary.get("AppointmentInstructor")\
            if "AppointmentInstructor" in dictionary.keys()\
                else APIHelper.SKIP
        always_allow_double_booking =\
            dictionary.get("AlwaysAllowDoubleBooking")\
            if "AlwaysAllowDoubleBooking" in dictionary.keys()\
                else APIHelper.SKIP
        bio =\
            dictionary.get("Bio")\
            if dictionary.get("Bio")\
                else APIHelper.SKIP
        city =\
            dictionary.get("City")\
            if dictionary.get("City")\
                else APIHelper.SKIP
        country =\
            dictionary.get("Country")\
            if dictionary.get("Country")\
                else APIHelper.SKIP
        email =\
            dictionary.get("Email")\
            if dictionary.get("Email")\
                else APIHelper.SKIP
        first_name =\
            dictionary.get("FirstName")\
            if dictionary.get("FirstName")\
                else APIHelper.SKIP
        display_name =\
            dictionary.get("DisplayName")\
            if dictionary.get("DisplayName")\
                else APIHelper.SKIP
        home_phone =\
            dictionary.get("HomePhone")\
            if dictionary.get("HomePhone")\
                else APIHelper.SKIP
        id =\
            dictionary.get("Id")\
            if dictionary.get("Id")\
                else APIHelper.SKIP
        independent_contractor =\
            dictionary.get("IndependentContractor")\
            if "IndependentContractor" in dictionary.keys()\
                else APIHelper.SKIP
        is_male =\
            dictionary.get("IsMale")\
            if "IsMale" in dictionary.keys()\
                else APIHelper.SKIP
        last_name =\
            dictionary.get("LastName")\
            if dictionary.get("LastName")\
                else APIHelper.SKIP
        mobile_phone =\
            dictionary.get("MobilePhone")\
            if dictionary.get("MobilePhone")\
                else APIHelper.SKIP
        name =\
            dictionary.get("Name")\
            if dictionary.get("Name")\
                else APIHelper.SKIP
        postal_code =\
            dictionary.get("PostalCode")\
            if dictionary.get("PostalCode")\
                else APIHelper.SKIP
        class_teacher =\
            dictionary.get("ClassTeacher")\
            if "ClassTeacher" in dictionary.keys()\
                else APIHelper.SKIP
        sort_order =\
            dictionary.get("SortOrder")\
            if dictionary.get("SortOrder")\
                else APIHelper.SKIP
        state =\
            dictionary.get("State")\
            if dictionary.get("State")\
                else APIHelper.SKIP
        work_phone =\
            dictionary.get("WorkPhone")\
            if dictionary.get("WorkPhone")\
                else APIHelper.SKIP
        image_url =\
            dictionary.get("ImageUrl")\
            if dictionary.get("ImageUrl")\
                else APIHelper.SKIP
        class_assistant =\
            dictionary.get("ClassAssistant")\
            if "ClassAssistant" in dictionary.keys()\
                else APIHelper.SKIP
        class_assistant_2 =\
            dictionary.get("ClassAssistant2")\
            if "ClassAssistant2" in dictionary.keys()\
                else APIHelper.SKIP
        employment_start = APIHelper.RFC3339DateTime.from_value(
            dictionary.get("EmploymentStart")).datetime\
            if dictionary.get("EmploymentStart") else APIHelper.SKIP
        employment_end = APIHelper.RFC3339DateTime.from_value(
            dictionary.get("EmploymentEnd")).datetime\
            if dictionary.get("EmploymentEnd") else APIHelper.SKIP
        provider_i_ds =\
            dictionary.get("ProviderIDs")\
            if dictionary.get("ProviderIDs")\
                else APIHelper.SKIP
        rep =\
            dictionary.get("Rep")\
            if "Rep" in dictionary.keys()\
                else APIHelper.SKIP
        rep_2 =\
            dictionary.get("Rep2")\
            if "Rep2" in dictionary.keys()\
                else APIHelper.SKIP
        rep_3 =\
            dictionary.get("Rep3")\
            if "Rep3" in dictionary.keys()\
                else APIHelper.SKIP
        rep_4 =\
            dictionary.get("Rep4")\
            if "Rep4" in dictionary.keys()\
                else APIHelper.SKIP
        rep_5 =\
            dictionary.get("Rep5")\
            if "Rep5" in dictionary.keys()\
                else APIHelper.SKIP
        rep_6 =\
            dictionary.get("Rep6")\
            if "Rep6" in dictionary.keys()\
                else APIHelper.SKIP
        staff_settings =\
            StaffSetting.from_dictionary(
                dictionary.get("StaffSettings"))\
                if "StaffSettings" in dictionary.keys()\
                else APIHelper.SKIP
        appointments = None
        if dictionary.get("Appointments") is not None:
            appointments = [
                Appointment.from_dictionary(x)
                    for x in dictionary.get("Appointments")
            ]
        else:
            appointments = APIHelper.SKIP
        unavailabilities = None
        if dictionary.get("Unavailabilities") is not None:
            unavailabilities = [
                Unavailability.from_dictionary(x)
                    for x in dictionary.get("Unavailabilities")
            ]
        else:
            unavailabilities = APIHelper.SKIP
        availabilities = None
        if dictionary.get("Availabilities") is not None:
            availabilities = [
                Availability.from_dictionary(x)
                    for x in dictionary.get("Availabilities")
            ]
        else:
            availabilities = APIHelper.SKIP
        emp_id =\
            dictionary.get("EmpID")\
            if dictionary.get("EmpID")\
                else APIHelper.SKIP

        # Return an object of this model
        return cls(address,
                   appointment_instructor,
                   always_allow_double_booking,
                   bio,
                   city,
                   country,
                   email,
                   first_name,
                   display_name,
                   home_phone,
                   id,
                   independent_contractor,
                   is_male,
                   last_name,
                   mobile_phone,
                   name,
                   postal_code,
                   class_teacher,
                   sort_order,
                   state,
                   work_phone,
                   image_url,
                   class_assistant,
                   class_assistant_2,
                   employment_start,
                   employment_end,
                   provider_i_ds,
                   rep,
                   rep_2,
                   rep_3,
                   rep_4,
                   rep_5,
                   rep_6,
                   staff_settings,
                   appointments,
                   unavailabilities,
                   availabilities,
                   emp_id)

    def __repr__(self):
        """Return a unambiguous string representation."""
        _address=(
            self.address
            if hasattr(self, "address")
            else None
        )
        _appointment_instructor=(
            self.appointment_instructor
            if hasattr(self, "appointment_instructor")
            else None
        )
        _always_allow_double_booking=(
            self.always_allow_double_booking
            if hasattr(self, "always_allow_double_booking")
            else None
        )
        _bio=(
            self.bio
            if hasattr(self, "bio")
            else None
        )
        _city=(
            self.city
            if hasattr(self, "city")
            else None
        )
        _country=(
            self.country
            if hasattr(self, "country")
            else None
        )
        _email=(
            self.email
            if hasattr(self, "email")
            else None
        )
        _first_name=(
            self.first_name
            if hasattr(self, "first_name")
            else None
        )
        _display_name=(
            self.display_name
            if hasattr(self, "display_name")
            else None
        )
        _home_phone=(
            self.home_phone
            if hasattr(self, "home_phone")
            else None
        )
        _id=(
            self.id
            if hasattr(self, "id")
            else None
        )
        _independent_contractor=(
            self.independent_contractor
            if hasattr(self, "independent_contractor")
            else None
        )
        _is_male=(
            self.is_male
            if hasattr(self, "is_male")
            else None
        )
        _last_name=(
            self.last_name
            if hasattr(self, "last_name")
            else None
        )
        _mobile_phone=(
            self.mobile_phone
            if hasattr(self, "mobile_phone")
            else None
        )
        _name=(
            self.name
            if hasattr(self, "name")
            else None
        )
        _postal_code=(
            self.postal_code
            if hasattr(self, "postal_code")
            else None
        )
        _class_teacher=(
            self.class_teacher
            if hasattr(self, "class_teacher")
            else None
        )
        _sort_order=(
            self.sort_order
            if hasattr(self, "sort_order")
            else None
        )
        _state=(
            self.state
            if hasattr(self, "state")
            else None
        )
        _work_phone=(
            self.work_phone
            if hasattr(self, "work_phone")
            else None
        )
        _image_url=(
            self.image_url
            if hasattr(self, "image_url")
            else None
        )
        _class_assistant=(
            self.class_assistant
            if hasattr(self, "class_assistant")
            else None
        )
        _class_assistant_2=(
            self.class_assistant_2
            if hasattr(self, "class_assistant_2")
            else None
        )
        _employment_start=(
            self.employment_start
            if hasattr(self, "employment_start")
            else None
        )
        _employment_end=(
            self.employment_end
            if hasattr(self, "employment_end")
            else None
        )
        _provider_i_ds=(
            self.provider_i_ds
            if hasattr(self, "provider_i_ds")
            else None
        )
        _rep=(
            self.rep
            if hasattr(self, "rep")
            else None
        )
        _rep_2=(
            self.rep_2
            if hasattr(self, "rep_2")
            else None
        )
        _rep_3=(
            self.rep_3
            if hasattr(self, "rep_3")
            else None
        )
        _rep_4=(
            self.rep_4
            if hasattr(self, "rep_4")
            else None
        )
        _rep_5=(
            self.rep_5
            if hasattr(self, "rep_5")
            else None
        )
        _rep_6=(
            self.rep_6
            if hasattr(self, "rep_6")
            else None
        )
        _staff_settings=(
            self.staff_settings
            if hasattr(self, "staff_settings")
            else None
        )
        _appointments=(
            self.appointments
            if hasattr(self, "appointments")
            else None
        )
        _unavailabilities=(
            self.unavailabilities
            if hasattr(self, "unavailabilities")
            else None
        )
        _availabilities=(
            self.availabilities
            if hasattr(self, "availabilities")
            else None
        )
        _emp_id=(
            self.emp_id
            if hasattr(self, "emp_id")
            else None
        )
        return (
            f"{self.__class__.__name__}("
            f"address={_address!r}, "
            f"appointment_instructor={_appointment_instructor!r}, "
            f"always_allow_double_booking={_always_allow_double_booking!r}, "
            f"bio={_bio!r}, "
            f"city={_city!r}, "
            f"country={_country!r}, "
            f"email={_email!r}, "
            f"first_name={_first_name!r}, "
            f"display_name={_display_name!r}, "
            f"home_phone={_home_phone!r}, "
            f"id={_id!r}, "
            f"independent_contractor={_independent_contractor!r}, "
            f"is_male={_is_male!r}, "
            f"last_name={_last_name!r}, "
            f"mobile_phone={_mobile_phone!r}, "
            f"name={_name!r}, "
            f"postal_code={_postal_code!r}, "
            f"class_teacher={_class_teacher!r}, "
            f"sort_order={_sort_order!r}, "
            f"state={_state!r}, "
            f"work_phone={_work_phone!r}, "
            f"image_url={_image_url!r}, "
            f"class_assistant={_class_assistant!r}, "
            f"class_assistant_2={_class_assistant_2!r}, "
            f"employment_start={_employment_start!r}, "
            f"employment_end={_employment_end!r}, "
            f"provider_i_ds={_provider_i_ds!r}, "
            f"rep={_rep!r}, "
            f"rep_2={_rep_2!r}, "
            f"rep_3={_rep_3!r}, "
            f"rep_4={_rep_4!r}, "
            f"rep_5={_rep_5!r}, "
            f"rep_6={_rep_6!r}, "
            f"staff_settings={_staff_settings!r}, "
            f"appointments={_appointments!r}, "
            f"unavailabilities={_unavailabilities!r}, "
            f"availabilities={_availabilities!r}, "
            f"emp_id={_emp_id!r}, "
            f")"
        )

    def __str__(self):
        """Return a human-readable string representation."""
        _address=(
            self.address
            if hasattr(self, "address")
            else None
        )
        _appointment_instructor=(
            self.appointment_instructor
            if hasattr(self, "appointment_instructor")
            else None
        )
        _always_allow_double_booking=(
            self.always_allow_double_booking
            if hasattr(self, "always_allow_double_booking")
            else None
        )
        _bio=(
            self.bio
            if hasattr(self, "bio")
            else None
        )
        _city=(
            self.city
            if hasattr(self, "city")
            else None
        )
        _country=(
            self.country
            if hasattr(self, "country")
            else None
        )
        _email=(
            self.email
            if hasattr(self, "email")
            else None
        )
        _first_name=(
            self.first_name
            if hasattr(self, "first_name")
            else None
        )
        _display_name=(
            self.display_name
            if hasattr(self, "display_name")
            else None
        )
        _home_phone=(
            self.home_phone
            if hasattr(self, "home_phone")
            else None
        )
        _id=(
            self.id
            if hasattr(self, "id")
            else None
        )
        _independent_contractor=(
            self.independent_contractor
            if hasattr(self, "independent_contractor")
            else None
        )
        _is_male=(
            self.is_male
            if hasattr(self, "is_male")
            else None
        )
        _last_name=(
            self.last_name
            if hasattr(self, "last_name")
            else None
        )
        _mobile_phone=(
            self.mobile_phone
            if hasattr(self, "mobile_phone")
            else None
        )
        _name=(
            self.name
            if hasattr(self, "name")
            else None
        )
        _postal_code=(
            self.postal_code
            if hasattr(self, "postal_code")
            else None
        )
        _class_teacher=(
            self.class_teacher
            if hasattr(self, "class_teacher")
            else None
        )
        _sort_order=(
            self.sort_order
            if hasattr(self, "sort_order")
            else None
        )
        _state=(
            self.state
            if hasattr(self, "state")
            else None
        )
        _work_phone=(
            self.work_phone
            if hasattr(self, "work_phone")
            else None
        )
        _image_url=(
            self.image_url
            if hasattr(self, "image_url")
            else None
        )
        _class_assistant=(
            self.class_assistant
            if hasattr(self, "class_assistant")
            else None
        )
        _class_assistant_2=(
            self.class_assistant_2
            if hasattr(self, "class_assistant_2")
            else None
        )
        _employment_start=(
            self.employment_start
            if hasattr(self, "employment_start")
            else None
        )
        _employment_end=(
            self.employment_end
            if hasattr(self, "employment_end")
            else None
        )
        _provider_i_ds=(
            self.provider_i_ds
            if hasattr(self, "provider_i_ds")
            else None
        )
        _rep=(
            self.rep
            if hasattr(self, "rep")
            else None
        )
        _rep_2=(
            self.rep_2
            if hasattr(self, "rep_2")
            else None
        )
        _rep_3=(
            self.rep_3
            if hasattr(self, "rep_3")
            else None
        )
        _rep_4=(
            self.rep_4
            if hasattr(self, "rep_4")
            else None
        )
        _rep_5=(
            self.rep_5
            if hasattr(self, "rep_5")
            else None
        )
        _rep_6=(
            self.rep_6
            if hasattr(self, "rep_6")
            else None
        )
        _staff_settings=(
            self.staff_settings
            if hasattr(self, "staff_settings")
            else None
        )
        _appointments=(
            self.appointments
            if hasattr(self, "appointments")
            else None
        )
        _unavailabilities=(
            self.unavailabilities
            if hasattr(self, "unavailabilities")
            else None
        )
        _availabilities=(
            self.availabilities
            if hasattr(self, "availabilities")
            else None
        )
        _emp_id=(
            self.emp_id
            if hasattr(self, "emp_id")
            else None
        )
        return (
            f"{self.__class__.__name__}("
            f"address={_address!s}, "
            f"appointment_instructor={_appointment_instructor!s}, "
            f"always_allow_double_booking={_always_allow_double_booking!s}, "
            f"bio={_bio!s}, "
            f"city={_city!s}, "
            f"country={_country!s}, "
            f"email={_email!s}, "
            f"first_name={_first_name!s}, "
            f"display_name={_display_name!s}, "
            f"home_phone={_home_phone!s}, "
            f"id={_id!s}, "
            f"independent_contractor={_independent_contractor!s}, "
            f"is_male={_is_male!s}, "
            f"last_name={_last_name!s}, "
            f"mobile_phone={_mobile_phone!s}, "
            f"name={_name!s}, "
            f"postal_code={_postal_code!s}, "
            f"class_teacher={_class_teacher!s}, "
            f"sort_order={_sort_order!s}, "
            f"state={_state!s}, "
            f"work_phone={_work_phone!s}, "
            f"image_url={_image_url!s}, "
            f"class_assistant={_class_assistant!s}, "
            f"class_assistant_2={_class_assistant_2!s}, "
            f"employment_start={_employment_start!s}, "
            f"employment_end={_employment_end!s}, "
            f"provider_i_ds={_provider_i_ds!s}, "
            f"rep={_rep!s}, "
            f"rep_2={_rep_2!s}, "
            f"rep_3={_rep_3!s}, "
            f"rep_4={_rep_4!s}, "
            f"rep_5={_rep_5!s}, "
            f"rep_6={_rep_6!s}, "
            f"staff_settings={_staff_settings!s}, "
            f"appointments={_appointments!s}, "
            f"unavailabilities={_unavailabilities!s}, "
            f"availabilities={_availabilities!s}, "
            f"emp_id={_emp_id!s}, "
            f")"
        )
