# coding: utf-8

"""
    ExaVault API

    See our API reference documentation at https://www.exavault.com/developer/api-docs/  # noqa: E501

    OpenAPI spec version: 2.0
    Contact: support@exavault.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class UpdateAccountRequestBody(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 = {
        'quota_notice_enabled': 'bool',
        'quota_notice_threshold': 'int',
        'secure_only': 'bool',
        'complex_passwords': 'bool',
        'show_referral_links': 'bool',
        'external_domain': 'str',
        'email_content': 'str',
        'email_subject': 'str',
        'allowed_ip_ranges': 'list[AccountAllowedIpRanges]',
        'callback_settings': 'CallbackSettingsValues',
        'branding_settings': 'BrandingSettingsValues',
        'account_onboarding': 'bool',
        'custom_signature': 'str'
    }

    attribute_map = {
        'quota_notice_enabled': 'quotaNoticeEnabled',
        'quota_notice_threshold': 'quotaNoticeThreshold',
        'secure_only': 'secureOnly',
        'complex_passwords': 'complexPasswords',
        'show_referral_links': 'showReferralLinks',
        'external_domain': 'externalDomain',
        'email_content': 'emailContent',
        'email_subject': 'emailSubject',
        'allowed_ip_ranges': 'allowedIpRanges',
        'callback_settings': 'callbackSettings',
        'branding_settings': 'brandingSettings',
        'account_onboarding': 'accountOnboarding',
        'custom_signature': 'customSignature'
    }

    def __init__(self, quota_notice_enabled=None, quota_notice_threshold=None, secure_only=None, complex_passwords=None, show_referral_links=None, external_domain=None, email_content=None, email_subject=None, allowed_ip_ranges=None, callback_settings=None, branding_settings=None, account_onboarding=None, custom_signature=None):  # noqa: E501
        """UpdateAccountRequestBody - a model defined in Swagger"""  # noqa: E501
        self._quota_notice_enabled = None
        self._quota_notice_threshold = None
        self._secure_only = None
        self._complex_passwords = None
        self._show_referral_links = None
        self._external_domain = None
        self._email_content = None
        self._email_subject = None
        self._allowed_ip_ranges = None
        self._callback_settings = None
        self._branding_settings = None
        self._account_onboarding = None
        self._custom_signature = None
        self.discriminator = None
        if quota_notice_enabled is not None:
            self.quota_notice_enabled = quota_notice_enabled
        if quota_notice_threshold is not None:
            self.quota_notice_threshold = quota_notice_threshold
        if secure_only is not None:
            self.secure_only = secure_only
        if complex_passwords is not None:
            self.complex_passwords = complex_passwords
        if show_referral_links is not None:
            self.show_referral_links = show_referral_links
        if external_domain is not None:
            self.external_domain = external_domain
        if email_content is not None:
            self.email_content = email_content
        if email_subject is not None:
            self.email_subject = email_subject
        if allowed_ip_ranges is not None:
            self.allowed_ip_ranges = allowed_ip_ranges
        if callback_settings is not None:
            self.callback_settings = callback_settings
        if branding_settings is not None:
            self.branding_settings = branding_settings
        if account_onboarding is not None:
            self.account_onboarding = account_onboarding
        if custom_signature is not None:
            self.custom_signature = custom_signature

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

        Whether the system should email the account owner when usage exceeds quotaNoticeThreshold value  # noqa: E501

        :return: The quota_notice_enabled of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: bool
        """
        return self._quota_notice_enabled

    @quota_notice_enabled.setter
    def quota_notice_enabled(self, quota_notice_enabled):
        """Sets the quota_notice_enabled of this UpdateAccountRequestBody.

        Whether the system should email the account owner when usage exceeds quotaNoticeThreshold value  # noqa: E501

        :param quota_notice_enabled: The quota_notice_enabled of this UpdateAccountRequestBody.  # noqa: E501
        :type: bool
        """

        self._quota_notice_enabled = quota_notice_enabled

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

        Percent of account usage to trigger quota notices for.  # noqa: E501

        :return: The quota_notice_threshold of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: int
        """
        return self._quota_notice_threshold

    @quota_notice_threshold.setter
    def quota_notice_threshold(self, quota_notice_threshold):
        """Sets the quota_notice_threshold of this UpdateAccountRequestBody.

        Percent of account usage to trigger quota notices for.  # noqa: E501

        :param quota_notice_threshold: The quota_notice_threshold of this UpdateAccountRequestBody.  # noqa: E501
        :type: int
        """

        self._quota_notice_threshold = quota_notice_threshold

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

        Whether unencrypted FTP connections should be denied for the account.  # noqa: E501

        :return: The secure_only of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: bool
        """
        return self._secure_only

    @secure_only.setter
    def secure_only(self, secure_only):
        """Sets the secure_only of this UpdateAccountRequestBody.

        Whether unencrypted FTP connections should be denied for the account.  # noqa: E501

        :param secure_only: The secure_only of this UpdateAccountRequestBody.  # noqa: E501
        :type: bool
        """

        self._secure_only = secure_only

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

        Whether to require complex passwords for all passwords.  # noqa: E501

        :return: The complex_passwords of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: bool
        """
        return self._complex_passwords

    @complex_passwords.setter
    def complex_passwords(self, complex_passwords):
        """Sets the complex_passwords of this UpdateAccountRequestBody.

        Whether to require complex passwords for all passwords.  # noqa: E501

        :param complex_passwords: The complex_passwords of this UpdateAccountRequestBody.  # noqa: E501
        :type: bool
        """

        self._complex_passwords = complex_passwords

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

        Whether to display links for others to sign up on share views and invitation emails  # noqa: E501

        :return: The show_referral_links of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: bool
        """
        return self._show_referral_links

    @show_referral_links.setter
    def show_referral_links(self, show_referral_links):
        """Sets the show_referral_links of this UpdateAccountRequestBody.

        Whether to display links for others to sign up on share views and invitation emails  # noqa: E501

        :param show_referral_links: The show_referral_links of this UpdateAccountRequestBody.  # noqa: E501
        :type: bool
        """

        self._show_referral_links = show_referral_links

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

        Custom address used for web file manager. Not available for all account types.  # noqa: E501

        :return: The external_domain of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: str
        """
        return self._external_domain

    @external_domain.setter
    def external_domain(self, external_domain):
        """Sets the external_domain of this UpdateAccountRequestBody.

        Custom address used for web file manager. Not available for all account types.  # noqa: E501

        :param external_domain: The external_domain of this UpdateAccountRequestBody.  # noqa: E501
        :type: str
        """

        self._external_domain = external_domain

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

        Content of welcome email template.  # noqa: E501

        :return: The email_content of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: str
        """
        return self._email_content

    @email_content.setter
    def email_content(self, email_content):
        """Sets the email_content of this UpdateAccountRequestBody.

        Content of welcome email template.  # noqa: E501

        :param email_content: The email_content of this UpdateAccountRequestBody.  # noqa: E501
        :type: str
        """

        self._email_content = email_content

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

        Subject line for welcome emails  # noqa: E501

        :return: The email_subject of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: str
        """
        return self._email_subject

    @email_subject.setter
    def email_subject(self, email_subject):
        """Sets the email_subject of this UpdateAccountRequestBody.

        Subject line for welcome emails  # noqa: E501

        :param email_subject: The email_subject of this UpdateAccountRequestBody.  # noqa: E501
        :type: str
        """

        self._email_subject = email_subject

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

        IP Address Ranges for restricting account access  # noqa: E501

        :return: The allowed_ip_ranges of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: list[AccountAllowedIpRanges]
        """
        return self._allowed_ip_ranges

    @allowed_ip_ranges.setter
    def allowed_ip_ranges(self, allowed_ip_ranges):
        """Sets the allowed_ip_ranges of this UpdateAccountRequestBody.

        IP Address Ranges for restricting account access  # noqa: E501

        :param allowed_ip_ranges: The allowed_ip_ranges of this UpdateAccountRequestBody.  # noqa: E501
        :type: list[AccountAllowedIpRanges]
        """

        self._allowed_ip_ranges = allowed_ip_ranges

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


        :return: The callback_settings of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: CallbackSettingsValues
        """
        return self._callback_settings

    @callback_settings.setter
    def callback_settings(self, callback_settings):
        """Sets the callback_settings of this UpdateAccountRequestBody.


        :param callback_settings: The callback_settings of this UpdateAccountRequestBody.  # noqa: E501
        :type: CallbackSettingsValues
        """

        self._callback_settings = callback_settings

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


        :return: The branding_settings of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: BrandingSettingsValues
        """
        return self._branding_settings

    @branding_settings.setter
    def branding_settings(self, branding_settings):
        """Sets the branding_settings of this UpdateAccountRequestBody.


        :param branding_settings: The branding_settings of this UpdateAccountRequestBody.  # noqa: E501
        :type: BrandingSettingsValues
        """

        self._branding_settings = branding_settings

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

        Whether extra help popups can be enabled for users in the web file manager.  # noqa: E501

        :return: The account_onboarding of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: bool
        """
        return self._account_onboarding

    @account_onboarding.setter
    def account_onboarding(self, account_onboarding):
        """Sets the account_onboarding of this UpdateAccountRequestBody.

        Whether extra help popups can be enabled for users in the web file manager.  # noqa: E501

        :param account_onboarding: The account_onboarding of this UpdateAccountRequestBody.  # noqa: E501
        :type: bool
        """

        self._account_onboarding = account_onboarding

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

        Signature to be automatically added to the bottom of emails generated by the account.  # noqa: E501

        :return: The custom_signature of this UpdateAccountRequestBody.  # noqa: E501
        :rtype: str
        """
        return self._custom_signature

    @custom_signature.setter
    def custom_signature(self, custom_signature):
        """Sets the custom_signature of this UpdateAccountRequestBody.

        Signature to be automatically added to the bottom of emails generated by the account.  # noqa: E501

        :param custom_signature: The custom_signature of this UpdateAccountRequestBody.  # noqa: E501
        :type: str
        """

        self._custom_signature = custom_signature

    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(UpdateAccountRequestBody, 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, UpdateAccountRequestBody):
            return False

        return self.__dict__ == other.__dict__

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