# coding: utf-8

"""
    Dokumenty CITES

    API pro datový řadič dokumentů CITES ### Verze 1.0.0    - public   - developers  ### Verze 1.1.0    - admins   - additional   - statement   - attachments   - registration_cards   - permit   # noqa: E501

    OpenAPI spec version: 1.1.0
    Contact: info@sysnet.cz
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class ConditionsType(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 = {
        'certified': 'list[str]',
        'validity': 'list[str]',
        'valid_for_holder': 'bool',
        'conditions': 'str',
        'issuing_purpose': 'list[str]'
    }

    attribute_map = {
        'certified': 'certified',
        'validity': 'validity',
        'valid_for_holder': 'valid_for_holder',
        'conditions': 'conditions',
        'issuing_purpose': 'issuing_purpose'
    }

    def __init__(self, certified=None, validity=None, valid_for_holder=None, conditions=None, issuing_purpose=None):  # noqa: E501
        """ConditionsType - a model defined in Swagger"""  # noqa: E501
        self._certified = None
        self._validity = None
        self._valid_for_holder = None
        self._conditions = None
        self._issuing_purpose = None
        self.discriminator = None
        if certified is not None:
            self.certified = certified
        if validity is not None:
            self.validity = validity
        if valid_for_holder is not None:
            self.valid_for_holder = valid_for_holder
        if conditions is not None:
            self.conditions = conditions
        if issuing_purpose is not None:
            self.issuing_purpose = issuing_purpose

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

        Tímto se potvrzuje, že uvedené exempláře (podmínka 1 až 8)  # noqa: E501

        :return: The certified of this ConditionsType.  # noqa: E501
        :rtype: list[str]
        """
        return self._certified

    @certified.setter
    def certified(self, certified):
        """Sets the certified of this ConditionsType.

        Tímto se potvrzuje, že uvedené exempláře (podmínka 1 až 8)  # noqa: E501

        :param certified: The certified of this ConditionsType.  # noqa: E501
        :type: list[str]
        """
        allowed_values = ["1", "2", "3", "4", "5", "6", "7", "8", "", None]  # noqa: E501
        if not set(certified).issubset(set(allowed_values)):
            raise ValueError(
                "Invalid values for `certified` [{0}], must be a subset of [{1}]"  # noqa: E501
                .format(", ".join(map(str, set(certified) - set(allowed_values))),  # noqa: E501
                        ", ".join(map(str, allowed_values)))
            )

        self._certified = certified

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

        Zvláštní podmínky platnosti dokladu  # noqa: E501

        :return: The validity of this ConditionsType.  # noqa: E501
        :rtype: list[str]
        """
        return self._validity

    @validity.setter
    def validity(self, validity):
        """Sets the validity of this ConditionsType.

        Zvláštní podmínky platnosti dokladu  # noqa: E501

        :param validity: The validity of this ConditionsType.  # noqa: E501
        :type: list[str]
        """
        allowed_values = ["1", "2", "3", "4", "", None]  # noqa: E501
        if not set(validity).issubset(set(allowed_values)):
            raise ValueError(
                "Invalid values for `validity` [{0}], must be a subset of [{1}]"  # noqa: E501
                .format(", ".join(map(str, set(validity) - set(allowed_values))),  # noqa: E501
                        ", ".join(map(str, allowed_values)))
            )

        self._validity = validity

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

        Platí pouze pro držitele  # noqa: E501

        :return: The valid_for_holder of this ConditionsType.  # noqa: E501
        :rtype: bool
        """
        return self._valid_for_holder

    @valid_for_holder.setter
    def valid_for_holder(self, valid_for_holder):
        """Sets the valid_for_holder of this ConditionsType.

        Platí pouze pro držitele  # noqa: E501

        :param valid_for_holder: The valid_for_holder of this ConditionsType.  # noqa: E501
        :type: bool
        """

        self._valid_for_holder = valid_for_holder

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

        Zvláštní podmínky (permit)  # noqa: E501

        :return: The conditions of this ConditionsType.  # noqa: E501
        :rtype: str
        """
        return self._conditions

    @conditions.setter
    def conditions(self, conditions):
        """Sets the conditions of this ConditionsType.

        Zvláštní podmínky (permit)  # noqa: E501

        :param conditions: The conditions of this ConditionsType.  # noqa: E501
        :type: str
        """

        self._conditions = conditions

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

        Tento doklad je vydáván za účelem  # noqa: E501

        :return: The issuing_purpose of this ConditionsType.  # noqa: E501
        :rtype: list[str]
        """
        return self._issuing_purpose

    @issuing_purpose.setter
    def issuing_purpose(self, issuing_purpose):
        """Sets the issuing_purpose of this ConditionsType.

        Tento doklad je vydáván za účelem  # noqa: E501

        :param issuing_purpose: The issuing_purpose of this ConditionsType.  # noqa: E501
        :type: list[str]
        """
        allowed_values = ["1", "2", "3", "4", "5", "", None]  # noqa: E501
        if not set(issuing_purpose).issubset(set(allowed_values)):
            raise ValueError(
                "Invalid values for `issuing_purpose` [{0}], must be a subset of [{1}]"  # noqa: E501
                .format(", ".join(map(str, set(issuing_purpose) - set(allowed_values))),  # noqa: E501
                        ", ".join(map(str, allowed_values)))
            )

        self._issuing_purpose = issuing_purpose

    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(ConditionsType, 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, ConditionsType):
            return False

        return self.__dict__ == other.__dict__

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