# coding: utf-8

"""
    OpenClientCoolAutomationAPI

    Cool platform REST API  # noqa: E501

    OpenAPI spec version: 1.0.2
    Contact: info@coolautomation.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class TypesResponseData(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 = {
        'temperature_scale': 'TypesResponseDataTemperatureScale',
        'operation_statuses': 'TypesResponseDataOperationStatuses',
        'operation_modes': 'TypesResponseDataOperationModes',
        'fan_modes': 'TypesResponseDataFanModes',
        'swing_modes': 'TypesResponseDataSwingModes',
        'week_days': 'TypesResponseDataWeekDays',
        'permissions': 'TypesResponseDataPermissions',
        'resources': 'TypesResponseDataResources',
        'roles': 'TypesResponseDataRoles',
        'unit_types': 'TypesResponseDataUnitTypes',
        'hvac_brands': 'TypesResponseDataHvacBrands',
        'device_types': 'TypesResponseDataDeviceTypes'
    }

    attribute_map = {
        'temperature_scale': 'temperatureScale',
        'operation_statuses': 'operationStatuses',
        'operation_modes': 'operationModes',
        'fan_modes': 'fanModes',
        'swing_modes': 'swingModes',
        'week_days': 'weekDays',
        'permissions': 'permissions',
        'resources': 'resources',
        'roles': 'roles',
        'unit_types': 'unitTypes',
        'hvac_brands': 'hvacBrands',
        'device_types': 'deviceTypes'
    }

    def __init__(self, temperature_scale=None, operation_statuses=None, operation_modes=None, fan_modes=None, swing_modes=None, week_days=None, permissions=None, resources=None, roles=None, unit_types=None, hvac_brands=None, device_types=None):  # noqa: E501
        """TypesResponseData - a model defined in Swagger"""  # noqa: E501
        self._temperature_scale = None
        self._operation_statuses = None
        self._operation_modes = None
        self._fan_modes = None
        self._swing_modes = None
        self._week_days = None
        self._permissions = None
        self._resources = None
        self._roles = None
        self._unit_types = None
        self._hvac_brands = None
        self._device_types = None
        self.discriminator = None
        if temperature_scale is not None:
            self.temperature_scale = temperature_scale
        if operation_statuses is not None:
            self.operation_statuses = operation_statuses
        if operation_modes is not None:
            self.operation_modes = operation_modes
        if fan_modes is not None:
            self.fan_modes = fan_modes
        if swing_modes is not None:
            self.swing_modes = swing_modes
        if week_days is not None:
            self.week_days = week_days
        if permissions is not None:
            self.permissions = permissions
        if resources is not None:
            self.resources = resources
        if roles is not None:
            self.roles = roles
        if unit_types is not None:
            self.unit_types = unit_types
        if hvac_brands is not None:
            self.hvac_brands = hvac_brands
        if device_types is not None:
            self.device_types = device_types

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


        :return: The temperature_scale of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataTemperatureScale
        """
        return self._temperature_scale

    @temperature_scale.setter
    def temperature_scale(self, temperature_scale):
        """Sets the temperature_scale of this TypesResponseData.


        :param temperature_scale: The temperature_scale of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataTemperatureScale
        """

        self._temperature_scale = temperature_scale

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


        :return: The operation_statuses of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataOperationStatuses
        """
        return self._operation_statuses

    @operation_statuses.setter
    def operation_statuses(self, operation_statuses):
        """Sets the operation_statuses of this TypesResponseData.


        :param operation_statuses: The operation_statuses of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataOperationStatuses
        """

        self._operation_statuses = operation_statuses

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


        :return: The operation_modes of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataOperationModes
        """
        return self._operation_modes

    @operation_modes.setter
    def operation_modes(self, operation_modes):
        """Sets the operation_modes of this TypesResponseData.


        :param operation_modes: The operation_modes of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataOperationModes
        """

        self._operation_modes = operation_modes

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


        :return: The fan_modes of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataFanModes
        """
        return self._fan_modes

    @fan_modes.setter
    def fan_modes(self, fan_modes):
        """Sets the fan_modes of this TypesResponseData.


        :param fan_modes: The fan_modes of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataFanModes
        """

        self._fan_modes = fan_modes

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


        :return: The swing_modes of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataSwingModes
        """
        return self._swing_modes

    @swing_modes.setter
    def swing_modes(self, swing_modes):
        """Sets the swing_modes of this TypesResponseData.


        :param swing_modes: The swing_modes of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataSwingModes
        """

        self._swing_modes = swing_modes

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


        :return: The week_days of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataWeekDays
        """
        return self._week_days

    @week_days.setter
    def week_days(self, week_days):
        """Sets the week_days of this TypesResponseData.


        :param week_days: The week_days of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataWeekDays
        """

        self._week_days = week_days

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


        :return: The permissions of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataPermissions
        """
        return self._permissions

    @permissions.setter
    def permissions(self, permissions):
        """Sets the permissions of this TypesResponseData.


        :param permissions: The permissions of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataPermissions
        """

        self._permissions = permissions

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


        :return: The resources of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataResources
        """
        return self._resources

    @resources.setter
    def resources(self, resources):
        """Sets the resources of this TypesResponseData.


        :param resources: The resources of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataResources
        """

        self._resources = resources

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


        :return: The roles of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataRoles
        """
        return self._roles

    @roles.setter
    def roles(self, roles):
        """Sets the roles of this TypesResponseData.


        :param roles: The roles of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataRoles
        """

        self._roles = roles

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


        :return: The unit_types of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataUnitTypes
        """
        return self._unit_types

    @unit_types.setter
    def unit_types(self, unit_types):
        """Sets the unit_types of this TypesResponseData.


        :param unit_types: The unit_types of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataUnitTypes
        """

        self._unit_types = unit_types

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


        :return: The hvac_brands of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataHvacBrands
        """
        return self._hvac_brands

    @hvac_brands.setter
    def hvac_brands(self, hvac_brands):
        """Sets the hvac_brands of this TypesResponseData.


        :param hvac_brands: The hvac_brands of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataHvacBrands
        """

        self._hvac_brands = hvac_brands

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


        :return: The device_types of this TypesResponseData.  # noqa: E501
        :rtype: TypesResponseDataDeviceTypes
        """
        return self._device_types

    @device_types.setter
    def device_types(self, device_types):
        """Sets the device_types of this TypesResponseData.


        :param device_types: The device_types of this TypesResponseData.  # noqa: E501
        :type: TypesResponseDataDeviceTypes
        """

        self._device_types = device_types

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

        return self.__dict__ == other.__dict__

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