"""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_1 import (
    Appointment1,
)
from mindbodypublicapi.models.availability_1 import (
    Availability1,
)
from mindbodypublicapi.models.location_1 import (
    Location1,
)
from mindbodypublicapi.models.staff_setting import (
    StaffSetting,
)
from mindbodypublicapi.models.unavailability_1 import (
    Unavailability1,
)


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

    Attributes:
        id (int): The ID assigned to the staff member.
        first_name (str): The staff member’s first name.
        last_name (str): The staff member’s last name.
        display_name (str): The display name of the staff member.
        email (str): The staff member’s email address.
        bio (str): The staff member’s biography. This string contains HTML.
        address (str): The address of the staff member who is teaching the class.
        address_2 (str): The address2 of the staff member who is teaching the class.
        city (str): The staff member’s city.
        state (str): The staff member’s state.
        postal_code (str): The staff member’s postal code.
        foreign_zip (str): The staff member’s Foreign Zip code.
        country (str): The staff member’s country.
        work_phone (str): The staff member’s work phone number.
        home_phone (str): The staff member’s home phone number.
        cell_phone (str): The staff member’s mobile phone number.
        active (bool): When `true`, indicates that the staff member is Active.  When
            `false`, indicates that the staff member is not Active.
        is_system (bool): When `true`, indicates that the staff member is a system .
            When `false`, indicates that the staff member is not system.
        smode_id (int): The Staff's Smode Id
        appointment_trn (bool): When `true`, indicates that the staff member offers
            appointments.  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.  When `false`,
            indicates that the staff can only be scheduled for one service at a time
            in any given time-frame.
        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.
        image_url (str): The URL of the staff member’s image, if one has been
            uploaded.
        is_male (bool): When `true`, indicates that the staff member is male.  When
            `false`, indicates that the staff member is female.
        reservation_trn (bool): When `true`, indicates that the staff member offers
            Reservation.  When `false`, indicates that the staff member does not
            offer Reservation.
        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.
        multi_location_permission (bool): When `true`, indicates that the staff
            member has Multi Location Permission.  When `false`, indicates that the
            staff member does not has Multi Location Permission.
        name (str): The staff member’s name.
        provider_i_ds (List[str]): A list of ProviderIds for the staff.
        staff_settings (StaffSetting): contains the information about the staff
            settings.
        rep (bool): When `true`, indicates that the staff is sales Rep 1 else `false`.
        rep_2 (bool): When `true`, indicates that the staff is sales Rep 2 else
            `false`.
        rep_3 (bool): When `true`, indicates that the staff is sales Rep 3 else
            `false`.
        rep_4 (bool): When `true`, indicates that the staff is sales Rep 4 else
            `false`.
        rep_5 (bool): When `true`, indicates that the staff is sales Rep 5 else
            `false`.
        rep_6 (bool): When `true`, indicates that the staff is sales Rep 6 else
            `false`.
        assistant (bool): When `true`, indicates that the staff is assistant.  When
            `false`, indicates that the staff is not assistant.
        assistant_2 (bool): When `true`, indicates that the staff is assistant2.
            When `false`, indicates that the staff is not assistant2.
        employment_start (datetime): The start date of employment.
        employment_end (datetime): The end date of employment.
        emp_id (str): The custom staff ID assigned to the staff member.
        appointments (List[Appointment1]): A list of appointments for the staff.
        unavailabilities (List[Unavailability1]): A list of unavailabilities for the
            staff.
        availabilities (List[Availability1]): A list of availabilities for the staff.
        login_locations (List[Location1]): A list of LoginLocations for the staff

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "id": "Id",
        "first_name": "FirstName",
        "last_name": "LastName",
        "display_name": "DisplayName",
        "email": "Email",
        "bio": "Bio",
        "address": "Address",
        "address_2": "Address2",
        "city": "City",
        "state": "State",
        "postal_code": "PostalCode",
        "foreign_zip": "ForeignZip",
        "country": "Country",
        "work_phone": "WorkPhone",
        "home_phone": "HomePhone",
        "cell_phone": "CellPhone",
        "active": "Active",
        "is_system": "IsSystem",
        "smode_id": "SmodeId",
        "appointment_trn": "AppointmentTrn",
        "always_allow_double_booking": "AlwaysAllowDoubleBooking",
        "independent_contractor": "IndependentContractor",
        "image_url": "ImageUrl",
        "is_male": "IsMale",
        "reservation_trn": "ReservationTrn",
        "sort_order": "SortOrder",
        "multi_location_permission": "MultiLocationPermission",
        "name": "Name",
        "provider_i_ds": "ProviderIDs",
        "staff_settings": "StaffSettings",
        "rep": "Rep",
        "rep_2": "Rep2",
        "rep_3": "Rep3",
        "rep_4": "Rep4",
        "rep_5": "Rep5",
        "rep_6": "Rep6",
        "assistant": "Assistant",
        "assistant_2": "Assistant2",
        "employment_start": "EmploymentStart",
        "employment_end": "EmploymentEnd",
        "emp_id": "EmpID",
        "appointments": "Appointments",
        "unavailabilities": "Unavailabilities",
        "availabilities": "Availabilities",
        "login_locations": "LoginLocations",
    }

    _optionals = [
        "id",
        "first_name",
        "last_name",
        "display_name",
        "email",
        "bio",
        "address",
        "address_2",
        "city",
        "state",
        "postal_code",
        "foreign_zip",
        "country",
        "work_phone",
        "home_phone",
        "cell_phone",
        "active",
        "is_system",
        "smode_id",
        "appointment_trn",
        "always_allow_double_booking",
        "independent_contractor",
        "image_url",
        "is_male",
        "reservation_trn",
        "sort_order",
        "multi_location_permission",
        "name",
        "provider_i_ds",
        "staff_settings",
        "rep",
        "rep_2",
        "rep_3",
        "rep_4",
        "rep_5",
        "rep_6",
        "assistant",
        "assistant_2",
        "employment_start",
        "employment_end",
        "emp_id",
        "appointments",
        "unavailabilities",
        "availabilities",
        "login_locations",
    ]

    def __init__(
        self,
        id=APIHelper.SKIP,
        first_name=APIHelper.SKIP,
        last_name=APIHelper.SKIP,
        display_name=APIHelper.SKIP,
        email=APIHelper.SKIP,
        bio=APIHelper.SKIP,
        address=APIHelper.SKIP,
        address_2=APIHelper.SKIP,
        city=APIHelper.SKIP,
        state=APIHelper.SKIP,
        postal_code=APIHelper.SKIP,
        foreign_zip=APIHelper.SKIP,
        country=APIHelper.SKIP,
        work_phone=APIHelper.SKIP,
        home_phone=APIHelper.SKIP,
        cell_phone=APIHelper.SKIP,
        active=APIHelper.SKIP,
        is_system=APIHelper.SKIP,
        smode_id=APIHelper.SKIP,
        appointment_trn=APIHelper.SKIP,
        always_allow_double_booking=APIHelper.SKIP,
        independent_contractor=APIHelper.SKIP,
        image_url=APIHelper.SKIP,
        is_male=APIHelper.SKIP,
        reservation_trn=APIHelper.SKIP,
        sort_order=APIHelper.SKIP,
        multi_location_permission=APIHelper.SKIP,
        name=APIHelper.SKIP,
        provider_i_ds=APIHelper.SKIP,
        staff_settings=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,
        assistant=APIHelper.SKIP,
        assistant_2=APIHelper.SKIP,
        employment_start=APIHelper.SKIP,
        employment_end=APIHelper.SKIP,
        emp_id=APIHelper.SKIP,
        appointments=APIHelper.SKIP,
        unavailabilities=APIHelper.SKIP,
        availabilities=APIHelper.SKIP,
        login_locations=APIHelper.SKIP):
        """Initialize a Staff1 instance."""
        # Initialize members of the class
        if id is not APIHelper.SKIP:
            self.id = id
        if first_name is not APIHelper.SKIP:
            self.first_name = first_name
        if last_name is not APIHelper.SKIP:
            self.last_name = last_name
        if display_name is not APIHelper.SKIP:
            self.display_name = display_name
        if email is not APIHelper.SKIP:
            self.email = email
        if bio is not APIHelper.SKIP:
            self.bio = bio
        if address is not APIHelper.SKIP:
            self.address = address
        if address_2 is not APIHelper.SKIP:
            self.address_2 = address_2
        if city is not APIHelper.SKIP:
            self.city = city
        if state is not APIHelper.SKIP:
            self.state = state
        if postal_code is not APIHelper.SKIP:
            self.postal_code = postal_code
        if foreign_zip is not APIHelper.SKIP:
            self.foreign_zip = foreign_zip
        if country is not APIHelper.SKIP:
            self.country = country
        if work_phone is not APIHelper.SKIP:
            self.work_phone = work_phone
        if home_phone is not APIHelper.SKIP:
            self.home_phone = home_phone
        if cell_phone is not APIHelper.SKIP:
            self.cell_phone = cell_phone
        if active is not APIHelper.SKIP:
            self.active = active
        if is_system is not APIHelper.SKIP:
            self.is_system = is_system
        if smode_id is not APIHelper.SKIP:
            self.smode_id = smode_id
        if appointment_trn is not APIHelper.SKIP:
            self.appointment_trn = appointment_trn
        if always_allow_double_booking is not APIHelper.SKIP:
            self.always_allow_double_booking = always_allow_double_booking
        if independent_contractor is not APIHelper.SKIP:
            self.independent_contractor = independent_contractor
        if image_url is not APIHelper.SKIP:
            self.image_url = image_url
        if is_male is not APIHelper.SKIP:
            self.is_male = is_male
        if reservation_trn is not APIHelper.SKIP:
            self.reservation_trn = reservation_trn
        if sort_order is not APIHelper.SKIP:
            self.sort_order = sort_order
        if multi_location_permission is not APIHelper.SKIP:
            self.multi_location_permission = multi_location_permission
        if name is not APIHelper.SKIP:
            self.name = name
        if provider_i_ds is not APIHelper.SKIP:
            self.provider_i_ds = provider_i_ds
        if staff_settings is not APIHelper.SKIP:
            self.staff_settings = staff_settings
        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 assistant is not APIHelper.SKIP:
            self.assistant = assistant
        if assistant_2 is not APIHelper.SKIP:
            self.assistant_2 = 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 emp_id is not APIHelper.SKIP:
            self.emp_id = emp_id
        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 login_locations is not APIHelper.SKIP:
            self.login_locations = login_locations

    @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
        id =\
            dictionary.get("Id")\
            if dictionary.get("Id")\
                else APIHelper.SKIP
        first_name =\
            dictionary.get("FirstName")\
            if dictionary.get("FirstName")\
                else APIHelper.SKIP
        last_name =\
            dictionary.get("LastName")\
            if dictionary.get("LastName")\
                else APIHelper.SKIP
        display_name =\
            dictionary.get("DisplayName")\
            if dictionary.get("DisplayName")\
                else APIHelper.SKIP
        email =\
            dictionary.get("Email")\
            if dictionary.get("Email")\
                else APIHelper.SKIP
        bio =\
            dictionary.get("Bio")\
            if dictionary.get("Bio")\
                else APIHelper.SKIP
        address =\
            dictionary.get("Address")\
            if dictionary.get("Address")\
                else APIHelper.SKIP
        address_2 =\
            dictionary.get("Address2")\
            if dictionary.get("Address2")\
                else APIHelper.SKIP
        city =\
            dictionary.get("City")\
            if dictionary.get("City")\
                else APIHelper.SKIP
        state =\
            dictionary.get("State")\
            if dictionary.get("State")\
                else APIHelper.SKIP
        postal_code =\
            dictionary.get("PostalCode")\
            if dictionary.get("PostalCode")\
                else APIHelper.SKIP
        foreign_zip =\
            dictionary.get("ForeignZip")\
            if dictionary.get("ForeignZip")\
                else APIHelper.SKIP
        country =\
            dictionary.get("Country")\
            if dictionary.get("Country")\
                else APIHelper.SKIP
        work_phone =\
            dictionary.get("WorkPhone")\
            if dictionary.get("WorkPhone")\
                else APIHelper.SKIP
        home_phone =\
            dictionary.get("HomePhone")\
            if dictionary.get("HomePhone")\
                else APIHelper.SKIP
        cell_phone =\
            dictionary.get("CellPhone")\
            if dictionary.get("CellPhone")\
                else APIHelper.SKIP
        active =\
            dictionary.get("Active")\
            if "Active" in dictionary.keys()\
                else APIHelper.SKIP
        is_system =\
            dictionary.get("IsSystem")\
            if "IsSystem" in dictionary.keys()\
                else APIHelper.SKIP
        smode_id =\
            dictionary.get("SmodeId")\
            if dictionary.get("SmodeId")\
                else APIHelper.SKIP
        appointment_trn =\
            dictionary.get("AppointmentTrn")\
            if "AppointmentTrn" in dictionary.keys()\
                else APIHelper.SKIP
        always_allow_double_booking =\
            dictionary.get("AlwaysAllowDoubleBooking")\
            if "AlwaysAllowDoubleBooking" in dictionary.keys()\
                else APIHelper.SKIP
        independent_contractor =\
            dictionary.get("IndependentContractor")\
            if "IndependentContractor" in dictionary.keys()\
                else APIHelper.SKIP
        image_url =\
            dictionary.get("ImageUrl")\
            if dictionary.get("ImageUrl")\
                else APIHelper.SKIP
        is_male =\
            dictionary.get("IsMale")\
            if "IsMale" in dictionary.keys()\
                else APIHelper.SKIP
        reservation_trn =\
            dictionary.get("ReservationTrn")\
            if "ReservationTrn" in dictionary.keys()\
                else APIHelper.SKIP
        sort_order =\
            dictionary.get("SortOrder")\
            if dictionary.get("SortOrder")\
                else APIHelper.SKIP
        multi_location_permission =\
            dictionary.get("MultiLocationPermission")\
            if "MultiLocationPermission" in dictionary.keys()\
                else APIHelper.SKIP
        name =\
            dictionary.get("Name")\
            if dictionary.get("Name")\
                else APIHelper.SKIP
        provider_i_ds =\
            dictionary.get("ProviderIDs")\
            if dictionary.get("ProviderIDs")\
                else APIHelper.SKIP
        staff_settings =\
            StaffSetting.from_dictionary(
                dictionary.get("StaffSettings"))\
                if "StaffSettings" in dictionary.keys()\
                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
        assistant =\
            dictionary.get("Assistant")\
            if "Assistant" in dictionary.keys()\
                else APIHelper.SKIP
        assistant_2 =\
            dictionary.get("Assistant2")\
            if "Assistant2" 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
        emp_id =\
            dictionary.get("EmpID")\
            if dictionary.get("EmpID")\
                else APIHelper.SKIP
        appointments = None
        if dictionary.get("Appointments") is not None:
            appointments = [
                Appointment1.from_dictionary(x)
                    for x in dictionary.get("Appointments")
            ]
        else:
            appointments = APIHelper.SKIP
        unavailabilities = None
        if dictionary.get("Unavailabilities") is not None:
            unavailabilities = [
                Unavailability1.from_dictionary(x)
                    for x in dictionary.get("Unavailabilities")
            ]
        else:
            unavailabilities = APIHelper.SKIP
        availabilities = None
        if dictionary.get("Availabilities") is not None:
            availabilities = [
                Availability1.from_dictionary(x)
                    for x in dictionary.get("Availabilities")
            ]
        else:
            availabilities = APIHelper.SKIP
        login_locations = None
        if dictionary.get("LoginLocations") is not None:
            login_locations = [
                Location1.from_dictionary(x)
                    for x in dictionary.get("LoginLocations")
            ]
        else:
            login_locations = APIHelper.SKIP

        # Return an object of this model
        return cls(id,
                   first_name,
                   last_name,
                   display_name,
                   email,
                   bio,
                   address,
                   address_2,
                   city,
                   state,
                   postal_code,
                   foreign_zip,
                   country,
                   work_phone,
                   home_phone,
                   cell_phone,
                   active,
                   is_system,
                   smode_id,
                   appointment_trn,
                   always_allow_double_booking,
                   independent_contractor,
                   image_url,
                   is_male,
                   reservation_trn,
                   sort_order,
                   multi_location_permission,
                   name,
                   provider_i_ds,
                   staff_settings,
                   rep,
                   rep_2,
                   rep_3,
                   rep_4,
                   rep_5,
                   rep_6,
                   assistant,
                   assistant_2,
                   employment_start,
                   employment_end,
                   emp_id,
                   appointments,
                   unavailabilities,
                   availabilities,
                   login_locations)

    def __repr__(self):
        """Return a unambiguous string representation."""
        _id=(
            self.id
            if hasattr(self, "id")
            else None
        )
        _first_name=(
            self.first_name
            if hasattr(self, "first_name")
            else None
        )
        _last_name=(
            self.last_name
            if hasattr(self, "last_name")
            else None
        )
        _display_name=(
            self.display_name
            if hasattr(self, "display_name")
            else None
        )
        _email=(
            self.email
            if hasattr(self, "email")
            else None
        )
        _bio=(
            self.bio
            if hasattr(self, "bio")
            else None
        )
        _address=(
            self.address
            if hasattr(self, "address")
            else None
        )
        _address_2=(
            self.address_2
            if hasattr(self, "address_2")
            else None
        )
        _city=(
            self.city
            if hasattr(self, "city")
            else None
        )
        _state=(
            self.state
            if hasattr(self, "state")
            else None
        )
        _postal_code=(
            self.postal_code
            if hasattr(self, "postal_code")
            else None
        )
        _foreign_zip=(
            self.foreign_zip
            if hasattr(self, "foreign_zip")
            else None
        )
        _country=(
            self.country
            if hasattr(self, "country")
            else None
        )
        _work_phone=(
            self.work_phone
            if hasattr(self, "work_phone")
            else None
        )
        _home_phone=(
            self.home_phone
            if hasattr(self, "home_phone")
            else None
        )
        _cell_phone=(
            self.cell_phone
            if hasattr(self, "cell_phone")
            else None
        )
        _active=(
            self.active
            if hasattr(self, "active")
            else None
        )
        _is_system=(
            self.is_system
            if hasattr(self, "is_system")
            else None
        )
        _smode_id=(
            self.smode_id
            if hasattr(self, "smode_id")
            else None
        )
        _appointment_trn=(
            self.appointment_trn
            if hasattr(self, "appointment_trn")
            else None
        )
        _always_allow_double_booking=(
            self.always_allow_double_booking
            if hasattr(self, "always_allow_double_booking")
            else None
        )
        _independent_contractor=(
            self.independent_contractor
            if hasattr(self, "independent_contractor")
            else None
        )
        _image_url=(
            self.image_url
            if hasattr(self, "image_url")
            else None
        )
        _is_male=(
            self.is_male
            if hasattr(self, "is_male")
            else None
        )
        _reservation_trn=(
            self.reservation_trn
            if hasattr(self, "reservation_trn")
            else None
        )
        _sort_order=(
            self.sort_order
            if hasattr(self, "sort_order")
            else None
        )
        _multi_location_permission=(
            self.multi_location_permission
            if hasattr(self, "multi_location_permission")
            else None
        )
        _name=(
            self.name
            if hasattr(self, "name")
            else None
        )
        _provider_i_ds=(
            self.provider_i_ds
            if hasattr(self, "provider_i_ds")
            else None
        )
        _staff_settings=(
            self.staff_settings
            if hasattr(self, "staff_settings")
            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
        )
        _assistant=(
            self.assistant
            if hasattr(self, "assistant")
            else None
        )
        _assistant_2=(
            self.assistant_2
            if hasattr(self, "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
        )
        _emp_id=(
            self.emp_id
            if hasattr(self, "emp_id")
            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
        )
        _login_locations=(
            self.login_locations
            if hasattr(self, "login_locations")
            else None
        )
        return (
            f"{self.__class__.__name__}("
            f"id={_id!r}, "
            f"first_name={_first_name!r}, "
            f"last_name={_last_name!r}, "
            f"display_name={_display_name!r}, "
            f"email={_email!r}, "
            f"bio={_bio!r}, "
            f"address={_address!r}, "
            f"address_2={_address_2!r}, "
            f"city={_city!r}, "
            f"state={_state!r}, "
            f"postal_code={_postal_code!r}, "
            f"foreign_zip={_foreign_zip!r}, "
            f"country={_country!r}, "
            f"work_phone={_work_phone!r}, "
            f"home_phone={_home_phone!r}, "
            f"cell_phone={_cell_phone!r}, "
            f"active={_active!r}, "
            f"is_system={_is_system!r}, "
            f"smode_id={_smode_id!r}, "
            f"appointment_trn={_appointment_trn!r}, "
            f"always_allow_double_booking={_always_allow_double_booking!r}, "
            f"independent_contractor={_independent_contractor!r}, "
            f"image_url={_image_url!r}, "
            f"is_male={_is_male!r}, "
            f"reservation_trn={_reservation_trn!r}, "
            f"sort_order={_sort_order!r}, "
            f"multi_location_permission={_multi_location_permission!r}, "
            f"name={_name!r}, "
            f"provider_i_ds={_provider_i_ds!r}, "
            f"staff_settings={_staff_settings!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"assistant={_assistant!r}, "
            f"assistant_2={_assistant_2!r}, "
            f"employment_start={_employment_start!r}, "
            f"employment_end={_employment_end!r}, "
            f"emp_id={_emp_id!r}, "
            f"appointments={_appointments!r}, "
            f"unavailabilities={_unavailabilities!r}, "
            f"availabilities={_availabilities!r}, "
            f"login_locations={_login_locations!r}, "
            f")"
        )

    def __str__(self):
        """Return a human-readable string representation."""
        _id=(
            self.id
            if hasattr(self, "id")
            else None
        )
        _first_name=(
            self.first_name
            if hasattr(self, "first_name")
            else None
        )
        _last_name=(
            self.last_name
            if hasattr(self, "last_name")
            else None
        )
        _display_name=(
            self.display_name
            if hasattr(self, "display_name")
            else None
        )
        _email=(
            self.email
            if hasattr(self, "email")
            else None
        )
        _bio=(
            self.bio
            if hasattr(self, "bio")
            else None
        )
        _address=(
            self.address
            if hasattr(self, "address")
            else None
        )
        _address_2=(
            self.address_2
            if hasattr(self, "address_2")
            else None
        )
        _city=(
            self.city
            if hasattr(self, "city")
            else None
        )
        _state=(
            self.state
            if hasattr(self, "state")
            else None
        )
        _postal_code=(
            self.postal_code
            if hasattr(self, "postal_code")
            else None
        )
        _foreign_zip=(
            self.foreign_zip
            if hasattr(self, "foreign_zip")
            else None
        )
        _country=(
            self.country
            if hasattr(self, "country")
            else None
        )
        _work_phone=(
            self.work_phone
            if hasattr(self, "work_phone")
            else None
        )
        _home_phone=(
            self.home_phone
            if hasattr(self, "home_phone")
            else None
        )
        _cell_phone=(
            self.cell_phone
            if hasattr(self, "cell_phone")
            else None
        )
        _active=(
            self.active
            if hasattr(self, "active")
            else None
        )
        _is_system=(
            self.is_system
            if hasattr(self, "is_system")
            else None
        )
        _smode_id=(
            self.smode_id
            if hasattr(self, "smode_id")
            else None
        )
        _appointment_trn=(
            self.appointment_trn
            if hasattr(self, "appointment_trn")
            else None
        )
        _always_allow_double_booking=(
            self.always_allow_double_booking
            if hasattr(self, "always_allow_double_booking")
            else None
        )
        _independent_contractor=(
            self.independent_contractor
            if hasattr(self, "independent_contractor")
            else None
        )
        _image_url=(
            self.image_url
            if hasattr(self, "image_url")
            else None
        )
        _is_male=(
            self.is_male
            if hasattr(self, "is_male")
            else None
        )
        _reservation_trn=(
            self.reservation_trn
            if hasattr(self, "reservation_trn")
            else None
        )
        _sort_order=(
            self.sort_order
            if hasattr(self, "sort_order")
            else None
        )
        _multi_location_permission=(
            self.multi_location_permission
            if hasattr(self, "multi_location_permission")
            else None
        )
        _name=(
            self.name
            if hasattr(self, "name")
            else None
        )
        _provider_i_ds=(
            self.provider_i_ds
            if hasattr(self, "provider_i_ds")
            else None
        )
        _staff_settings=(
            self.staff_settings
            if hasattr(self, "staff_settings")
            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
        )
        _assistant=(
            self.assistant
            if hasattr(self, "assistant")
            else None
        )
        _assistant_2=(
            self.assistant_2
            if hasattr(self, "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
        )
        _emp_id=(
            self.emp_id
            if hasattr(self, "emp_id")
            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
        )
        _login_locations=(
            self.login_locations
            if hasattr(self, "login_locations")
            else None
        )
        return (
            f"{self.__class__.__name__}("
            f"id={_id!s}, "
            f"first_name={_first_name!s}, "
            f"last_name={_last_name!s}, "
            f"display_name={_display_name!s}, "
            f"email={_email!s}, "
            f"bio={_bio!s}, "
            f"address={_address!s}, "
            f"address_2={_address_2!s}, "
            f"city={_city!s}, "
            f"state={_state!s}, "
            f"postal_code={_postal_code!s}, "
            f"foreign_zip={_foreign_zip!s}, "
            f"country={_country!s}, "
            f"work_phone={_work_phone!s}, "
            f"home_phone={_home_phone!s}, "
            f"cell_phone={_cell_phone!s}, "
            f"active={_active!s}, "
            f"is_system={_is_system!s}, "
            f"smode_id={_smode_id!s}, "
            f"appointment_trn={_appointment_trn!s}, "
            f"always_allow_double_booking={_always_allow_double_booking!s}, "
            f"independent_contractor={_independent_contractor!s}, "
            f"image_url={_image_url!s}, "
            f"is_male={_is_male!s}, "
            f"reservation_trn={_reservation_trn!s}, "
            f"sort_order={_sort_order!s}, "
            f"multi_location_permission={_multi_location_permission!s}, "
            f"name={_name!s}, "
            f"provider_i_ds={_provider_i_ds!s}, "
            f"staff_settings={_staff_settings!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"assistant={_assistant!s}, "
            f"assistant_2={_assistant_2!s}, "
            f"employment_start={_employment_start!s}, "
            f"employment_end={_employment_end!s}, "
            f"emp_id={_emp_id!s}, "
            f"appointments={_appointments!s}, "
            f"unavailabilities={_unavailabilities!s}, "
            f"availabilities={_availabilities!s}, "
            f"login_locations={_login_locations!s}, "
            f")"
        )
