# coding: utf-8

"""
    Cyclos 4.11.5 API

    The REST API for Cyclos 4.11.5  # noqa: E501

    OpenAPI spec version: 4.11.5
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from swagger_client.configuration import Configuration


class DataForEditFullProfile(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'display': 'str',
        'short_display': 'str',
        'confirmation_password_input': 'PasswordInput',
        'user_configuration': 'BasicUserDataForEdit',
        'user': 'UserEdit',
        'phone_configuration': 'PhoneConfigurationForUserProfile',
        'land_line_phones': 'list[PhoneEditWithId]',
        'mobile_phones': 'list[PhoneEditWithId]',
        'address_configuration': 'AddressConfigurationForUserProfile',
        'addresses': 'list[AddressEditWithId]',
        'contact_info_configuration': 'ContactInfoConfigurationForUserProfile',
        'contact_infos': 'list[ContactInfoEditWithId]',
        'contact_info_binary_values': 'dict(str, ContactInfoBinaryValuesForUserProfile)',
        'image_configuration': 'ImageConfigurationForUserProfile',
        'images': 'list[Image]'
    }

    attribute_map = {
        'display': 'display',
        'short_display': 'shortDisplay',
        'confirmation_password_input': 'confirmationPasswordInput',
        'user_configuration': 'userConfiguration',
        'user': 'user',
        'phone_configuration': 'phoneConfiguration',
        'land_line_phones': 'landLinePhones',
        'mobile_phones': 'mobilePhones',
        'address_configuration': 'addressConfiguration',
        'addresses': 'addresses',
        'contact_info_configuration': 'contactInfoConfiguration',
        'contact_infos': 'contactInfos',
        'contact_info_binary_values': 'contactInfoBinaryValues',
        'image_configuration': 'imageConfiguration',
        'images': 'images'
    }

    def __init__(self, display=None, short_display=None, confirmation_password_input=None, user_configuration=None, user=None, phone_configuration=None, land_line_phones=None, mobile_phones=None, address_configuration=None, addresses=None, contact_info_configuration=None, contact_infos=None, contact_info_binary_values=None, image_configuration=None, images=None, _configuration=None):  # noqa: E501
        """DataForEditFullProfile - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._display = None
        self._short_display = None
        self._confirmation_password_input = None
        self._user_configuration = None
        self._user = None
        self._phone_configuration = None
        self._land_line_phones = None
        self._mobile_phones = None
        self._address_configuration = None
        self._addresses = None
        self._contact_info_configuration = None
        self._contact_infos = None
        self._contact_info_binary_values = None
        self._image_configuration = None
        self._images = None
        self.discriminator = None

        if display is not None:
            self.display = display
        if short_display is not None:
            self.short_display = short_display
        if confirmation_password_input is not None:
            self.confirmation_password_input = confirmation_password_input
        if user_configuration is not None:
            self.user_configuration = user_configuration
        if user is not None:
            self.user = user
        if phone_configuration is not None:
            self.phone_configuration = phone_configuration
        if land_line_phones is not None:
            self.land_line_phones = land_line_phones
        if mobile_phones is not None:
            self.mobile_phones = mobile_phones
        if address_configuration is not None:
            self.address_configuration = address_configuration
        if addresses is not None:
            self.addresses = addresses
        if contact_info_configuration is not None:
            self.contact_info_configuration = contact_info_configuration
        if contact_infos is not None:
            self.contact_infos = contact_infos
        if contact_info_binary_values is not None:
            self.contact_info_binary_values = contact_info_binary_values
        if image_configuration is not None:
            self.image_configuration = image_configuration
        if images is not None:
            self.images = images

    @property
    def display(self):
        """Gets the display of this DataForEditFullProfile.  # noqa: E501

        Contains the formatting of the user according to the  configuration. Is only returned if no profile fields are marked to return in user list   # noqa: E501

        :return: The display of this DataForEditFullProfile.  # noqa: E501
        :rtype: str
        """
        return self._display

    @display.setter
    def display(self, display):
        """Sets the display of this DataForEditFullProfile.

        Contains the formatting of the user according to the  configuration. Is only returned if no profile fields are marked to return in user list   # noqa: E501

        :param display: The display of this DataForEditFullProfile.  # noqa: E501
        :type: str
        """

        self._display = display

    @property
    def short_display(self):
        """Gets the short_display of this DataForEditFullProfile.  # noqa: E501

        Contains the short formatting of the user according to the configuration. Is only returned if no profile fields are marked to return in user list   # noqa: E501

        :return: The short_display of this DataForEditFullProfile.  # noqa: E501
        :rtype: str
        """
        return self._short_display

    @short_display.setter
    def short_display(self, short_display):
        """Sets the short_display of this DataForEditFullProfile.

        Contains the short formatting of the user according to the configuration. Is only returned if no profile fields are marked to return in user list   # noqa: E501

        :param short_display: The short_display of this DataForEditFullProfile.  # noqa: E501
        :type: str
        """

        self._short_display = short_display

    @property
    def confirmation_password_input(self):
        """Gets the confirmation_password_input of this DataForEditFullProfile.  # noqa: E501

        If a confirmation password is used, contains the definitions on how to request that password from the user. This confirmation password is required when performing sensible actions. Sometimes this is dynamic, for example, the confirmation might be configured to be used only once per session, or operations like payments may have a limit per day to be without confirmation (pinless).   # noqa: E501

        :return: The confirmation_password_input of this DataForEditFullProfile.  # noqa: E501
        :rtype: PasswordInput
        """
        return self._confirmation_password_input

    @confirmation_password_input.setter
    def confirmation_password_input(self, confirmation_password_input):
        """Sets the confirmation_password_input of this DataForEditFullProfile.

        If a confirmation password is used, contains the definitions on how to request that password from the user. This confirmation password is required when performing sensible actions. Sometimes this is dynamic, for example, the confirmation might be configured to be used only once per session, or operations like payments may have a limit per day to be without confirmation (pinless).   # noqa: E501

        :param confirmation_password_input: The confirmation_password_input of this DataForEditFullProfile.  # noqa: E501
        :type: PasswordInput
        """

        self._confirmation_password_input = confirmation_password_input

    @property
    def user_configuration(self):
        """Gets the user_configuration of this DataForEditFullProfile.  # noqa: E501

        Data for editing the basic fields  # noqa: E501

        :return: The user_configuration of this DataForEditFullProfile.  # noqa: E501
        :rtype: BasicUserDataForEdit
        """
        return self._user_configuration

    @user_configuration.setter
    def user_configuration(self, user_configuration):
        """Sets the user_configuration of this DataForEditFullProfile.

        Data for editing the basic fields  # noqa: E501

        :param user_configuration: The user_configuration of this DataForEditFullProfile.  # noqa: E501
        :type: BasicUserDataForEdit
        """

        self._user_configuration = user_configuration

    @property
    def user(self):
        """Gets the user of this DataForEditFullProfile.  # noqa: E501

        User model which can be modified and sent back  # noqa: E501

        :return: The user of this DataForEditFullProfile.  # noqa: E501
        :rtype: UserEdit
        """
        return self._user

    @user.setter
    def user(self, user):
        """Sets the user of this DataForEditFullProfile.

        User model which can be modified and sent back  # noqa: E501

        :param user: The user of this DataForEditFullProfile.  # noqa: E501
        :type: UserEdit
        """

        self._user = user

    @property
    def phone_configuration(self):
        """Gets the phone_configuration of this DataForEditFullProfile.  # noqa: E501

        Configuration data regarding phones  # noqa: E501

        :return: The phone_configuration of this DataForEditFullProfile.  # noqa: E501
        :rtype: PhoneConfigurationForUserProfile
        """
        return self._phone_configuration

    @phone_configuration.setter
    def phone_configuration(self, phone_configuration):
        """Sets the phone_configuration of this DataForEditFullProfile.

        Configuration data regarding phones  # noqa: E501

        :param phone_configuration: The phone_configuration of this DataForEditFullProfile.  # noqa: E501
        :type: PhoneConfigurationForUserProfile
        """

        self._phone_configuration = phone_configuration

    @property
    def land_line_phones(self):
        """Gets the land_line_phones of this DataForEditFullProfile.  # noqa: E501

        The existing land-line phones that can be modified and posted back   # noqa: E501

        :return: The land_line_phones of this DataForEditFullProfile.  # noqa: E501
        :rtype: list[PhoneEditWithId]
        """
        return self._land_line_phones

    @land_line_phones.setter
    def land_line_phones(self, land_line_phones):
        """Sets the land_line_phones of this DataForEditFullProfile.

        The existing land-line phones that can be modified and posted back   # noqa: E501

        :param land_line_phones: The land_line_phones of this DataForEditFullProfile.  # noqa: E501
        :type: list[PhoneEditWithId]
        """

        self._land_line_phones = land_line_phones

    @property
    def mobile_phones(self):
        """Gets the mobile_phones of this DataForEditFullProfile.  # noqa: E501

        The existing mobile phones that can be modified and posted back   # noqa: E501

        :return: The mobile_phones of this DataForEditFullProfile.  # noqa: E501
        :rtype: list[PhoneEditWithId]
        """
        return self._mobile_phones

    @mobile_phones.setter
    def mobile_phones(self, mobile_phones):
        """Sets the mobile_phones of this DataForEditFullProfile.

        The existing mobile phones that can be modified and posted back   # noqa: E501

        :param mobile_phones: The mobile_phones of this DataForEditFullProfile.  # noqa: E501
        :type: list[PhoneEditWithId]
        """

        self._mobile_phones = mobile_phones

    @property
    def address_configuration(self):
        """Gets the address_configuration of this DataForEditFullProfile.  # noqa: E501

        Configuration data regarding addresses  # noqa: E501

        :return: The address_configuration of this DataForEditFullProfile.  # noqa: E501
        :rtype: AddressConfigurationForUserProfile
        """
        return self._address_configuration

    @address_configuration.setter
    def address_configuration(self, address_configuration):
        """Sets the address_configuration of this DataForEditFullProfile.

        Configuration data regarding addresses  # noqa: E501

        :param address_configuration: The address_configuration of this DataForEditFullProfile.  # noqa: E501
        :type: AddressConfigurationForUserProfile
        """

        self._address_configuration = address_configuration

    @property
    def addresses(self):
        """Gets the addresses of this DataForEditFullProfile.  # noqa: E501

        The existing addresses that can be modified and posted back   # noqa: E501

        :return: The addresses of this DataForEditFullProfile.  # noqa: E501
        :rtype: list[AddressEditWithId]
        """
        return self._addresses

    @addresses.setter
    def addresses(self, addresses):
        """Sets the addresses of this DataForEditFullProfile.

        The existing addresses that can be modified and posted back   # noqa: E501

        :param addresses: The addresses of this DataForEditFullProfile.  # noqa: E501
        :type: list[AddressEditWithId]
        """

        self._addresses = addresses

    @property
    def contact_info_configuration(self):
        """Gets the contact_info_configuration of this DataForEditFullProfile.  # noqa: E501

        Configuration data regarding additional contacts  # noqa: E501

        :return: The contact_info_configuration of this DataForEditFullProfile.  # noqa: E501
        :rtype: ContactInfoConfigurationForUserProfile
        """
        return self._contact_info_configuration

    @contact_info_configuration.setter
    def contact_info_configuration(self, contact_info_configuration):
        """Sets the contact_info_configuration of this DataForEditFullProfile.

        Configuration data regarding additional contacts  # noqa: E501

        :param contact_info_configuration: The contact_info_configuration of this DataForEditFullProfile.  # noqa: E501
        :type: ContactInfoConfigurationForUserProfile
        """

        self._contact_info_configuration = contact_info_configuration

    @property
    def contact_infos(self):
        """Gets the contact_infos of this DataForEditFullProfile.  # noqa: E501

        The existing additional contacts that can be modified and posted back   # noqa: E501

        :return: The contact_infos of this DataForEditFullProfile.  # noqa: E501
        :rtype: list[ContactInfoEditWithId]
        """
        return self._contact_infos

    @contact_infos.setter
    def contact_infos(self, contact_infos):
        """Sets the contact_infos of this DataForEditFullProfile.

        The existing additional contacts that can be modified and posted back   # noqa: E501

        :param contact_infos: The contact_infos of this DataForEditFullProfile.  # noqa: E501
        :type: list[ContactInfoEditWithId]
        """

        self._contact_infos = contact_infos

    @property
    def contact_info_binary_values(self):
        """Gets the contact_info_binary_values of this DataForEditFullProfile.  # noqa: E501

        Values for images and binary custom fields for additional contacts   # noqa: E501

        :return: The contact_info_binary_values of this DataForEditFullProfile.  # noqa: E501
        :rtype: dict(str, ContactInfoBinaryValuesForUserProfile)
        """
        return self._contact_info_binary_values

    @contact_info_binary_values.setter
    def contact_info_binary_values(self, contact_info_binary_values):
        """Sets the contact_info_binary_values of this DataForEditFullProfile.

        Values for images and binary custom fields for additional contacts   # noqa: E501

        :param contact_info_binary_values: The contact_info_binary_values of this DataForEditFullProfile.  # noqa: E501
        :type: dict(str, ContactInfoBinaryValuesForUserProfile)
        """

        self._contact_info_binary_values = contact_info_binary_values

    @property
    def image_configuration(self):
        """Gets the image_configuration of this DataForEditFullProfile.  # noqa: E501

        Configuration data regarding images  # noqa: E501

        :return: The image_configuration of this DataForEditFullProfile.  # noqa: E501
        :rtype: ImageConfigurationForUserProfile
        """
        return self._image_configuration

    @image_configuration.setter
    def image_configuration(self, image_configuration):
        """Sets the image_configuration of this DataForEditFullProfile.

        Configuration data regarding images  # noqa: E501

        :param image_configuration: The image_configuration of this DataForEditFullProfile.  # noqa: E501
        :type: ImageConfigurationForUserProfile
        """

        self._image_configuration = image_configuration

    @property
    def images(self):
        """Gets the images of this DataForEditFullProfile.  # noqa: E501

        All current user images  # noqa: E501

        :return: The images of this DataForEditFullProfile.  # noqa: E501
        :rtype: list[Image]
        """
        return self._images

    @images.setter
    def images(self, images):
        """Sets the images of this DataForEditFullProfile.

        All current user images  # noqa: E501

        :param images: The images of this DataForEditFullProfile.  # noqa: E501
        :type: list[Image]
        """

        self._images = images

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(DataForEditFullProfile, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, DataForEditFullProfile):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, DataForEditFullProfile):
            return True

        return self.to_dict() != other.to_dict()
