# 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 StatementCertificateType(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 = {
        'request_id_no': 'str',
        'request_id': 'str',
        'authority': 'PersonExtendedType',
        'recipient': 'PersonExtendedType',
        'holder': 'PersonExtendedType',
        'species': 'TaxonItemType',
        'id_no': 'str',
        'standalone': 'bool',
        'approve': 'str',
        'standpoint': 'str',
        'date_valid': 'date',
        'subject': 'str',
        'problem': 'str',
        'reason': 'str',
        'parents': 'list[StatementCertificateRequestItemParentType]'
    }

    attribute_map = {
        'request_id_no': 'request_id_no',
        'request_id': 'request_id',
        'authority': 'authority',
        'recipient': 'recipient',
        'holder': 'holder',
        'species': 'species',
        'id_no': 'id_no',
        'standalone': 'standalone',
        'approve': 'approve',
        'standpoint': 'standpoint',
        'date_valid': 'date_valid',
        'subject': 'subject',
        'problem': 'problem',
        'reason': 'reason',
        'parents': 'parents'
    }

    def __init__(self, request_id_no=None, request_id=None, authority=None, recipient=None, holder=None, species=None, id_no=None, standalone=False, approve=None, standpoint=None, date_valid=None, subject=None, problem=None, reason=None, parents=None):  # noqa: E501
        """StatementCertificateType - a model defined in Swagger"""  # noqa: E501
        self._request_id_no = None
        self._request_id = None
        self._authority = None
        self._recipient = None
        self._holder = None
        self._species = None
        self._id_no = None
        self._standalone = None
        self._approve = None
        self._standpoint = None
        self._date_valid = None
        self._subject = None
        self._problem = None
        self._reason = None
        self._parents = None
        self.discriminator = None
        if request_id_no is not None:
            self.request_id_no = request_id_no
        if request_id is not None:
            self.request_id = request_id
        if authority is not None:
            self.authority = authority
        if recipient is not None:
            self.recipient = recipient
        if holder is not None:
            self.holder = holder
        if species is not None:
            self.species = species
        if id_no is not None:
            self.id_no = id_no
        if standalone is not None:
            self.standalone = standalone
        if approve is not None:
            self.approve = approve
        if standpoint is not None:
            self.standpoint = standpoint
        if date_valid is not None:
            self.date_valid = date_valid
        if subject is not None:
            self.subject = subject
        if problem is not None:
            self.problem = problem
        if reason is not None:
            self.reason = reason
        if parents is not None:
            self.parents = parents

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

        Číslo jednací žádosti o stanovisko  # noqa: E501

        :return: The request_id_no of this StatementCertificateType.  # noqa: E501
        :rtype: str
        """
        return self._request_id_no

    @request_id_no.setter
    def request_id_no(self, request_id_no):
        """Sets the request_id_no of this StatementCertificateType.

        Číslo jednací žádosti o stanovisko  # noqa: E501

        :param request_id_no: The request_id_no of this StatementCertificateType.  # noqa: E501
        :type: str
        """

        self._request_id_no = request_id_no

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

        Identifikátor žádosti o stanovisko  # noqa: E501

        :return: The request_id of this StatementCertificateType.  # noqa: E501
        :rtype: str
        """
        return self._request_id

    @request_id.setter
    def request_id(self, request_id):
        """Sets the request_id of this StatementCertificateType.

        Identifikátor žádosti o stanovisko  # noqa: E501

        :param request_id: The request_id of this StatementCertificateType.  # noqa: E501
        :type: str
        """

        self._request_id = request_id

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


        :return: The authority of this StatementCertificateType.  # noqa: E501
        :rtype: PersonExtendedType
        """
        return self._authority

    @authority.setter
    def authority(self, authority):
        """Sets the authority of this StatementCertificateType.


        :param authority: The authority of this StatementCertificateType.  # noqa: E501
        :type: PersonExtendedType
        """

        self._authority = authority

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


        :return: The recipient of this StatementCertificateType.  # noqa: E501
        :rtype: PersonExtendedType
        """
        return self._recipient

    @recipient.setter
    def recipient(self, recipient):
        """Sets the recipient of this StatementCertificateType.


        :param recipient: The recipient of this StatementCertificateType.  # noqa: E501
        :type: PersonExtendedType
        """

        self._recipient = recipient

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


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

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


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

        self._holder = holder

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


        :return: The species of this StatementCertificateType.  # noqa: E501
        :rtype: TaxonItemType
        """
        return self._species

    @species.setter
    def species(self, species):
        """Sets the species of this StatementCertificateType.


        :param species: The species of this StatementCertificateType.  # noqa: E501
        :type: TaxonItemType
        """

        self._species = species

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

        Číslo jednací stanoviska  # noqa: E501

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

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

        Číslo jednací stanoviska  # noqa: E501

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

        self._id_no = id_no

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

        Samostatné stanovisko  # noqa: E501

        :return: The standalone of this StatementCertificateType.  # noqa: E501
        :rtype: bool
        """
        return self._standalone

    @standalone.setter
    def standalone(self, standalone):
        """Sets the standalone of this StatementCertificateType.

        Samostatné stanovisko  # noqa: E501

        :param standalone: The standalone of this StatementCertificateType.  # noqa: E501
        :type: bool
        """

        self._standalone = standalone

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

        Souhlas  # noqa: E501

        :return: The approve of this StatementCertificateType.  # noqa: E501
        :rtype: str
        """
        return self._approve

    @approve.setter
    def approve(self, approve):
        """Sets the approve of this StatementCertificateType.

        Souhlas  # noqa: E501

        :param approve: The approve of this StatementCertificateType.  # noqa: E501
        :type: str
        """

        self._approve = approve

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

        Druh stanoviska  # noqa: E501

        :return: The standpoint of this StatementCertificateType.  # noqa: E501
        :rtype: str
        """
        return self._standpoint

    @standpoint.setter
    def standpoint(self, standpoint):
        """Sets the standpoint of this StatementCertificateType.

        Druh stanoviska  # noqa: E501

        :param standpoint: The standpoint of this StatementCertificateType.  # noqa: E501
        :type: str
        """

        self._standpoint = standpoint

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

        Datum platnosti  # noqa: E501

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

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

        Datum platnosti  # noqa: E501

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

        self._date_valid = date_valid

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

        Název stanoviska  # noqa: E501

        :return: The subject of this StatementCertificateType.  # noqa: E501
        :rtype: str
        """
        return self._subject

    @subject.setter
    def subject(self, subject):
        """Sets the subject of this StatementCertificateType.

        Název stanoviska  # noqa: E501

        :param subject: The subject of this StatementCertificateType.  # noqa: E501
        :type: str
        """

        self._subject = subject

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

        Předmět stanoviska  # noqa: E501

        :return: The problem of this StatementCertificateType.  # noqa: E501
        :rtype: str
        """
        return self._problem

    @problem.setter
    def problem(self, problem):
        """Sets the problem of this StatementCertificateType.

        Předmět stanoviska  # noqa: E501

        :param problem: The problem of this StatementCertificateType.  # noqa: E501
        :type: str
        """

        self._problem = problem

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

        Zdůvodnění  # noqa: E501

        :return: The reason of this StatementCertificateType.  # noqa: E501
        :rtype: str
        """
        return self._reason

    @reason.setter
    def reason(self, reason):
        """Sets the reason of this StatementCertificateType.

        Zdůvodnění  # noqa: E501

        :param reason: The reason of this StatementCertificateType.  # noqa: E501
        :type: str
        """

        self._reason = reason

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

        Rodičovské exempláře  # noqa: E501

        :return: The parents of this StatementCertificateType.  # noqa: E501
        :rtype: list[StatementCertificateRequestItemParentType]
        """
        return self._parents

    @parents.setter
    def parents(self, parents):
        """Sets the parents of this StatementCertificateType.

        Rodičovské exempláře  # noqa: E501

        :param parents: The parents of this StatementCertificateType.  # noqa: E501
        :type: list[StatementCertificateRequestItemParentType]
        """

        self._parents = parents

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

        return self.__dict__ == other.__dict__

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