# 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 CitesDocumentRegistrationCardType(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 = {
        'doc_code': 'str',
        'applicant': 'PersonExtendedType',
        'applicant_agent': 'PersonExtendedType',
        'exception_114': 'str',
        'exception_23': 'str',
        'exception_338': 'str',
        'owner_change': 'bool',
        'destination': 'str',
        'transport_out': 'TransportType',
        'transport_in': 'TransportType',
        'confirmer': 'str',
        'additional': 'str',
        'delivery': 'str',
        'delivery_address': 'str',
        'note': 'str',
        'issuing': 'IssuingType',
        'metadata': 'MetadataType',
        'attachments': 'CitesDocumentAttachmentListType',
        'linked_list': 'LinkedListType'
    }

    attribute_map = {
        'doc_code': 'doc_code',
        'applicant': 'applicant',
        'applicant_agent': 'applicant_agent',
        'exception_114': 'exception_114',
        'exception_23': 'exception_23',
        'exception_338': 'exception_338',
        'owner_change': 'owner_change',
        'destination': 'destination',
        'transport_out': 'transport_out',
        'transport_in': 'transport_in',
        'confirmer': 'confirmer',
        'additional': 'additional',
        'delivery': 'delivery',
        'delivery_address': 'delivery_address',
        'note': 'note',
        'issuing': 'issuing',
        'metadata': 'metadata',
        'attachments': 'attachments',
        'linked_list': 'linked_list'
    }

    def __init__(self, doc_code=None, applicant=None, applicant_agent=None, exception_114=None, exception_23=None, exception_338=None, owner_change=None, destination=None, transport_out=None, transport_in=None, confirmer=None, additional=None, delivery=None, delivery_address=None, note=None, issuing=None, metadata=None, attachments=None, linked_list=None):  # noqa: E501
        """CitesDocumentRegistrationCardType - a model defined in Swagger"""  # noqa: E501
        self._doc_code = None
        self._applicant = None
        self._applicant_agent = None
        self._exception_114 = None
        self._exception_23 = None
        self._exception_338 = None
        self._owner_change = None
        self._destination = None
        self._transport_out = None
        self._transport_in = None
        self._confirmer = None
        self._additional = None
        self._delivery = None
        self._delivery_address = None
        self._note = None
        self._issuing = None
        self._metadata = None
        self._attachments = None
        self._linked_list = None
        self.discriminator = None
        self.doc_code = doc_code
        if applicant is not None:
            self.applicant = applicant
        if applicant_agent is not None:
            self.applicant_agent = applicant_agent
        if exception_114 is not None:
            self.exception_114 = exception_114
        if exception_23 is not None:
            self.exception_23 = exception_23
        if exception_338 is not None:
            self.exception_338 = exception_338
        if owner_change is not None:
            self.owner_change = owner_change
        if destination is not None:
            self.destination = destination
        if transport_out is not None:
            self.transport_out = transport_out
        if transport_in is not None:
            self.transport_in = transport_in
        if confirmer is not None:
            self.confirmer = confirmer
        if additional is not None:
            self.additional = additional
        if delivery is not None:
            self.delivery = delivery
        if delivery_address is not None:
            self.delivery_address = delivery_address
        if note is not None:
            self.note = note
        if issuing is not None:
            self.issuing = issuing
        self.metadata = metadata
        if attachments is not None:
            self.attachments = attachments
        if linked_list is not None:
            self.linked_list = linked_list

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

        Kód dokumentu z číselníku - vazba na formuláře PDF  # noqa: E501

        :return: The doc_code of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._doc_code

    @doc_code.setter
    def doc_code(self, doc_code):
        """Sets the doc_code of this CitesDocumentRegistrationCardType.

        Kód dokumentu z číselníku - vazba na formuláře PDF  # noqa: E501

        :param doc_code: The doc_code of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """
        if doc_code is None:
            raise ValueError("Invalid value for `doc_code`, must not be `None`")  # noqa: E501

        self._doc_code = doc_code

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


        :return: The applicant of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: PersonExtendedType
        """
        return self._applicant

    @applicant.setter
    def applicant(self, applicant):
        """Sets the applicant of this CitesDocumentRegistrationCardType.


        :param applicant: The applicant of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: PersonExtendedType
        """

        self._applicant = applicant

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


        :return: The applicant_agent of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: PersonExtendedType
        """
        return self._applicant_agent

    @applicant_agent.setter
    def applicant_agent(self, applicant_agent):
        """Sets the applicant_agent of this CitesDocumentRegistrationCardType.


        :param applicant_agent: The applicant_agent of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: PersonExtendedType
        """

        self._applicant_agent = applicant_agent

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

        Týká-li se žádost jedinců zvláště chráněných živočichů nebo rostlin podle zákona č. 114/1992 Sb., o ochraně přírody a krajiny, přiložte kopii udělené výjimky, případně uveďte, že výjimka nebyla udělena a proč   # noqa: E501

        :return: The exception_114 of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._exception_114

    @exception_114.setter
    def exception_114(self, exception_114):
        """Sets the exception_114 of this CitesDocumentRegistrationCardType.

        Týká-li se žádost jedinců zvláště chráněných živočichů nebo rostlin podle zákona č. 114/1992 Sb., o ochraně přírody a krajiny, přiložte kopii udělené výjimky, případně uveďte, že výjimka nebyla udělena a proč   # noqa: E501

        :param exception_114: The exception_114 of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """

        self._exception_114 = exception_114

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

        Týká-li se žádost jedinců zvláště chráněných živočichů nebo rostlin podle zákona č. 114/1992 Sb., o ochraně přírody a krajiny, přiložte kopii udělené výjimky, případně uveďte, že výjimka nebyla udělena a proč   # noqa: E501

        :return: The exception_23 of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._exception_23

    @exception_23.setter
    def exception_23(self, exception_23):
        """Sets the exception_23 of this CitesDocumentRegistrationCardType.

        Týká-li se žádost jedinců zvláště chráněných živočichů nebo rostlin podle zákona č. 114/1992 Sb., o ochraně přírody a krajiny, přiložte kopii udělené výjimky, případně uveďte, že výjimka nebyla udělena a proč   # noqa: E501

        :param exception_23: The exception_23 of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """

        self._exception_23 = exception_23

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

        Týká-li se žádost exemplářů, pro které bylo vydáno potvrzení o výjimce ze zákazu obchodních činností podle článku 8 odst. 3 nařízení Rady (ES) č. 338/97, přiložte toto potvrzení nebo jeho kopii, případně uveďte, že potvrzení nebylo vydáno a proč   # noqa: E501

        :return: The exception_338 of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._exception_338

    @exception_338.setter
    def exception_338(self, exception_338):
        """Sets the exception_338 of this CitesDocumentRegistrationCardType.

        Týká-li se žádost exemplářů, pro které bylo vydáno potvrzení o výjimce ze zákazu obchodních činností podle článku 8 odst. 3 nařízení Rady (ES) č. 338/97, přiložte toto potvrzení nebo jeho kopii, případně uveďte, že potvrzení nebylo vydáno a proč   # noqa: E501

        :param exception_338: The exception_338 of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """

        self._exception_338 = exception_338

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

        Znamená plánovaný vývoz, zpětný vývoz, dovoz nebo přemístění exempláře změnu majitele exempláře?   # noqa: E501

        :return: The owner_change of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: bool
        """
        return self._owner_change

    @owner_change.setter
    def owner_change(self, owner_change):
        """Sets the owner_change of this CitesDocumentRegistrationCardType.

        Znamená plánovaný vývoz, zpětný vývoz, dovoz nebo přemístění exempláře změnu majitele exempláře?   # noqa: E501

        :param owner_change: The owner_change of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: bool
        """

        self._owner_change = owner_change

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

        Pro případ žádosti o povolení přemístění exempláře v rámci ČR nebo EU, uveďte podrobnosti a zdůvodnění pro nové místo určení exempláře   # noqa: E501

        :return: The destination of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._destination

    @destination.setter
    def destination(self, destination):
        """Sets the destination of this CitesDocumentRegistrationCardType.

        Pro případ žádosti o povolení přemístění exempláře v rámci ČR nebo EU, uveďte podrobnosti a zdůvodnění pro nové místo určení exempláře   # noqa: E501

        :param destination: The destination of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """

        self._destination = destination

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


        :return: The transport_out of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: TransportType
        """
        return self._transport_out

    @transport_out.setter
    def transport_out(self, transport_out):
        """Sets the transport_out of this CitesDocumentRegistrationCardType.


        :param transport_out: The transport_out of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: TransportType
        """

        self._transport_out = transport_out

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


        :return: The transport_in of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: TransportType
        """
        return self._transport_in

    @transport_in.setter
    def transport_in(self, transport_in):
        """Sets the transport_in of this CitesDocumentRegistrationCardType.


        :param transport_in: The transport_in of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: TransportType
        """

        self._transport_in = transport_in

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

        Osoby nebo organizace, které mohou potvrdit Vámi uvedené údaje. Např. úřad, kde jste registrován, zájmová organizace, obchodní organizace, které dodáváte své produkty, apod. Uveďte adresu, telefon, fax, e-mail apod.   # noqa: E501

        :return: The confirmer of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._confirmer

    @confirmer.setter
    def confirmer(self, confirmer):
        """Sets the confirmer of this CitesDocumentRegistrationCardType.

        Osoby nebo organizace, které mohou potvrdit Vámi uvedené údaje. Např. úřad, kde jste registrován, zájmová organizace, obchodní organizace, které dodáváte své produkty, apod. Uveďte adresu, telefon, fax, e-mail apod.   # noqa: E501

        :param confirmer: The confirmer of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """

        self._confirmer = confirmer

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

        K žádosti a této evidenční kartě jsou připojeny následující dokumenty. (Zřetelně označte doklady, které chcete po vyřízení vrátit zpět.)   # noqa: E501

        :return: The additional of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._additional

    @additional.setter
    def additional(self, additional):
        """Sets the additional of this CitesDocumentRegistrationCardType.

        K žádosti a této evidenční kartě jsou připojeny následující dokumenty. (Zřetelně označte doklady, které chcete po vyřízení vrátit zpět.)   # noqa: E501

        :param additional: The additional of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """

        self._additional = additional

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

        Vyřízené povolení nebo potvrzení (nehodící se škrtne)  vyzvednu osobně/ chci zaslat poštou na adresu   # noqa: E501

        :return: The delivery of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._delivery

    @delivery.setter
    def delivery(self, delivery):
        """Sets the delivery of this CitesDocumentRegistrationCardType.

        Vyřízené povolení nebo potvrzení (nehodící se škrtne)  vyzvednu osobně/ chci zaslat poštou na adresu   # noqa: E501

        :param delivery: The delivery of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """
        allowed_values = ["O", "P", "", None]  # noqa: E501
        if delivery not in allowed_values:
            raise ValueError(
                "Invalid value for `delivery` ({0}), must be one of {1}"  # noqa: E501
                .format(delivery, allowed_values)
            )

        self._delivery = delivery

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


        :return: The delivery_address of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._delivery_address

    @delivery_address.setter
    def delivery_address(self, delivery_address):
        """Sets the delivery_address of this CitesDocumentRegistrationCardType.


        :param delivery_address: The delivery_address of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """

        self._delivery_address = delivery_address

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


        :return: The note of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: str
        """
        return self._note

    @note.setter
    def note(self, note):
        """Sets the note of this CitesDocumentRegistrationCardType.


        :param note: The note of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: str
        """

        self._note = note

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


        :return: The issuing of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: IssuingType
        """
        return self._issuing

    @issuing.setter
    def issuing(self, issuing):
        """Sets the issuing of this CitesDocumentRegistrationCardType.


        :param issuing: The issuing of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: IssuingType
        """

        self._issuing = issuing

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


        :return: The metadata of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: MetadataType
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this CitesDocumentRegistrationCardType.


        :param metadata: The metadata of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: MetadataType
        """
        if metadata is None:
            raise ValueError("Invalid value for `metadata`, must not be `None`")  # noqa: E501

        self._metadata = metadata

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


        :return: The attachments of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: CitesDocumentAttachmentListType
        """
        return self._attachments

    @attachments.setter
    def attachments(self, attachments):
        """Sets the attachments of this CitesDocumentRegistrationCardType.


        :param attachments: The attachments of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: CitesDocumentAttachmentListType
        """

        self._attachments = attachments

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


        :return: The linked_list of this CitesDocumentRegistrationCardType.  # noqa: E501
        :rtype: LinkedListType
        """
        return self._linked_list

    @linked_list.setter
    def linked_list(self, linked_list):
        """Sets the linked_list of this CitesDocumentRegistrationCardType.


        :param linked_list: The linked_list of this CitesDocumentRegistrationCardType.  # noqa: E501
        :type: LinkedListType
        """

        self._linked_list = linked_list

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

        return self.__dict__ == other.__dict__

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