# coding: utf-8

"""
    Selling Partner API for Direct Fulfillment Shipping

    Use the Selling Partner API for Direct Fulfillment Shipping to access a direct fulfillment vendor's shipping data.

    The version of the OpenAPI document: 2021-12-28
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import pprint
import re  # noqa: F401

import six

from spapi.configuration import Configuration


class LabelData(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 = {
        'package_identifier': 'str',
        'tracking_number': 'str',
        'ship_method': 'str',
        'ship_method_name': 'str',
        'content': 'str',
    }

    attribute_map = {
        'package_identifier': 'packageIdentifier',
        'tracking_number': 'trackingNumber',
        'ship_method': 'shipMethod',
        'ship_method_name': 'shipMethodName',
        'content': 'content',
    }

    def __init__(self, package_identifier=None, tracking_number=None, ship_method=None, ship_method_name=None, content=None, _configuration=None):  # noqa: E501
        """LabelData - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._package_identifier = None
        self._tracking_number = None
        self._ship_method = None
        self._ship_method_name = None
        self._content = None
        self.discriminator = None

        if package_identifier is not None:
            self.package_identifier = package_identifier
        if tracking_number is not None:
            self.tracking_number = tracking_number
        if ship_method is not None:
            self.ship_method = ship_method
        if ship_method_name is not None:
            self.ship_method_name = ship_method_name
        self.content = content

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

        Identifier for the package. The first package will be 001, the second 002, and so on. This number is used as a reference to refer to this package from the pallet level.  # noqa: E501

        :return: The package_identifier of this LabelData.  # noqa: E501
        :rtype: str
        """
        return self._package_identifier

    @package_identifier.setter
    def package_identifier(self, package_identifier):
        """Sets the package_identifier of this LabelData.

        Identifier for the package. The first package will be 001, the second 002, and so on. This number is used as a reference to refer to this package from the pallet level.  # noqa: E501

        :param package_identifier: The package_identifier of this LabelData.  # noqa: E501
        :type: str
        """

        self._package_identifier = package_identifier

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

        Package tracking identifier from the shipping carrier.  # noqa: E501

        :return: The tracking_number of this LabelData.  # noqa: E501
        :rtype: str
        """
        return self._tracking_number

    @tracking_number.setter
    def tracking_number(self, tracking_number):
        """Sets the tracking_number of this LabelData.

        Package tracking identifier from the shipping carrier.  # noqa: E501

        :param tracking_number: The tracking_number of this LabelData.  # noqa: E501
        :type: str
        """

        self._tracking_number = tracking_number

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

        Ship method to be used for shipping the order. Amazon defines Ship Method Codes indicating shipping carrier and shipment service level. Ship Method Codes are case and format sensitive. The same ship method code should returned on the shipment confirmation. Note that the Ship Method Codes are vendor specific and will be provided to each vendor during the implementation.  # noqa: E501

        :return: The ship_method of this LabelData.  # noqa: E501
        :rtype: str
        """
        return self._ship_method

    @ship_method.setter
    def ship_method(self, ship_method):
        """Sets the ship_method of this LabelData.

        Ship method to be used for shipping the order. Amazon defines Ship Method Codes indicating shipping carrier and shipment service level. Ship Method Codes are case and format sensitive. The same ship method code should returned on the shipment confirmation. Note that the Ship Method Codes are vendor specific and will be provided to each vendor during the implementation.  # noqa: E501

        :param ship_method: The ship_method of this LabelData.  # noqa: E501
        :type: str
        """

        self._ship_method = ship_method

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

        Shipping method name for internal reference.  # noqa: E501

        :return: The ship_method_name of this LabelData.  # noqa: E501
        :rtype: str
        """
        return self._ship_method_name

    @ship_method_name.setter
    def ship_method_name(self, ship_method_name):
        """Sets the ship_method_name of this LabelData.

        Shipping method name for internal reference.  # noqa: E501

        :param ship_method_name: The ship_method_name of this LabelData.  # noqa: E501
        :type: str
        """

        self._ship_method_name = ship_method_name

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

        This field will contain the Base64 string of the shipment label content.  # noqa: E501

        :return: The content of this LabelData.  # noqa: E501
        :rtype: str
        """
        return self._content

    @content.setter
    def content(self, content):
        """Sets the content of this LabelData.

        This field will contain the Base64 string of the shipment label content.  # noqa: E501

        :param content: The content of this LabelData.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and content is None:
            raise ValueError("Invalid value for `content`, must not be `None`")  # noqa: E501

        self._content = content

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

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
