# coding: utf-8

"""
    Fulfillment API

    Use the Fulfillment API to complete the process of packaging, addressing, handling, and shipping each order on behalf of the seller, in accordance with the payment method and timing specified at checkout.  # noqa: E501

    OpenAPI spec version: v1.20.4
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class LinkedOrderLineItem(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 = {
        'line_item_aspects': 'list[NameValuePair]',
        'line_item_id': 'str',
        'max_estimated_delivery_date': 'str',
        'min_estimated_delivery_date': 'str',
        'order_id': 'str',
        'seller_id': 'str',
        'shipments': 'list[TrackingInfo]',
        'title': 'str'
    }

    attribute_map = {
        'line_item_aspects': 'lineItemAspects',
        'line_item_id': 'lineItemId',
        'max_estimated_delivery_date': 'maxEstimatedDeliveryDate',
        'min_estimated_delivery_date': 'minEstimatedDeliveryDate',
        'order_id': 'orderId',
        'seller_id': 'sellerId',
        'shipments': 'shipments',
        'title': 'title'
    }

    def __init__(self, line_item_aspects=None, line_item_id=None, max_estimated_delivery_date=None, min_estimated_delivery_date=None, order_id=None, seller_id=None, shipments=None, title=None):  # noqa: E501
        """LinkedOrderLineItem - a model defined in Swagger"""  # noqa: E501
        self._line_item_aspects = None
        self._line_item_id = None
        self._max_estimated_delivery_date = None
        self._min_estimated_delivery_date = None
        self._order_id = None
        self._seller_id = None
        self._shipments = None
        self._title = None
        self.discriminator = None
        if line_item_aspects is not None:
            self.line_item_aspects = line_item_aspects
        if line_item_id is not None:
            self.line_item_id = line_item_id
        if max_estimated_delivery_date is not None:
            self.max_estimated_delivery_date = max_estimated_delivery_date
        if min_estimated_delivery_date is not None:
            self.min_estimated_delivery_date = min_estimated_delivery_date
        if order_id is not None:
            self.order_id = order_id
        if seller_id is not None:
            self.seller_id = seller_id
        if shipments is not None:
            self.shipments = shipments
        if title is not None:
            self.title = title

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

        This array contains the complete set of items aspects for the linked line item. For example:<br><pre>\"lineItemAspects\": [<br>    {<br>        \"name\": \"Tire Type\",<br>        \"value\": \"All Season\"<br>    },<br><br>    ...<br> <br>    {<br>        \"name\": \"Car Type\",<br>        \"value\": \"Performance\"<br>    }<br>]</pre><span class=\"tablenote\"><strong>Note:</strong> All item specifics for the listing are returned. The name/value pairs returned are in the language of the linked line item's listing site, which may vary from the seller's language.</span>  # noqa: E501

        :return: The line_item_aspects of this LinkedOrderLineItem.  # noqa: E501
        :rtype: list[NameValuePair]
        """
        return self._line_item_aspects

    @line_item_aspects.setter
    def line_item_aspects(self, line_item_aspects):
        """Sets the line_item_aspects of this LinkedOrderLineItem.

        This array contains the complete set of items aspects for the linked line item. For example:<br><pre>\"lineItemAspects\": [<br>    {<br>        \"name\": \"Tire Type\",<br>        \"value\": \"All Season\"<br>    },<br><br>    ...<br> <br>    {<br>        \"name\": \"Car Type\",<br>        \"value\": \"Performance\"<br>    }<br>]</pre><span class=\"tablenote\"><strong>Note:</strong> All item specifics for the listing are returned. The name/value pairs returned are in the language of the linked line item's listing site, which may vary from the seller's language.</span>  # noqa: E501

        :param line_item_aspects: The line_item_aspects of this LinkedOrderLineItem.  # noqa: E501
        :type: list[NameValuePair]
        """

        self._line_item_aspects = line_item_aspects

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

        The unique identifier of the linked order line item.  # noqa: E501

        :return: The line_item_id of this LinkedOrderLineItem.  # noqa: E501
        :rtype: str
        """
        return self._line_item_id

    @line_item_id.setter
    def line_item_id(self, line_item_id):
        """Sets the line_item_id of this LinkedOrderLineItem.

        The unique identifier of the linked order line item.  # noqa: E501

        :param line_item_id: The line_item_id of this LinkedOrderLineItem.  # noqa: E501
        :type: str
        """

        self._line_item_id = line_item_id

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

        The end of the date range in which the linked line item is expected to be delivered to the shipping address.  # noqa: E501

        :return: The max_estimated_delivery_date of this LinkedOrderLineItem.  # noqa: E501
        :rtype: str
        """
        return self._max_estimated_delivery_date

    @max_estimated_delivery_date.setter
    def max_estimated_delivery_date(self, max_estimated_delivery_date):
        """Sets the max_estimated_delivery_date of this LinkedOrderLineItem.

        The end of the date range in which the linked line item is expected to be delivered to the shipping address.  # noqa: E501

        :param max_estimated_delivery_date: The max_estimated_delivery_date of this LinkedOrderLineItem.  # noqa: E501
        :type: str
        """

        self._max_estimated_delivery_date = max_estimated_delivery_date

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

        The beginning of the date range in which the linked line item is expected to be delivered to the shipping address.  # noqa: E501

        :return: The min_estimated_delivery_date of this LinkedOrderLineItem.  # noqa: E501
        :rtype: str
        """
        return self._min_estimated_delivery_date

    @min_estimated_delivery_date.setter
    def min_estimated_delivery_date(self, min_estimated_delivery_date):
        """Sets the min_estimated_delivery_date of this LinkedOrderLineItem.

        The beginning of the date range in which the linked line item is expected to be delivered to the shipping address.  # noqa: E501

        :param min_estimated_delivery_date: The min_estimated_delivery_date of this LinkedOrderLineItem.  # noqa: E501
        :type: str
        """

        self._min_estimated_delivery_date = min_estimated_delivery_date

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

        The unique identifier of the order to which the linked line item belongs.  # noqa: E501

        :return: The order_id of this LinkedOrderLineItem.  # noqa: E501
        :rtype: str
        """
        return self._order_id

    @order_id.setter
    def order_id(self, order_id):
        """Sets the order_id of this LinkedOrderLineItem.

        The unique identifier of the order to which the linked line item belongs.  # noqa: E501

        :param order_id: The order_id of this LinkedOrderLineItem.  # noqa: E501
        :type: str
        """

        self._order_id = order_id

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

        The eBay user ID of the seller who sold the linked line item. For example, the user ID of the tire seller.  # noqa: E501

        :return: The seller_id of this LinkedOrderLineItem.  # noqa: E501
        :rtype: str
        """
        return self._seller_id

    @seller_id.setter
    def seller_id(self, seller_id):
        """Sets the seller_id of this LinkedOrderLineItem.

        The eBay user ID of the seller who sold the linked line item. For example, the user ID of the tire seller.  # noqa: E501

        :param seller_id: The seller_id of this LinkedOrderLineItem.  # noqa: E501
        :type: str
        """

        self._seller_id = seller_id

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

        An array containing any shipment tracking information available for the linked line item.  # noqa: E501

        :return: The shipments of this LinkedOrderLineItem.  # noqa: E501
        :rtype: list[TrackingInfo]
        """
        return self._shipments

    @shipments.setter
    def shipments(self, shipments):
        """Sets the shipments of this LinkedOrderLineItem.

        An array containing any shipment tracking information available for the linked line item.  # noqa: E501

        :param shipments: The shipments of this LinkedOrderLineItem.  # noqa: E501
        :type: list[TrackingInfo]
        """

        self._shipments = shipments

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

        The listing title of the linked line item.<br><br><span class=\"tablenote\"><b>Note:</b> The Item ID value for the listing will be returned in this field instead of the actual title if this particular listing is on-hold due to an eBay policy violation.</span>  # noqa: E501

        :return: The title of this LinkedOrderLineItem.  # noqa: E501
        :rtype: str
        """
        return self._title

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

        The listing title of the linked line item.<br><br><span class=\"tablenote\"><b>Note:</b> The Item ID value for the listing will be returned in this field instead of the actual title if this particular listing is on-hold due to an eBay policy violation.</span>  # noqa: E501

        :param title: The title of this LinkedOrderLineItem.  # noqa: E501
        :type: str
        """

        self._title = title

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

        return self.__dict__ == other.__dict__

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