# coding: utf-8

"""
    search-api

    These APIs helps to search and suggest based on keyword among available jobs.  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: phenom
"""

import pprint
import re  # noqa: F401

import six

class JobSearchRequest(object):
    """
    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 = {
        'keywords': 'str',
        '_from': 'int',
        'size': 'int',
        'boolean_operator': 'str',
        'locale': 'str',
        'site_type': 'str',
        'user_type': 'str',
        'order_by': 'str',
        'facets': 'JobSearchRequestFacets',
        'ip': 'str',
        'location_data': 'LocationData'
    }

    attribute_map = {
        'keywords': 'keywords',
        '_from': 'from',
        'size': 'size',
        'boolean_operator': 'booleanOperator',
        'locale': 'locale',
        'site_type': 'siteType',
        'user_type': 'userType',
        'order_by': 'orderBy',
        'facets': 'facets',
        'ip': 'ip',
        'location_data': 'locationData'
    }

    def __init__(self, keywords=None, _from=None, size=None, boolean_operator=None, locale=None, site_type=None, user_type=None, order_by=None, facets=None, ip=None, location_data=None):  # noqa: E501
        """JobSearchRequest - a model defined in Swagger"""  # noqa: E501
        self._keywords = None
        self.__from = None
        self._size = None
        self._boolean_operator = None
        self._locale = None
        self._site_type = None
        self._user_type = None
        self._order_by = None
        self._facets = None
        self._ip = None
        self._location_data = None
        self.discriminator = None
        if keywords is not None:
            self.keywords = keywords
        if _from is not None:
            self._from = _from
        if size is not None:
            self.size = size
        if boolean_operator is not None:
            self.boolean_operator = boolean_operator
        if locale is not None:
            self.locale = locale
        if site_type is not None:
            self.site_type = site_type
        if user_type is not None:
            self.user_type = user_type
        if order_by is not None:
            self.order_by = order_by
        if facets is not None:
            self.facets = facets
        if ip is not None:
            self.ip = ip
        if location_data is not None:
            self.location_data = location_data

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

        Keyword to search.  # noqa: E501

        :return: The keywords of this JobSearchRequest.  # noqa: E501
        :rtype: str
        """
        return self._keywords

    @keywords.setter
    def keywords(self, keywords):
        """Sets the keywords of this JobSearchRequest.

        Keyword to search.  # noqa: E501

        :param keywords: The keywords of this JobSearchRequest.  # noqa: E501
        :type: str
        """

        self._keywords = keywords

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

        Starting point from which the data should be retrieved.  # noqa: E501

        :return: The _from of this JobSearchRequest.  # noqa: E501
        :rtype: int
        """
        return self.__from

    @_from.setter
    def _from(self, _from):
        """Sets the _from of this JobSearchRequest.

        Starting point from which the data should be retrieved.  # noqa: E501

        :param _from: The _from of this JobSearchRequest.  # noqa: E501
        :type: int
        """

        self.__from = _from

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

        Size of the response.  # noqa: E501

        :return: The size of this JobSearchRequest.  # noqa: E501
        :rtype: int
        """
        return self._size

    @size.setter
    def size(self, size):
        """Sets the size of this JobSearchRequest.

        Size of the response.  # noqa: E501

        :param size: The size of this JobSearchRequest.  # noqa: E501
        :type: int
        """

        self._size = size

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

        Search operator accepts \"and\" / \"or\".  # noqa: E501

        :return: The boolean_operator of this JobSearchRequest.  # noqa: E501
        :rtype: str
        """
        return self._boolean_operator

    @boolean_operator.setter
    def boolean_operator(self, boolean_operator):
        """Sets the boolean_operator of this JobSearchRequest.

        Search operator accepts \"and\" / \"or\".  # noqa: E501

        :param boolean_operator: The boolean_operator of this JobSearchRequest.  # noqa: E501
        :type: str
        """

        self._boolean_operator = boolean_operator

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

        Locale of the site (Language_Country) - Example: en_US.  # noqa: E501

        :return: The locale of this JobSearchRequest.  # noqa: E501
        :rtype: str
        """
        return self._locale

    @locale.setter
    def locale(self, locale):
        """Sets the locale of this JobSearchRequest.

        Locale of the site (Language_Country) - Example: en_US.  # noqa: E501

        :param locale: The locale of this JobSearchRequest.  # noqa: E501
        :type: str
        """

        self._locale = locale

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

        Persona Value - Example: Internal, External.  # noqa: E501

        :return: The site_type of this JobSearchRequest.  # noqa: E501
        :rtype: str
        """
        return self._site_type

    @site_type.setter
    def site_type(self, site_type):
        """Sets the site_type of this JobSearchRequest.

        Persona Value - Example: Internal, External.  # noqa: E501

        :param site_type: The site_type of this JobSearchRequest.  # noqa: E501
        :type: str
        """

        self._site_type = site_type

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

        Type of the user - Internal or External User.  # noqa: E501

        :return: The user_type of this JobSearchRequest.  # noqa: E501
        :rtype: str
        """
        return self._user_type

    @user_type.setter
    def user_type(self, user_type):
        """Sets the user_type of this JobSearchRequest.

        Type of the user - Internal or External User.  # noqa: E501

        :param user_type: The user_type of this JobSearchRequest.  # noqa: E501
        :type: str
        """

        self._user_type = user_type

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

        Resultant order of jobs.  # noqa: E501

        :return: The order_by of this JobSearchRequest.  # noqa: E501
        :rtype: str
        """
        return self._order_by

    @order_by.setter
    def order_by(self, order_by):
        """Sets the order_by of this JobSearchRequest.

        Resultant order of jobs.  # noqa: E501

        :param order_by: The order_by of this JobSearchRequest.  # noqa: E501
        :type: str
        """

        self._order_by = order_by

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


        :return: The facets of this JobSearchRequest.  # noqa: E501
        :rtype: JobSearchRequestFacets
        """
        return self._facets

    @facets.setter
    def facets(self, facets):
        """Sets the facets of this JobSearchRequest.


        :param facets: The facets of this JobSearchRequest.  # noqa: E501
        :type: JobSearchRequestFacets
        """

        self._facets = facets

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

        User IP Address.  # noqa: E501

        :return: The ip of this JobSearchRequest.  # noqa: E501
        :rtype: str
        """
        return self._ip

    @ip.setter
    def ip(self, ip):
        """Sets the ip of this JobSearchRequest.

        User IP Address.  # noqa: E501

        :param ip: The ip of this JobSearchRequest.  # noqa: E501
        :type: str
        """

        self._ip = ip

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


        :return: The location_data of this JobSearchRequest.  # noqa: E501
        :rtype: LocationData
        """
        return self._location_data

    @location_data.setter
    def location_data(self, location_data):
        """Sets the location_data of this JobSearchRequest.


        :param location_data: The location_data of this JobSearchRequest.  # noqa: E501
        :type: LocationData
        """

        self._location_data = location_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(JobSearchRequest, 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, JobSearchRequest):
            return False

        return self.__dict__ == other.__dict__

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