# coding: utf-8
from __future__ import absolute_import

from datetime import datetime

from pds_doi_service.api import util
from pds_doi_service.api.models import Model


class LabelPayload(Model):
    """
    NOTE: This class was auto generated by the swagger code generator program.
    """

    def __init__(
        self,
        status=None,
        title=None,
        publication_date=None,
        product_type_specific=None,
        author_last_name=None,
        author_first_name=None,
        related_resource=None,
    ):  # noqa: E501
        """LabelPayload - a model defined in Swagger

        :param status: The status of this LabelPayload.  # noqa: E501
        :type status: str
        :param title: The title of this LabelPayload.  # noqa: E501
        :type title: str
        :param publication_date: The publication_date of this LabelPayload.  # noqa: E501
        :type publication_date: datetime
        :param product_type_specific: The product_type_specific of this LabelPayload.  # noqa: E501
        :type product_type_specific: str
        :param author_last_name: The author_last_name of this LabelPayload.  # noqa: E501
        :type author_last_name: str
        :param author_first_name: The author_first_name of this LabelPayload.  # noqa: E501
        :type author_first_name: str
        :param related_resource: The related_resource of this LabelPayload.  # noqa: E501
        :type related_resource: str
        """
        self.swagger_types = {
            "status": str,
            "title": str,
            "publication_date": datetime,
            "product_type_specific": str,
            "author_last_name": str,
            "author_first_name": str,
            "related_resource": str,
        }

        self.attribute_map = {
            "status": "status",
            "title": "title",
            "publication_date": "publication_date",
            "product_type_specific": "product_type_specific",
            "author_last_name": "author_last_name",
            "author_first_name": "author_first_name",
            "related_resource": "related_resource",
        }
        self._status = status
        self._title = title
        self._publication_date = publication_date
        self._product_type_specific = product_type_specific
        self._author_last_name = author_last_name
        self._author_first_name = author_first_name
        self._related_resource = related_resource

    @classmethod
    def from_dict(cls, dikt) -> "LabelPayload":
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The label_payload of this LabelPayload.  # noqa: E501
        :rtype: LabelPayload
        """
        return util.deserialize_model(dikt, cls)

    @property
    def status(self) -> str:
        """Gets the status of this LabelPayload.


        :return: The status of this LabelPayload.
        :rtype: str
        """
        return self._status

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


        :param status: The status of this LabelPayload.
        :type status: str
        """

        self._status = status

    @property
    def title(self) -> str:
        """Gets the title of this LabelPayload.


        :return: The title of this LabelPayload.
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title: str):
        """Sets the title of this LabelPayload.


        :param title: The title of this LabelPayload.
        :type title: str
        """

        self._title = title

    @property
    def publication_date(self) -> datetime:
        """Gets the publication_date of this LabelPayload.


        :return: The publication_date of this LabelPayload.
        :rtype: datetime
        """
        return self._publication_date

    @publication_date.setter
    def publication_date(self, publication_date: datetime):
        """Sets the publication_date of this LabelPayload.


        :param publication_date: The publication_date of this LabelPayload.
        :type publication_date: datetime
        """

        self._publication_date = publication_date

    @property
    def product_type_specific(self) -> str:
        """Gets the product_type_specific of this LabelPayload.


        :return: The product_type_specific of this LabelPayload.
        :rtype: str
        """
        return self._product_type_specific

    @product_type_specific.setter
    def product_type_specific(self, product_type_specific: str):
        """Sets the product_type_specific of this LabelPayload.


        :param product_type_specific: The product_type_specific of this LabelPayload.
        :type product_type_specific: str
        """

        self._product_type_specific = product_type_specific

    @property
    def author_last_name(self) -> str:
        """Gets the author_last_name of this LabelPayload.


        :return: The author_last_name of this LabelPayload.
        :rtype: str
        """
        return self._author_last_name

    @author_last_name.setter
    def author_last_name(self, author_last_name: str):
        """Sets the author_last_name of this LabelPayload.


        :param author_last_name: The author_last_name of this LabelPayload.
        :type author_last_name: str
        """

        self._author_last_name = author_last_name

    @property
    def author_first_name(self) -> str:
        """Gets the author_first_name of this LabelPayload.


        :return: The author_first_name of this LabelPayload.
        :rtype: str
        """
        return self._author_first_name

    @author_first_name.setter
    def author_first_name(self, author_first_name: str):
        """Sets the author_first_name of this LabelPayload.


        :param author_first_name: The author_first_name of this LabelPayload.
        :type author_first_name: str
        """

        self._author_first_name = author_first_name

    @property
    def related_resource(self) -> str:
        """Gets the related_resource of this LabelPayload.


        :return: The related_resource of this LabelPayload.
        :rtype: str
        """
        return self._related_resource

    @related_resource.setter
    def related_resource(self, related_resource: str):
        """Sets the related_resource of this LabelPayload.


        :param related_resource: The related_resource of this LabelPayload.
        :type related_resource: str
        """

        self._related_resource = related_resource
