# coding: utf-8

"""
    Welcome to the Atera API

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

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


import pprint
import re  # noqa: F401

import six

from atera_client.configuration import Configuration


class KnowledgeBaseQueryDTO(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 = {
        "kbid": "int",
        "kb_timestamp": "datetime",
        "kb_context": "str",
        "kb_product": "str",
        "kb_rating_yes": "int",
        "kb_rating_no": "int",
        "kb_rating_views": "int",
        "kb_last_modified": "datetime",
        "kb_is_private": "bool",
        "kb_status": "int",
        "kb_priority": "int",
        "kb_keywords": "str",
        "kb_address": "str",
    }

    attribute_map = {
        "kbid": "KBID",
        "kb_timestamp": "KBTimestamp",
        "kb_context": "KBContext",
        "kb_product": "KBProduct",
        "kb_rating_yes": "KBRating_Yes",
        "kb_rating_no": "KBRating_No",
        "kb_rating_views": "KBRating_Views",
        "kb_last_modified": "KBLastModified",
        "kb_is_private": "KBIsPrivate",
        "kb_status": "KBStatus",
        "kb_priority": "KBPriority",
        "kb_keywords": "KBKeywords",
        "kb_address": "KBAddress",
    }

    def __init__(
        self,
        kbid=None,
        kb_timestamp=None,
        kb_context=None,
        kb_product=None,
        kb_rating_yes=None,
        kb_rating_no=None,
        kb_rating_views=None,
        kb_last_modified=None,
        kb_is_private=None,
        kb_status=None,
        kb_priority=None,
        kb_keywords=None,
        kb_address=None,
        _configuration=None,
    ):  # noqa: E501
        """KnowledgeBaseQueryDTO - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._kbid = None
        self._kb_timestamp = None
        self._kb_context = None
        self._kb_product = None
        self._kb_rating_yes = None
        self._kb_rating_no = None
        self._kb_rating_views = None
        self._kb_last_modified = None
        self._kb_is_private = None
        self._kb_status = None
        self._kb_priority = None
        self._kb_keywords = None
        self._kb_address = None
        self.discriminator = None

        if kbid is not None:
            self.kbid = kbid
        if kb_timestamp is not None:
            self.kb_timestamp = kb_timestamp
        if kb_context is not None:
            self.kb_context = kb_context
        if kb_product is not None:
            self.kb_product = kb_product
        if kb_rating_yes is not None:
            self.kb_rating_yes = kb_rating_yes
        if kb_rating_no is not None:
            self.kb_rating_no = kb_rating_no
        if kb_rating_views is not None:
            self.kb_rating_views = kb_rating_views
        if kb_last_modified is not None:
            self.kb_last_modified = kb_last_modified
        if kb_is_private is not None:
            self.kb_is_private = kb_is_private
        if kb_status is not None:
            self.kb_status = kb_status
        if kb_priority is not None:
            self.kb_priority = kb_priority
        if kb_keywords is not None:
            self.kb_keywords = kb_keywords
        if kb_address is not None:
            self.kb_address = kb_address

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


        :return: The kbid of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: int
        """
        return self._kbid

    @kbid.setter
    def kbid(self, kbid):
        """Sets the kbid of this KnowledgeBaseQueryDTO.


        :param kbid: The kbid of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: int
        """

        self._kbid = kbid

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


        :return: The kb_timestamp of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: datetime
        """
        return self._kb_timestamp

    @kb_timestamp.setter
    def kb_timestamp(self, kb_timestamp):
        """Sets the kb_timestamp of this KnowledgeBaseQueryDTO.


        :param kb_timestamp: The kb_timestamp of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: datetime
        """

        self._kb_timestamp = kb_timestamp

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


        :return: The kb_context of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: str
        """
        return self._kb_context

    @kb_context.setter
    def kb_context(self, kb_context):
        """Sets the kb_context of this KnowledgeBaseQueryDTO.


        :param kb_context: The kb_context of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: str
        """

        self._kb_context = kb_context

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


        :return: The kb_product of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: str
        """
        return self._kb_product

    @kb_product.setter
    def kb_product(self, kb_product):
        """Sets the kb_product of this KnowledgeBaseQueryDTO.


        :param kb_product: The kb_product of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: str
        """

        self._kb_product = kb_product

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


        :return: The kb_rating_yes of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: int
        """
        return self._kb_rating_yes

    @kb_rating_yes.setter
    def kb_rating_yes(self, kb_rating_yes):
        """Sets the kb_rating_yes of this KnowledgeBaseQueryDTO.


        :param kb_rating_yes: The kb_rating_yes of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: int
        """

        self._kb_rating_yes = kb_rating_yes

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


        :return: The kb_rating_no of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: int
        """
        return self._kb_rating_no

    @kb_rating_no.setter
    def kb_rating_no(self, kb_rating_no):
        """Sets the kb_rating_no of this KnowledgeBaseQueryDTO.


        :param kb_rating_no: The kb_rating_no of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: int
        """

        self._kb_rating_no = kb_rating_no

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


        :return: The kb_rating_views of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: int
        """
        return self._kb_rating_views

    @kb_rating_views.setter
    def kb_rating_views(self, kb_rating_views):
        """Sets the kb_rating_views of this KnowledgeBaseQueryDTO.


        :param kb_rating_views: The kb_rating_views of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: int
        """

        self._kb_rating_views = kb_rating_views

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


        :return: The kb_last_modified of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: datetime
        """
        return self._kb_last_modified

    @kb_last_modified.setter
    def kb_last_modified(self, kb_last_modified):
        """Sets the kb_last_modified of this KnowledgeBaseQueryDTO.


        :param kb_last_modified: The kb_last_modified of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: datetime
        """

        self._kb_last_modified = kb_last_modified

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


        :return: The kb_is_private of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: bool
        """
        return self._kb_is_private

    @kb_is_private.setter
    def kb_is_private(self, kb_is_private):
        """Sets the kb_is_private of this KnowledgeBaseQueryDTO.


        :param kb_is_private: The kb_is_private of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: bool
        """

        self._kb_is_private = kb_is_private

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


        :return: The kb_status of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: int
        """
        return self._kb_status

    @kb_status.setter
    def kb_status(self, kb_status):
        """Sets the kb_status of this KnowledgeBaseQueryDTO.


        :param kb_status: The kb_status of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: int
        """

        self._kb_status = kb_status

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


        :return: The kb_priority of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: int
        """
        return self._kb_priority

    @kb_priority.setter
    def kb_priority(self, kb_priority):
        """Sets the kb_priority of this KnowledgeBaseQueryDTO.


        :param kb_priority: The kb_priority of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: int
        """

        self._kb_priority = kb_priority

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


        :return: The kb_keywords of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: str
        """
        return self._kb_keywords

    @kb_keywords.setter
    def kb_keywords(self, kb_keywords):
        """Sets the kb_keywords of this KnowledgeBaseQueryDTO.


        :param kb_keywords: The kb_keywords of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: str
        """

        self._kb_keywords = kb_keywords

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


        :return: The kb_address of this KnowledgeBaseQueryDTO.  # noqa: E501
        :rtype: str
        """
        return self._kb_address

    @kb_address.setter
    def kb_address(self, kb_address):
        """Sets the kb_address of this KnowledgeBaseQueryDTO.


        :param kb_address: The kb_address of this KnowledgeBaseQueryDTO.  # noqa: E501
        :type: str
        """

        self._kb_address = kb_address

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

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