# coding: utf-8

"""
    vms

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from volcenginesdkcore.configuration import Configuration


class Click2CallRequest(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 = {
        'callee': 'str',
        'callee_degrade_to_capital': 'int',
        'callee_number': 'str',
        'callee_number_city_code': 'str',
        'callee_number_degrade_city_list': 'list[str]',
        'callee_number_pool_no': 'str',
        'caller': 'str',
        'caller_degrade_to_capital': 'int',
        'caller_number': 'str',
        'caller_number_city_code': 'str',
        'caller_number_degrade_city_list': 'list[str]',
        'caller_number_pool_no': 'str',
        'last_minutes': 'int',
        'last_voice': 'str',
        'last_voice_to': 'str',
        'max_time': 'int',
        'pre_voice': 'str',
        'user_data': 'str'
    }

    attribute_map = {
        'callee': 'Callee',
        'callee_degrade_to_capital': 'CalleeDegradeToCapital',
        'callee_number': 'CalleeNumber',
        'callee_number_city_code': 'CalleeNumberCityCode',
        'callee_number_degrade_city_list': 'CalleeNumberDegradeCityList',
        'callee_number_pool_no': 'CalleeNumberPoolNo',
        'caller': 'Caller',
        'caller_degrade_to_capital': 'CallerDegradeToCapital',
        'caller_number': 'CallerNumber',
        'caller_number_city_code': 'CallerNumberCityCode',
        'caller_number_degrade_city_list': 'CallerNumberDegradeCityList',
        'caller_number_pool_no': 'CallerNumberPoolNo',
        'last_minutes': 'LastMinutes',
        'last_voice': 'LastVoice',
        'last_voice_to': 'LastVoiceTo',
        'max_time': 'MaxTime',
        'pre_voice': 'PreVoice',
        'user_data': 'UserData'
    }

    def __init__(self, callee=None, callee_degrade_to_capital=None, callee_number=None, callee_number_city_code=None, callee_number_degrade_city_list=None, callee_number_pool_no=None, caller=None, caller_degrade_to_capital=None, caller_number=None, caller_number_city_code=None, caller_number_degrade_city_list=None, caller_number_pool_no=None, last_minutes=None, last_voice=None, last_voice_to=None, max_time=None, pre_voice=None, user_data=None, _configuration=None):  # noqa: E501
        """Click2CallRequest - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._callee = None
        self._callee_degrade_to_capital = None
        self._callee_number = None
        self._callee_number_city_code = None
        self._callee_number_degrade_city_list = None
        self._callee_number_pool_no = None
        self._caller = None
        self._caller_degrade_to_capital = None
        self._caller_number = None
        self._caller_number_city_code = None
        self._caller_number_degrade_city_list = None
        self._caller_number_pool_no = None
        self._last_minutes = None
        self._last_voice = None
        self._last_voice_to = None
        self._max_time = None
        self._pre_voice = None
        self._user_data = None
        self.discriminator = None

        self.callee = callee
        if callee_degrade_to_capital is not None:
            self.callee_degrade_to_capital = callee_degrade_to_capital
        if callee_number is not None:
            self.callee_number = callee_number
        if callee_number_city_code is not None:
            self.callee_number_city_code = callee_number_city_code
        if callee_number_degrade_city_list is not None:
            self.callee_number_degrade_city_list = callee_number_degrade_city_list
        self.callee_number_pool_no = callee_number_pool_no
        self.caller = caller
        if caller_degrade_to_capital is not None:
            self.caller_degrade_to_capital = caller_degrade_to_capital
        if caller_number is not None:
            self.caller_number = caller_number
        if caller_number_city_code is not None:
            self.caller_number_city_code = caller_number_city_code
        if caller_number_degrade_city_list is not None:
            self.caller_number_degrade_city_list = caller_number_degrade_city_list
        self.caller_number_pool_no = caller_number_pool_no
        if last_minutes is not None:
            self.last_minutes = last_minutes
        if last_voice is not None:
            self.last_voice = last_voice
        if last_voice_to is not None:
            self.last_voice_to = last_voice_to
        if max_time is not None:
            self.max_time = max_time
        if pre_voice is not None:
            self.pre_voice = pre_voice
        if user_data is not None:
            self.user_data = user_data

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


        :return: The callee of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._callee

    @callee.setter
    def callee(self, callee):
        """Sets the callee of this Click2CallRequest.


        :param callee: The callee of this Click2CallRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and callee is None:
            raise ValueError("Invalid value for `callee`, must not be `None`")  # noqa: E501

        self._callee = callee

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


        :return: The callee_degrade_to_capital of this Click2CallRequest.  # noqa: E501
        :rtype: int
        """
        return self._callee_degrade_to_capital

    @callee_degrade_to_capital.setter
    def callee_degrade_to_capital(self, callee_degrade_to_capital):
        """Sets the callee_degrade_to_capital of this Click2CallRequest.


        :param callee_degrade_to_capital: The callee_degrade_to_capital of this Click2CallRequest.  # noqa: E501
        :type: int
        """

        self._callee_degrade_to_capital = callee_degrade_to_capital

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


        :return: The callee_number of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._callee_number

    @callee_number.setter
    def callee_number(self, callee_number):
        """Sets the callee_number of this Click2CallRequest.


        :param callee_number: The callee_number of this Click2CallRequest.  # noqa: E501
        :type: str
        """

        self._callee_number = callee_number

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


        :return: The callee_number_city_code of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._callee_number_city_code

    @callee_number_city_code.setter
    def callee_number_city_code(self, callee_number_city_code):
        """Sets the callee_number_city_code of this Click2CallRequest.


        :param callee_number_city_code: The callee_number_city_code of this Click2CallRequest.  # noqa: E501
        :type: str
        """

        self._callee_number_city_code = callee_number_city_code

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


        :return: The callee_number_degrade_city_list of this Click2CallRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._callee_number_degrade_city_list

    @callee_number_degrade_city_list.setter
    def callee_number_degrade_city_list(self, callee_number_degrade_city_list):
        """Sets the callee_number_degrade_city_list of this Click2CallRequest.


        :param callee_number_degrade_city_list: The callee_number_degrade_city_list of this Click2CallRequest.  # noqa: E501
        :type: list[str]
        """

        self._callee_number_degrade_city_list = callee_number_degrade_city_list

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


        :return: The callee_number_pool_no of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._callee_number_pool_no

    @callee_number_pool_no.setter
    def callee_number_pool_no(self, callee_number_pool_no):
        """Sets the callee_number_pool_no of this Click2CallRequest.


        :param callee_number_pool_no: The callee_number_pool_no of this Click2CallRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and callee_number_pool_no is None:
            raise ValueError("Invalid value for `callee_number_pool_no`, must not be `None`")  # noqa: E501

        self._callee_number_pool_no = callee_number_pool_no

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


        :return: The caller of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._caller

    @caller.setter
    def caller(self, caller):
        """Sets the caller of this Click2CallRequest.


        :param caller: The caller of this Click2CallRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and caller is None:
            raise ValueError("Invalid value for `caller`, must not be `None`")  # noqa: E501

        self._caller = caller

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


        :return: The caller_degrade_to_capital of this Click2CallRequest.  # noqa: E501
        :rtype: int
        """
        return self._caller_degrade_to_capital

    @caller_degrade_to_capital.setter
    def caller_degrade_to_capital(self, caller_degrade_to_capital):
        """Sets the caller_degrade_to_capital of this Click2CallRequest.


        :param caller_degrade_to_capital: The caller_degrade_to_capital of this Click2CallRequest.  # noqa: E501
        :type: int
        """

        self._caller_degrade_to_capital = caller_degrade_to_capital

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


        :return: The caller_number of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._caller_number

    @caller_number.setter
    def caller_number(self, caller_number):
        """Sets the caller_number of this Click2CallRequest.


        :param caller_number: The caller_number of this Click2CallRequest.  # noqa: E501
        :type: str
        """

        self._caller_number = caller_number

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


        :return: The caller_number_city_code of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._caller_number_city_code

    @caller_number_city_code.setter
    def caller_number_city_code(self, caller_number_city_code):
        """Sets the caller_number_city_code of this Click2CallRequest.


        :param caller_number_city_code: The caller_number_city_code of this Click2CallRequest.  # noqa: E501
        :type: str
        """

        self._caller_number_city_code = caller_number_city_code

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


        :return: The caller_number_degrade_city_list of this Click2CallRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._caller_number_degrade_city_list

    @caller_number_degrade_city_list.setter
    def caller_number_degrade_city_list(self, caller_number_degrade_city_list):
        """Sets the caller_number_degrade_city_list of this Click2CallRequest.


        :param caller_number_degrade_city_list: The caller_number_degrade_city_list of this Click2CallRequest.  # noqa: E501
        :type: list[str]
        """

        self._caller_number_degrade_city_list = caller_number_degrade_city_list

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


        :return: The caller_number_pool_no of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._caller_number_pool_no

    @caller_number_pool_no.setter
    def caller_number_pool_no(self, caller_number_pool_no):
        """Sets the caller_number_pool_no of this Click2CallRequest.


        :param caller_number_pool_no: The caller_number_pool_no of this Click2CallRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and caller_number_pool_no is None:
            raise ValueError("Invalid value for `caller_number_pool_no`, must not be `None`")  # noqa: E501

        self._caller_number_pool_no = caller_number_pool_no

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


        :return: The last_minutes of this Click2CallRequest.  # noqa: E501
        :rtype: int
        """
        return self._last_minutes

    @last_minutes.setter
    def last_minutes(self, last_minutes):
        """Sets the last_minutes of this Click2CallRequest.


        :param last_minutes: The last_minutes of this Click2CallRequest.  # noqa: E501
        :type: int
        """

        self._last_minutes = last_minutes

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


        :return: The last_voice of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._last_voice

    @last_voice.setter
    def last_voice(self, last_voice):
        """Sets the last_voice of this Click2CallRequest.


        :param last_voice: The last_voice of this Click2CallRequest.  # noqa: E501
        :type: str
        """

        self._last_voice = last_voice

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


        :return: The last_voice_to of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._last_voice_to

    @last_voice_to.setter
    def last_voice_to(self, last_voice_to):
        """Sets the last_voice_to of this Click2CallRequest.


        :param last_voice_to: The last_voice_to of this Click2CallRequest.  # noqa: E501
        :type: str
        """
        allowed_values = ["NONE", "CALLER", "CALLEE", "BOTH"]  # noqa: E501
        if (self._configuration.client_side_validation and
                last_voice_to not in allowed_values):
            raise ValueError(
                "Invalid value for `last_voice_to` ({0}), must be one of {1}"  # noqa: E501
                .format(last_voice_to, allowed_values)
            )

        self._last_voice_to = last_voice_to

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


        :return: The max_time of this Click2CallRequest.  # noqa: E501
        :rtype: int
        """
        return self._max_time

    @max_time.setter
    def max_time(self, max_time):
        """Sets the max_time of this Click2CallRequest.


        :param max_time: The max_time of this Click2CallRequest.  # noqa: E501
        :type: int
        """

        self._max_time = max_time

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


        :return: The pre_voice of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._pre_voice

    @pre_voice.setter
    def pre_voice(self, pre_voice):
        """Sets the pre_voice of this Click2CallRequest.


        :param pre_voice: The pre_voice of this Click2CallRequest.  # noqa: E501
        :type: str
        """

        self._pre_voice = pre_voice

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


        :return: The user_data of this Click2CallRequest.  # noqa: E501
        :rtype: str
        """
        return self._user_data

    @user_data.setter
    def user_data(self, user_data):
        """Sets the user_data of this Click2CallRequest.


        :param user_data: The user_data of this Click2CallRequest.  # noqa: E501
        :type: str
        """

        self._user_data = user_data

    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(Click2CallRequest, 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, Click2CallRequest):
            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, Click2CallRequest):
            return True

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