# 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 DataForAccountHistory(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 = {
        'account': 'AccountWithCurrency',
        'transaction_number_mask': 'str',
        'can_filter_by_direction': 'bool',
        'show_description_in_filters': 'bool',
        'show_description_in_list': 'bool',
        'custom_fields_in_search': 'list[CustomFieldDetailed]',
        'custom_fields_in_list': 'list[CustomField]',
        'query': 'AccountHistoryQueryFilters'
    }

    attribute_map = {
        'account': 'account',
        'transaction_number_mask': 'transactionNumberMask',
        'can_filter_by_direction': 'canFilterByDirection',
        'show_description_in_filters': 'showDescriptionInFilters',
        'show_description_in_list': 'showDescriptionInList',
        'custom_fields_in_search': 'customFieldsInSearch',
        'custom_fields_in_list': 'customFieldsInList',
        'query': 'query'
    }

    def __init__(self, account=None, transaction_number_mask=None, can_filter_by_direction=None, show_description_in_filters=None, show_description_in_list=None, custom_fields_in_search=None, custom_fields_in_list=None, query=None, _configuration=None):  # noqa: E501
        """DataForAccountHistory - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._account = None
        self._transaction_number_mask = None
        self._can_filter_by_direction = None
        self._show_description_in_filters = None
        self._show_description_in_list = None
        self._custom_fields_in_search = None
        self._custom_fields_in_list = None
        self._query = None
        self.discriminator = None

        if account is not None:
            self.account = account
        if transaction_number_mask is not None:
            self.transaction_number_mask = transaction_number_mask
        if can_filter_by_direction is not None:
            self.can_filter_by_direction = can_filter_by_direction
        if show_description_in_filters is not None:
            self.show_description_in_filters = show_description_in_filters
        if show_description_in_list is not None:
            self.show_description_in_list = show_description_in_list
        if custom_fields_in_search is not None:
            self.custom_fields_in_search = custom_fields_in_search
        if custom_fields_in_list is not None:
            self.custom_fields_in_list = custom_fields_in_list
        if query is not None:
            self.query = query

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

        Information about this specific account  # noqa: E501

        :return: The account of this DataForAccountHistory.  # noqa: E501
        :rtype: AccountWithCurrency
        """
        return self._account

    @account.setter
    def account(self, account):
        """Sets the account of this DataForAccountHistory.

        Information about this specific account  # noqa: E501

        :param account: The account of this DataForAccountHistory.  # noqa: E501
        :type: AccountWithCurrency
        """

        self._account = account

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

        If a transaction number is used for this account, is a pattern that represent it.   # noqa: E501

        :return: The transaction_number_mask of this DataForAccountHistory.  # noqa: E501
        :rtype: str
        """
        return self._transaction_number_mask

    @transaction_number_mask.setter
    def transaction_number_mask(self, transaction_number_mask):
        """Sets the transaction_number_mask of this DataForAccountHistory.

        If a transaction number is used for this account, is a pattern that represent it.   # noqa: E501

        :param transaction_number_mask: The transaction_number_mask of this DataForAccountHistory.  # noqa: E501
        :type: str
        """

        self._transaction_number_mask = transaction_number_mask

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

        Whether the current user can use the direction filter by direction. In some cases, such as restricted operators that can only see incoming or outgoing payments, this flag will be `false`.   # noqa: E501

        :return: The can_filter_by_direction of this DataForAccountHistory.  # noqa: E501
        :rtype: bool
        """
        return self._can_filter_by_direction

    @can_filter_by_direction.setter
    def can_filter_by_direction(self, can_filter_by_direction):
        """Sets the can_filter_by_direction of this DataForAccountHistory.

        Whether the current user can use the direction filter by direction. In some cases, such as restricted operators that can only see incoming or outgoing payments, this flag will be `false`.   # noqa: E501

        :param can_filter_by_direction: The can_filter_by_direction of this DataForAccountHistory.  # noqa: E501
        :type: bool
        """

        self._can_filter_by_direction = can_filter_by_direction

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

        Whether to show the description as filter or not  # noqa: E501

        :return: The show_description_in_filters of this DataForAccountHistory.  # noqa: E501
        :rtype: bool
        """
        return self._show_description_in_filters

    @show_description_in_filters.setter
    def show_description_in_filters(self, show_description_in_filters):
        """Sets the show_description_in_filters of this DataForAccountHistory.

        Whether to show the description as filter or not  # noqa: E501

        :param show_description_in_filters: The show_description_in_filters of this DataForAccountHistory.  # noqa: E501
        :type: bool
        """

        self._show_description_in_filters = show_description_in_filters

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

        Whether to show the description in the result list or not  # noqa: E501

        :return: The show_description_in_list of this DataForAccountHistory.  # noqa: E501
        :rtype: bool
        """
        return self._show_description_in_list

    @show_description_in_list.setter
    def show_description_in_list(self, show_description_in_list):
        """Sets the show_description_in_list of this DataForAccountHistory.

        Whether to show the description in the result list or not  # noqa: E501

        :param show_description_in_list: The show_description_in_list of this DataForAccountHistory.  # noqa: E501
        :type: bool
        """

        self._show_description_in_list = show_description_in_list

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

        Detailed references for custom fields that are set to be used as search filters    # noqa: E501

        :return: The custom_fields_in_search of this DataForAccountHistory.  # noqa: E501
        :rtype: list[CustomFieldDetailed]
        """
        return self._custom_fields_in_search

    @custom_fields_in_search.setter
    def custom_fields_in_search(self, custom_fields_in_search):
        """Sets the custom_fields_in_search of this DataForAccountHistory.

        Detailed references for custom fields that are set to be used as search filters    # noqa: E501

        :param custom_fields_in_search: The custom_fields_in_search of this DataForAccountHistory.  # noqa: E501
        :type: list[CustomFieldDetailed]
        """

        self._custom_fields_in_search = custom_fields_in_search

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

        Simple references for custom fields that are set to be used on the search result list    # noqa: E501

        :return: The custom_fields_in_list of this DataForAccountHistory.  # noqa: E501
        :rtype: list[CustomField]
        """
        return self._custom_fields_in_list

    @custom_fields_in_list.setter
    def custom_fields_in_list(self, custom_fields_in_list):
        """Sets the custom_fields_in_list of this DataForAccountHistory.

        Simple references for custom fields that are set to be used on the search result list    # noqa: E501

        :param custom_fields_in_list: The custom_fields_in_list of this DataForAccountHistory.  # noqa: E501
        :type: list[CustomField]
        """

        self._custom_fields_in_list = custom_fields_in_list

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

        Default query filters for the account history   # noqa: E501

        :return: The query of this DataForAccountHistory.  # noqa: E501
        :rtype: AccountHistoryQueryFilters
        """
        return self._query

    @query.setter
    def query(self, query):
        """Sets the query of this DataForAccountHistory.

        Default query filters for the account history   # noqa: E501

        :param query: The query of this DataForAccountHistory.  # noqa: E501
        :type: AccountHistoryQueryFilters
        """

        self._query = query

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

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