"""mindbodypublicapi.

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

# ruff: noqa: E501
from mindbodypublicapi.api_helper import APIHelper


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

    Attributes:
        first_name (str): The staff member first name. You must specify a first name
            when you add a staff member.
        last_name (str): The staff member last name. You must specify a last name
            when you add a staff member.
        email (str): The staff member’s email address.
        is_male (bool): When `true`, indicates that the staff member is male.  When
            `false`, indicates that the staff member is female.
        home_phone (str): The staff member’s home phone number.
        work_phone (str): The staff member’s work phone number.
        mobile_phone (str): The staff member’s mobile phone number.
        bio (str): The staff member’s biography. This string contains HTML.
        address (str): The first line of the staff member street address.
        address_2 (str): The second line of the staff member street address, if
            needed.
        city (str): The staff member’s city.
        state (str): The staff member’s state.
        country (str): The staff member’s country.
        postal_code (str): The staff member’s postal code.
        class_assistant (bool): Is the staff an assistant
        class_assistant_2 (bool): Is the staff an assistant2
        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.
        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.
        class_teacher (bool): When `true`, indicates that the staff member can teach
            classes.  When `false`, indicates that the staff member cannot teach
            classes.
        employment_start (datetime): The start date of employment
        employment_end (datetime): The end date of employment
        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.
        provider_i_ds (List[str]): A list of providerIDs for the staff.  In the US it
            is one per staff and is numeric, otherwise it can be a list and is
            alpha-numeric  for more information see <a href="
            https://support.mindbodyonline.com/s/article/204075743-Provider-IDs?langua
            ge=en_US" target="blank">Provider IDs</a>
        notes (str): The staff member private notes.
        emp_id (str): The custom staff ID assigned to the staff member.

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "first_name": "FirstName",
        "last_name": "LastName",
        "email": "Email",
        "is_male": "IsMale",
        "home_phone": "HomePhone",
        "work_phone": "WorkPhone",
        "mobile_phone": "MobilePhone",
        "bio": "Bio",
        "address": "Address",
        "address_2": "Address2",
        "city": "City",
        "state": "State",
        "country": "Country",
        "postal_code": "PostalCode",
        "class_assistant": "ClassAssistant",
        "class_assistant_2": "ClassAssistant2",
        "independent_contractor": "IndependentContractor",
        "appointment_instructor": "AppointmentInstructor",
        "always_allow_double_booking": "AlwaysAllowDoubleBooking",
        "class_teacher": "ClassTeacher",
        "employment_start": "EmploymentStart",
        "employment_end": "EmploymentEnd",
        "sort_order": "SortOrder",
        "provider_i_ds": "ProviderIDs",
        "notes": "Notes",
        "emp_id": "EmpID",
    }

    _optionals = [
        "email",
        "is_male",
        "home_phone",
        "work_phone",
        "mobile_phone",
        "bio",
        "address",
        "address_2",
        "city",
        "state",
        "country",
        "postal_code",
        "class_assistant",
        "class_assistant_2",
        "independent_contractor",
        "appointment_instructor",
        "always_allow_double_booking",
        "class_teacher",
        "employment_start",
        "employment_end",
        "sort_order",
        "provider_i_ds",
        "notes",
        "emp_id",
    ]

    def __init__(
        self,
        first_name=None,
        last_name=None,
        email=APIHelper.SKIP,
        is_male=APIHelper.SKIP,
        home_phone=APIHelper.SKIP,
        work_phone=APIHelper.SKIP,
        mobile_phone=APIHelper.SKIP,
        bio=APIHelper.SKIP,
        address=APIHelper.SKIP,
        address_2=APIHelper.SKIP,
        city=APIHelper.SKIP,
        state=APIHelper.SKIP,
        country=APIHelper.SKIP,
        postal_code=APIHelper.SKIP,
        class_assistant=APIHelper.SKIP,
        class_assistant_2=APIHelper.SKIP,
        independent_contractor=APIHelper.SKIP,
        appointment_instructor=APIHelper.SKIP,
        always_allow_double_booking=APIHelper.SKIP,
        class_teacher=APIHelper.SKIP,
        employment_start=APIHelper.SKIP,
        employment_end=APIHelper.SKIP,
        sort_order=APIHelper.SKIP,
        provider_i_ds=APIHelper.SKIP,
        notes=APIHelper.SKIP,
        emp_id=APIHelper.SKIP):
        """Initialize a AddStaffRequest instance."""
        # Initialize members of the class
        self.first_name = first_name
        self.last_name = last_name
        if email is not APIHelper.SKIP:
            self.email = email
        if is_male is not APIHelper.SKIP:
            self.is_male = is_male
        if home_phone is not APIHelper.SKIP:
            self.home_phone = home_phone
        if work_phone is not APIHelper.SKIP:
            self.work_phone = work_phone
        if mobile_phone is not APIHelper.SKIP:
            self.mobile_phone = mobile_phone
        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 country is not APIHelper.SKIP:
            self.country = country
        if postal_code is not APIHelper.SKIP:
            self.postal_code = postal_code
        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 independent_contractor is not APIHelper.SKIP:
            self.independent_contractor = independent_contractor
        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 class_teacher is not APIHelper.SKIP:
            self.class_teacher = class_teacher
        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 sort_order is not APIHelper.SKIP:
            self.sort_order = sort_order
        if provider_i_ds is not APIHelper.SKIP:
            self.provider_i_ds = provider_i_ds
        if notes is not APIHelper.SKIP:
            self.notes = notes
        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
        first_name =\
            dictionary.get("FirstName")\
            if dictionary.get("FirstName")\
                else None
        last_name =\
            dictionary.get("LastName")\
            if dictionary.get("LastName")\
                else None
        email =\
            dictionary.get("Email")\
            if dictionary.get("Email")\
                else APIHelper.SKIP
        is_male =\
            dictionary.get("IsMale")\
            if "IsMale" in dictionary.keys()\
                else APIHelper.SKIP
        home_phone =\
            dictionary.get("HomePhone")\
            if dictionary.get("HomePhone")\
                else APIHelper.SKIP
        work_phone =\
            dictionary.get("WorkPhone")\
            if dictionary.get("WorkPhone")\
                else APIHelper.SKIP
        mobile_phone =\
            dictionary.get("MobilePhone")\
            if dictionary.get("MobilePhone")\
                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
        country =\
            dictionary.get("Country")\
            if dictionary.get("Country")\
                else APIHelper.SKIP
        postal_code =\
            dictionary.get("PostalCode")\
            if dictionary.get("PostalCode")\
                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
        independent_contractor =\
            dictionary.get("IndependentContractor")\
            if "IndependentContractor" in dictionary.keys()\
                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
        class_teacher =\
            dictionary.get("ClassTeacher")\
            if "ClassTeacher" 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
        sort_order =\
            dictionary.get("SortOrder")\
            if dictionary.get("SortOrder")\
                else APIHelper.SKIP
        provider_i_ds =\
            dictionary.get("ProviderIDs")\
            if dictionary.get("ProviderIDs")\
                else APIHelper.SKIP
        notes =\
            dictionary.get("Notes")\
            if dictionary.get("Notes")\
                else APIHelper.SKIP
        emp_id =\
            dictionary.get("EmpID")\
            if dictionary.get("EmpID")\
                else APIHelper.SKIP

        # Return an object of this model
        return cls(first_name,
                   last_name,
                   email,
                   is_male,
                   home_phone,
                   work_phone,
                   mobile_phone,
                   bio,
                   address,
                   address_2,
                   city,
                   state,
                   country,
                   postal_code,
                   class_assistant,
                   class_assistant_2,
                   independent_contractor,
                   appointment_instructor,
                   always_allow_double_booking,
                   class_teacher,
                   employment_start,
                   employment_end,
                   sort_order,
                   provider_i_ds,
                   notes,
                   emp_id)

    def __repr__(self):
        """Return a unambiguous string representation."""
        _first_name=self.first_name
        _last_name=self.last_name
        _email=(
            self.email
            if hasattr(self, "email")
            else None
        )
        _is_male=(
            self.is_male
            if hasattr(self, "is_male")
            else None
        )
        _home_phone=(
            self.home_phone
            if hasattr(self, "home_phone")
            else None
        )
        _work_phone=(
            self.work_phone
            if hasattr(self, "work_phone")
            else None
        )
        _mobile_phone=(
            self.mobile_phone
            if hasattr(self, "mobile_phone")
            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
        )
        _country=(
            self.country
            if hasattr(self, "country")
            else None
        )
        _postal_code=(
            self.postal_code
            if hasattr(self, "postal_code")
            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
        )
        _independent_contractor=(
            self.independent_contractor
            if hasattr(self, "independent_contractor")
            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
        )
        _class_teacher=(
            self.class_teacher
            if hasattr(self, "class_teacher")
            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
        )
        _sort_order=(
            self.sort_order
            if hasattr(self, "sort_order")
            else None
        )
        _provider_i_ds=(
            self.provider_i_ds
            if hasattr(self, "provider_i_ds")
            else None
        )
        _notes=(
            self.notes
            if hasattr(self, "notes")
            else None
        )
        _emp_id=(
            self.emp_id
            if hasattr(self, "emp_id")
            else None
        )
        return (
            f"{self.__class__.__name__}("
            f"first_name={_first_name!r}, "
            f"last_name={_last_name!r}, "
            f"email={_email!r}, "
            f"is_male={_is_male!r}, "
            f"home_phone={_home_phone!r}, "
            f"work_phone={_work_phone!r}, "
            f"mobile_phone={_mobile_phone!r}, "
            f"bio={_bio!r}, "
            f"address={_address!r}, "
            f"address_2={_address_2!r}, "
            f"city={_city!r}, "
            f"state={_state!r}, "
            f"country={_country!r}, "
            f"postal_code={_postal_code!r}, "
            f"class_assistant={_class_assistant!r}, "
            f"class_assistant_2={_class_assistant_2!r}, "
            f"independent_contractor={_independent_contractor!r}, "
            f"appointment_instructor={_appointment_instructor!r}, "
            f"always_allow_double_booking={_always_allow_double_booking!r}, "
            f"class_teacher={_class_teacher!r}, "
            f"employment_start={_employment_start!r}, "
            f"employment_end={_employment_end!r}, "
            f"sort_order={_sort_order!r}, "
            f"provider_i_ds={_provider_i_ds!r}, "
            f"notes={_notes!r}, "
            f"emp_id={_emp_id!r}, "
            f")"
        )

    def __str__(self):
        """Return a human-readable string representation."""
        _first_name=self.first_name
        _last_name=self.last_name
        _email=(
            self.email
            if hasattr(self, "email")
            else None
        )
        _is_male=(
            self.is_male
            if hasattr(self, "is_male")
            else None
        )
        _home_phone=(
            self.home_phone
            if hasattr(self, "home_phone")
            else None
        )
        _work_phone=(
            self.work_phone
            if hasattr(self, "work_phone")
            else None
        )
        _mobile_phone=(
            self.mobile_phone
            if hasattr(self, "mobile_phone")
            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
        )
        _country=(
            self.country
            if hasattr(self, "country")
            else None
        )
        _postal_code=(
            self.postal_code
            if hasattr(self, "postal_code")
            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
        )
        _independent_contractor=(
            self.independent_contractor
            if hasattr(self, "independent_contractor")
            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
        )
        _class_teacher=(
            self.class_teacher
            if hasattr(self, "class_teacher")
            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
        )
        _sort_order=(
            self.sort_order
            if hasattr(self, "sort_order")
            else None
        )
        _provider_i_ds=(
            self.provider_i_ds
            if hasattr(self, "provider_i_ds")
            else None
        )
        _notes=(
            self.notes
            if hasattr(self, "notes")
            else None
        )
        _emp_id=(
            self.emp_id
            if hasattr(self, "emp_id")
            else None
        )
        return (
            f"{self.__class__.__name__}("
            f"first_name={_first_name!s}, "
            f"last_name={_last_name!s}, "
            f"email={_email!s}, "
            f"is_male={_is_male!s}, "
            f"home_phone={_home_phone!s}, "
            f"work_phone={_work_phone!s}, "
            f"mobile_phone={_mobile_phone!s}, "
            f"bio={_bio!s}, "
            f"address={_address!s}, "
            f"address_2={_address_2!s}, "
            f"city={_city!s}, "
            f"state={_state!s}, "
            f"country={_country!s}, "
            f"postal_code={_postal_code!s}, "
            f"class_assistant={_class_assistant!s}, "
            f"class_assistant_2={_class_assistant_2!s}, "
            f"independent_contractor={_independent_contractor!s}, "
            f"appointment_instructor={_appointment_instructor!s}, "
            f"always_allow_double_booking={_always_allow_double_booking!s}, "
            f"class_teacher={_class_teacher!s}, "
            f"employment_start={_employment_start!s}, "
            f"employment_end={_employment_end!s}, "
            f"sort_order={_sort_order!s}, "
            f"provider_i_ds={_provider_i_ds!s}, "
            f"notes={_notes!s}, "
            f"emp_id={_emp_id!s}, "
            f")"
        )
