# coding: utf-8

"""
    Component Database API

    The API that provides access to Component Database data.  # noqa: E501

    The version of the OpenAPI document: 3.15.4
    Contact: djarosz@anl.gov
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from cdbApi.configuration import Configuration


class SearchEntitiesOptions(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'search_text': 'str',
        'include_catalog': 'bool',
        'include_inventory': 'bool',
        'include_cable_catalog': 'bool',
        'include_cable_inventory': 'bool',
        'include_cable_design': 'bool',
        'include_machine_design': 'bool',
        'include_item_location': 'bool',
        'include_maarc': 'bool',
        'include_item_element': 'bool',
        'include_item_type': 'bool',
        'include_item_categoy': 'bool',
        'include_property_type': 'bool',
        'include_property_type_category': 'bool',
        'include_source': 'bool',
        'include_user': 'bool',
        'include_user_group': 'bool'
    }

    attribute_map = {
        'search_text': 'searchText',
        'include_catalog': 'includeCatalog',
        'include_inventory': 'includeInventory',
        'include_cable_catalog': 'includeCableCatalog',
        'include_cable_inventory': 'includeCableInventory',
        'include_cable_design': 'includeCableDesign',
        'include_machine_design': 'includeMachineDesign',
        'include_item_location': 'includeItemLocation',
        'include_maarc': 'includeMAARC',
        'include_item_element': 'includeItemElement',
        'include_item_type': 'includeItemType',
        'include_item_categoy': 'includeItemCategoy',
        'include_property_type': 'includePropertyType',
        'include_property_type_category': 'includePropertyTypeCategory',
        'include_source': 'includeSource',
        'include_user': 'includeUser',
        'include_user_group': 'includeUserGroup'
    }

    def __init__(self, search_text=None, include_catalog=None, include_inventory=None, include_cable_catalog=None, include_cable_inventory=None, include_cable_design=None, include_machine_design=None, include_item_location=None, include_maarc=None, include_item_element=None, include_item_type=None, include_item_categoy=None, include_property_type=None, include_property_type_category=None, include_source=None, include_user=None, include_user_group=None, local_vars_configuration=None):  # noqa: E501
        """SearchEntitiesOptions - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._search_text = None
        self._include_catalog = None
        self._include_inventory = None
        self._include_cable_catalog = None
        self._include_cable_inventory = None
        self._include_cable_design = None
        self._include_machine_design = None
        self._include_item_location = None
        self._include_maarc = None
        self._include_item_element = None
        self._include_item_type = None
        self._include_item_categoy = None
        self._include_property_type = None
        self._include_property_type_category = None
        self._include_source = None
        self._include_user = None
        self._include_user_group = None
        self.discriminator = None

        if search_text is not None:
            self.search_text = search_text
        if include_catalog is not None:
            self.include_catalog = include_catalog
        if include_inventory is not None:
            self.include_inventory = include_inventory
        if include_cable_catalog is not None:
            self.include_cable_catalog = include_cable_catalog
        if include_cable_inventory is not None:
            self.include_cable_inventory = include_cable_inventory
        if include_cable_design is not None:
            self.include_cable_design = include_cable_design
        if include_machine_design is not None:
            self.include_machine_design = include_machine_design
        if include_item_location is not None:
            self.include_item_location = include_item_location
        if include_maarc is not None:
            self.include_maarc = include_maarc
        if include_item_element is not None:
            self.include_item_element = include_item_element
        if include_item_type is not None:
            self.include_item_type = include_item_type
        if include_item_categoy is not None:
            self.include_item_categoy = include_item_categoy
        if include_property_type is not None:
            self.include_property_type = include_property_type
        if include_property_type_category is not None:
            self.include_property_type_category = include_property_type_category
        if include_source is not None:
            self.include_source = include_source
        if include_user is not None:
            self.include_user = include_user
        if include_user_group is not None:
            self.include_user_group = include_user_group

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


        :return: The search_text of this SearchEntitiesOptions.  # noqa: E501
        :rtype: str
        """
        return self._search_text

    @search_text.setter
    def search_text(self, search_text):
        """Sets the search_text of this SearchEntitiesOptions.


        :param search_text: The search_text of this SearchEntitiesOptions.  # noqa: E501
        :type: str
        """

        self._search_text = search_text

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


        :return: The include_catalog of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_catalog

    @include_catalog.setter
    def include_catalog(self, include_catalog):
        """Sets the include_catalog of this SearchEntitiesOptions.


        :param include_catalog: The include_catalog of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_catalog = include_catalog

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


        :return: The include_inventory of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_inventory

    @include_inventory.setter
    def include_inventory(self, include_inventory):
        """Sets the include_inventory of this SearchEntitiesOptions.


        :param include_inventory: The include_inventory of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_inventory = include_inventory

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


        :return: The include_cable_catalog of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_cable_catalog

    @include_cable_catalog.setter
    def include_cable_catalog(self, include_cable_catalog):
        """Sets the include_cable_catalog of this SearchEntitiesOptions.


        :param include_cable_catalog: The include_cable_catalog of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_cable_catalog = include_cable_catalog

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


        :return: The include_cable_inventory of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_cable_inventory

    @include_cable_inventory.setter
    def include_cable_inventory(self, include_cable_inventory):
        """Sets the include_cable_inventory of this SearchEntitiesOptions.


        :param include_cable_inventory: The include_cable_inventory of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_cable_inventory = include_cable_inventory

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


        :return: The include_cable_design of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_cable_design

    @include_cable_design.setter
    def include_cable_design(self, include_cable_design):
        """Sets the include_cable_design of this SearchEntitiesOptions.


        :param include_cable_design: The include_cable_design of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_cable_design = include_cable_design

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


        :return: The include_machine_design of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_machine_design

    @include_machine_design.setter
    def include_machine_design(self, include_machine_design):
        """Sets the include_machine_design of this SearchEntitiesOptions.


        :param include_machine_design: The include_machine_design of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_machine_design = include_machine_design

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


        :return: The include_item_location of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_item_location

    @include_item_location.setter
    def include_item_location(self, include_item_location):
        """Sets the include_item_location of this SearchEntitiesOptions.


        :param include_item_location: The include_item_location of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_item_location = include_item_location

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


        :return: The include_maarc of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_maarc

    @include_maarc.setter
    def include_maarc(self, include_maarc):
        """Sets the include_maarc of this SearchEntitiesOptions.


        :param include_maarc: The include_maarc of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_maarc = include_maarc

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


        :return: The include_item_element of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_item_element

    @include_item_element.setter
    def include_item_element(self, include_item_element):
        """Sets the include_item_element of this SearchEntitiesOptions.


        :param include_item_element: The include_item_element of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_item_element = include_item_element

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


        :return: The include_item_type of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_item_type

    @include_item_type.setter
    def include_item_type(self, include_item_type):
        """Sets the include_item_type of this SearchEntitiesOptions.


        :param include_item_type: The include_item_type of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_item_type = include_item_type

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


        :return: The include_item_categoy of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_item_categoy

    @include_item_categoy.setter
    def include_item_categoy(self, include_item_categoy):
        """Sets the include_item_categoy of this SearchEntitiesOptions.


        :param include_item_categoy: The include_item_categoy of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_item_categoy = include_item_categoy

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


        :return: The include_property_type of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_property_type

    @include_property_type.setter
    def include_property_type(self, include_property_type):
        """Sets the include_property_type of this SearchEntitiesOptions.


        :param include_property_type: The include_property_type of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_property_type = include_property_type

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


        :return: The include_property_type_category of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_property_type_category

    @include_property_type_category.setter
    def include_property_type_category(self, include_property_type_category):
        """Sets the include_property_type_category of this SearchEntitiesOptions.


        :param include_property_type_category: The include_property_type_category of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_property_type_category = include_property_type_category

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


        :return: The include_source of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_source

    @include_source.setter
    def include_source(self, include_source):
        """Sets the include_source of this SearchEntitiesOptions.


        :param include_source: The include_source of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_source = include_source

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


        :return: The include_user of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_user

    @include_user.setter
    def include_user(self, include_user):
        """Sets the include_user of this SearchEntitiesOptions.


        :param include_user: The include_user of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_user = include_user

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


        :return: The include_user_group of this SearchEntitiesOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_user_group

    @include_user_group.setter
    def include_user_group(self, include_user_group):
        """Sets the include_user_group of this SearchEntitiesOptions.


        :param include_user_group: The include_user_group of this SearchEntitiesOptions.  # noqa: E501
        :type: bool
        """

        self._include_user_group = include_user_group

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

        for attr, _ in six.iteritems(self.openapi_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

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

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