# 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 GeneralType(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 = {
        'id_no': 'str',
        'id_no_local': 'str',
        'id_no_list': 'list[str]',
        'authorized': 'bool',
        'permit_type': 'str',
        'permit_type_other': 'str',
        'location': 'str',
        'applicant': 'PersonExtendedType',
        'applicant_agent': 'PersonExtendedType',
        'exporter': 'PersonExtendedType',
        'importer': 'PersonExtendedType',
        'holder': 'PersonExtendedType',
        'holder_history': 'list[PersonHistoryItemType]',
        'country_export': 'str',
        'country_import': 'str',
        'stamp_no': 'str',
        'date_valid': 'date',
        'exhibition_no': 'str',
        'date_acquired': 'date',
        'status': 'str',
        'used': 'str'
    }

    attribute_map = {
        'id_no': 'id_no',
        'id_no_local': 'id_no_local',
        'id_no_list': 'id_no_list',
        'authorized': 'authorized',
        'permit_type': 'permit_type',
        'permit_type_other': 'permit_type_other',
        'location': 'location',
        'applicant': 'applicant',
        'applicant_agent': 'applicant_agent',
        'exporter': 'exporter',
        'importer': 'importer',
        'holder': 'holder',
        'holder_history': 'holder_history',
        'country_export': 'country_export',
        'country_import': 'country_import',
        'stamp_no': 'stamp_no',
        'date_valid': 'date_valid',
        'exhibition_no': 'exhibition_no',
        'date_acquired': 'date_acquired',
        'status': 'status',
        'used': 'used'
    }

    def __init__(self, id_no=None, id_no_local=None, id_no_list=None, authorized=False, permit_type=None, permit_type_other=None, location=None, applicant=None, applicant_agent=None, exporter=None, importer=None, holder=None, holder_history=None, country_export=None, country_import=None, stamp_no=None, date_valid=None, exhibition_no=None, date_acquired=None, status=None, used=None):  # noqa: E501
        """GeneralType - a model defined in Swagger"""  # noqa: E501
        self._id_no = None
        self._id_no_local = None
        self._id_no_list = None
        self._authorized = None
        self._permit_type = None
        self._permit_type_other = None
        self._location = None
        self._applicant = None
        self._applicant_agent = None
        self._exporter = None
        self._importer = None
        self._holder = None
        self._holder_history = None
        self._country_export = None
        self._country_import = None
        self._stamp_no = None
        self._date_valid = None
        self._exhibition_no = None
        self._date_acquired = None
        self._status = None
        self._used = None
        self.discriminator = None
        if id_no is not None:
            self.id_no = id_no
        if id_no_local is not None:
            self.id_no_local = id_no_local
        if id_no_list is not None:
            self.id_no_list = id_no_list
        if authorized is not None:
            self.authorized = authorized
        if permit_type is not None:
            self.permit_type = permit_type
        if permit_type_other is not None:
            self.permit_type_other = permit_type_other
        if location is not None:
            self.location = location
        if applicant is not None:
            self.applicant = applicant
        if applicant_agent is not None:
            self.applicant_agent = applicant_agent
        if exporter is not None:
            self.exporter = exporter
        if importer is not None:
            self.importer = importer
        if holder is not None:
            self.holder = holder
        if holder_history is not None:
            self.holder_history = holder_history
        if country_export is not None:
            self.country_export = country_export
        if country_import is not None:
            self.country_import = country_import
        if stamp_no is not None:
            self.stamp_no = stamp_no
        if date_valid is not None:
            self.date_valid = date_valid
        if exhibition_no is not None:
            self.exhibition_no = exhibition_no
        if date_acquired is not None:
            self.date_acquired = date_acquired
        if status is not None:
            self.status = status
        if used is not None:
            self.used = used

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

        Číslo dokumentu  # noqa: E501

        :return: The id_no of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._id_no

    @id_no.setter
    def id_no(self, id_no):
        """Sets the id_no of this GeneralType.

        Číslo dokumentu  # noqa: E501

        :param id_no: The id_no of this GeneralType.  # noqa: E501
        :type: str
        """

        self._id_no = id_no

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

        Lokální číslo dokumentu  # noqa: E501

        :return: The id_no_local of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._id_no_local

    @id_no_local.setter
    def id_no_local(self, id_no_local):
        """Sets the id_no_local of this GeneralType.

        Lokální číslo dokumentu  # noqa: E501

        :param id_no_local: The id_no_local of this GeneralType.  # noqa: E501
        :type: str
        """

        self._id_no_local = id_no_local

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

        Seznam všech čísel dokumentu  # noqa: E501

        :return: The id_no_list of this GeneralType.  # noqa: E501
        :rtype: list[str]
        """
        return self._id_no_list

    @id_no_list.setter
    def id_no_list(self, id_no_list):
        """Sets the id_no_list of this GeneralType.

        Seznam všech čísel dokumentu  # noqa: E501

        :param id_no_list: The id_no_list of this GeneralType.  # noqa: E501
        :type: list[str]
        """

        self._id_no_list = id_no_list

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

        Indikuje, zda je dokument autorizován a připraven pro publikaci  # noqa: E501

        :return: The authorized of this GeneralType.  # noqa: E501
        :rtype: bool
        """
        return self._authorized

    @authorized.setter
    def authorized(self, authorized):
        """Sets the authorized of this GeneralType.

        Indikuje, zda je dokument autorizován a připraven pro publikaci  # noqa: E501

        :param authorized: The authorized of this GeneralType.  # noqa: E501
        :type: bool
        """

        self._authorized = authorized

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

        typ permitu  # noqa: E501

        :return: The permit_type of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._permit_type

    @permit_type.setter
    def permit_type(self, permit_type):
        """Sets the permit_type of this GeneralType.

        typ permitu  # noqa: E501

        :param permit_type: The permit_type of this GeneralType.  # noqa: E501
        :type: str
        """
        allowed_values = ["IMPORT", "EXPORT", "RE-EXPORT", "OTHER", "", None]  # noqa: E501
        if permit_type not in allowed_values:
            raise ValueError(
                "Invalid value for `permit_type` ({0}), must be one of {1}"  # noqa: E501
                .format(permit_type, allowed_values)
            )

        self._permit_type = permit_type

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

        popis typu permitu, když OTHER  # noqa: E501

        :return: The permit_type_other of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._permit_type_other

    @permit_type_other.setter
    def permit_type_other(self, permit_type_other):
        """Sets the permit_type_other of this GeneralType.

        popis typu permitu, když OTHER  # noqa: E501

        :param permit_type_other: The permit_type_other of this GeneralType.  # noqa: E501
        :type: str
        """

        self._permit_type_other = permit_type_other

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

        Povolené místo určení živých exemplářů druhů z přílohy A odebraných z volné přílohy   # noqa: E501

        :return: The location of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._location

    @location.setter
    def location(self, location):
        """Sets the location of this GeneralType.

        Povolené místo určení živých exemplářů druhů z přílohy A odebraných z volné přílohy   # noqa: E501

        :param location: The location of this GeneralType.  # noqa: E501
        :type: str
        """

        self._location = location

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


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

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


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

        self._applicant = applicant

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


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

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


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

        self._applicant_agent = applicant_agent

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


        :return: The exporter of this GeneralType.  # noqa: E501
        :rtype: PersonExtendedType
        """
        return self._exporter

    @exporter.setter
    def exporter(self, exporter):
        """Sets the exporter of this GeneralType.


        :param exporter: The exporter of this GeneralType.  # noqa: E501
        :type: PersonExtendedType
        """

        self._exporter = exporter

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


        :return: The importer of this GeneralType.  # noqa: E501
        :rtype: PersonExtendedType
        """
        return self._importer

    @importer.setter
    def importer(self, importer):
        """Sets the importer of this GeneralType.


        :param importer: The importer of this GeneralType.  # noqa: E501
        :type: PersonExtendedType
        """

        self._importer = importer

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


        :return: The holder of this GeneralType.  # noqa: E501
        :rtype: PersonExtendedType
        """
        return self._holder

    @holder.setter
    def holder(self, holder):
        """Sets the holder of this GeneralType.


        :param holder: The holder of this GeneralType.  # noqa: E501
        :type: PersonExtendedType
        """

        self._holder = holder

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

        Historie vlastníků nebo držitelů  # noqa: E501

        :return: The holder_history of this GeneralType.  # noqa: E501
        :rtype: list[PersonHistoryItemType]
        """
        return self._holder_history

    @holder_history.setter
    def holder_history(self, holder_history):
        """Sets the holder_history of this GeneralType.

        Historie vlastníků nebo držitelů  # noqa: E501

        :param holder_history: The holder_history of this GeneralType.  # noqa: E501
        :type: list[PersonHistoryItemType]
        """

        self._holder_history = holder_history

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

        Země (zpětného) vývozu  # noqa: E501

        :return: The country_export of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._country_export

    @country_export.setter
    def country_export(self, country_export):
        """Sets the country_export of this GeneralType.

        Země (zpětného) vývozu  # noqa: E501

        :param country_export: The country_export of this GeneralType.  # noqa: E501
        :type: str
        """

        self._country_export = country_export

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

        Země dovozu  # noqa: E501

        :return: The country_import of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._country_import

    @country_import.setter
    def country_import(self, country_import):
        """Sets the country_import of this GeneralType.

        Země dovozu  # noqa: E501

        :param country_import: The country_import of this GeneralType.  # noqa: E501
        :type: str
        """

        self._country_import = country_import

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

        Bezpečnostní známka č.  # noqa: E501

        :return: The stamp_no of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._stamp_no

    @stamp_no.setter
    def stamp_no(self, stamp_no):
        """Sets the stamp_no of this GeneralType.

        Bezpečnostní známka č.  # noqa: E501

        :param stamp_no: The stamp_no of this GeneralType.  # noqa: E501
        :type: str
        """

        self._stamp_no = stamp_no

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

        Poslední den platnosti  # noqa: E501

        :return: The date_valid of this GeneralType.  # noqa: E501
        :rtype: date
        """
        return self._date_valid

    @date_valid.setter
    def date_valid(self, date_valid):
        """Sets the date_valid of this GeneralType.

        Poslední den platnosti  # noqa: E501

        :param date_valid: The date_valid of this GeneralType.  # noqa: E501
        :type: date
        """

        self._date_valid = date_valid

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

        Evidenční číslo výstavy  # noqa: E501

        :return: The exhibition_no of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._exhibition_no

    @exhibition_no.setter
    def exhibition_no(self, exhibition_no):
        """Sets the exhibition_no of this GeneralType.

        Evidenční číslo výstavy  # noqa: E501

        :param exhibition_no: The exhibition_no of this GeneralType.  # noqa: E501
        :type: str
        """

        self._exhibition_no = exhibition_no

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

        Datum získání  # noqa: E501

        :return: The date_acquired of this GeneralType.  # noqa: E501
        :rtype: date
        """
        return self._date_acquired

    @date_acquired.setter
    def date_acquired(self, date_acquired):
        """Sets the date_acquired of this GeneralType.

        Datum získání  # noqa: E501

        :param date_acquired: The date_acquired of this GeneralType.  # noqa: E501
        :type: date
        """

        self._date_acquired = date_acquired

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

        Aktuální stav dokumentu  # noqa: E501

        :return: The status of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this GeneralType.

        Aktuální stav dokumentu  # noqa: E501

        :param status: The status of this GeneralType.  # noqa: E501
        :type: str
        """

        self._status = status

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

        Aktuální stav použití dokumentu  # noqa: E501

        :return: The used of this GeneralType.  # noqa: E501
        :rtype: str
        """
        return self._used

    @used.setter
    def used(self, used):
        """Sets the used of this GeneralType.

        Aktuální stav použití dokumentu  # noqa: E501

        :param used: The used of this GeneralType.  # noqa: E501
        :type: str
        """

        self._used = used

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

        return self.__dict__ == other.__dict__

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