# coding: utf-8

"""
    Cyclos 4.11.5 API

    The REST API for Cyclos 4.11.5  # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from swagger_client.configuration import Configuration


class BasicOperatorQueryFilters(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 = {
        'creation_period': 'list[datetime]',
        'statuses': 'list[UserStatusEnum]'
    }

    attribute_map = {
        'creation_period': 'creationPeriod',
        'statuses': 'statuses'
    }

    def __init__(self, creation_period=None, statuses=None, _configuration=None):  # noqa: E501
        """BasicOperatorQueryFilters - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._creation_period = None
        self._statuses = None
        self.discriminator = None

        if creation_period is not None:
            self.creation_period = creation_period
        if statuses is not None:
            self.statuses = statuses

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

        The minimum / maximum user creation date. Only taken into account if searching as administrator or managing broker. Is expressed an array, with the lower bound as first element, and the upper bound as second element. When only one element, will have just the lower bound. To specify only the upper bound, prefix the value with a comma.   # noqa: E501

        :return: The creation_period of this BasicOperatorQueryFilters.  # noqa: E501
        :rtype: list[datetime]
        """
        return self._creation_period

    @creation_period.setter
    def creation_period(self, creation_period):
        """Sets the creation_period of this BasicOperatorQueryFilters.

        The minimum / maximum user creation date. Only taken into account if searching as administrator or managing broker. Is expressed an array, with the lower bound as first element, and the upper bound as second element. When only one element, will have just the lower bound. To specify only the upper bound, prefix the value with a comma.   # noqa: E501

        :param creation_period: The creation_period of this BasicOperatorQueryFilters.  # noqa: E501
        :type: list[datetime]
        """

        self._creation_period = creation_period

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

        The possible statuses for an user Possibles values for each array element are: * active: The user is active and can use the system normally. * blocked: The user has been blocked from accessing the system. Other users still see him/her. * disabled: The user has been disabled - he/she cannot access the system and is invisible by other users. * pending: The user registration is pending a confirmation. Probably the user has received an e-mail with a link that must be followed to complete the activation. The user is invisible by other users. * purged: The user was permanently removed and had all his private data removed. Only transactions are kept for historical reasons. * removed: The user was permanently removed. It's profile is kept for historical purposes.   # noqa: E501

        :return: The statuses of this BasicOperatorQueryFilters.  # noqa: E501
        :rtype: list[UserStatusEnum]
        """
        return self._statuses

    @statuses.setter
    def statuses(self, statuses):
        """Sets the statuses of this BasicOperatorQueryFilters.

        The possible statuses for an user Possibles values for each array element are: * active: The user is active and can use the system normally. * blocked: The user has been blocked from accessing the system. Other users still see him/her. * disabled: The user has been disabled - he/she cannot access the system and is invisible by other users. * pending: The user registration is pending a confirmation. Probably the user has received an e-mail with a link that must be followed to complete the activation. The user is invisible by other users. * purged: The user was permanently removed and had all his private data removed. Only transactions are kept for historical reasons. * removed: The user was permanently removed. It's profile is kept for historical purposes.   # noqa: E501

        :param statuses: The statuses of this BasicOperatorQueryFilters.  # noqa: E501
        :type: list[UserStatusEnum]
        """

        self._statuses = statuses

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

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