# coding: utf-8

"""
    Inventory API

    The Inventory API is used to create and manage inventory, and then to publish and manage this inventory on an eBay marketplace. There are also methods in this API that will convert eligible, active eBay listings into the Inventory API model.  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class InventoryLocationResponse(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 = {
        'location': 'Location',
        'location_additional_information': 'str',
        'location_instructions': 'str',
        'location_types': 'list[str]',
        'location_web_url': 'str',
        'merchant_location_key': 'str',
        'merchant_location_status': 'str',
        'name': 'str',
        'operating_hours': 'list[OperatingHours]',
        'phone': 'str',
        'special_hours': 'list[SpecialHours]'
    }

    attribute_map = {
        'location': 'location',
        'location_additional_information': 'locationAdditionalInformation',
        'location_instructions': 'locationInstructions',
        'location_types': 'locationTypes',
        'location_web_url': 'locationWebUrl',
        'merchant_location_key': 'merchantLocationKey',
        'merchant_location_status': 'merchantLocationStatus',
        'name': 'name',
        'operating_hours': 'operatingHours',
        'phone': 'phone',
        'special_hours': 'specialHours'
    }

    def __init__(self, location=None, location_additional_information=None, location_instructions=None, location_types=None, location_web_url=None, merchant_location_key=None, merchant_location_status=None, name=None, operating_hours=None, phone=None, special_hours=None):  # noqa: E501
        """InventoryLocationResponse - a model defined in Swagger"""  # noqa: E501
        self._location = None
        self._location_additional_information = None
        self._location_instructions = None
        self._location_types = None
        self._location_web_url = None
        self._merchant_location_key = None
        self._merchant_location_status = None
        self._name = None
        self._operating_hours = None
        self._phone = None
        self._special_hours = None
        self.discriminator = None
        if location is not None:
            self.location = location
        if location_additional_information is not None:
            self.location_additional_information = location_additional_information
        if location_instructions is not None:
            self.location_instructions = location_instructions
        if location_types is not None:
            self.location_types = location_types
        if location_web_url is not None:
            self.location_web_url = location_web_url
        if merchant_location_key is not None:
            self.merchant_location_key = merchant_location_key
        if merchant_location_status is not None:
            self.merchant_location_status = merchant_location_status
        if name is not None:
            self.name = name
        if operating_hours is not None:
            self.operating_hours = operating_hours
        if phone is not None:
            self.phone = phone
        if special_hours is not None:
            self.special_hours = special_hours

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


        :return: The location of this InventoryLocationResponse.  # noqa: E501
        :rtype: Location
        """
        return self._location

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


        :param location: The location of this InventoryLocationResponse.  # noqa: E501
        :type: Location
        """

        self._location = location

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

        This text field provides additional information about an inventory location. This field is returned if it is set for the inventory location. <br/><br/><b>Max length</b>: 256  # noqa: E501

        :return: The location_additional_information of this InventoryLocationResponse.  # noqa: E501
        :rtype: str
        """
        return self._location_additional_information

    @location_additional_information.setter
    def location_additional_information(self, location_additional_information):
        """Sets the location_additional_information of this InventoryLocationResponse.

        This text field provides additional information about an inventory location. This field is returned if it is set for the inventory location. <br/><br/><b>Max length</b>: 256  # noqa: E501

        :param location_additional_information: The location_additional_information of this InventoryLocationResponse.  # noqa: E501
        :type: str
        """

        self._location_additional_information = location_additional_information

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

        This text field is used by the merchant to provide special pickup instructions for the store location. This field can help create a pleasant and easy pickup experience for In-Store Pickup and Click and Collect orders. If this field was not set up through a <strong>createInventoryLocation</strong> or a <strong>updateInventoryLocation</strong> call, eBay will use the default pickup instructions contained in the merchant's profile.<br/><br/><b>Max length</b>: 1000  # noqa: E501

        :return: The location_instructions of this InventoryLocationResponse.  # noqa: E501
        :rtype: str
        """
        return self._location_instructions

    @location_instructions.setter
    def location_instructions(self, location_instructions):
        """Sets the location_instructions of this InventoryLocationResponse.

        This text field is used by the merchant to provide special pickup instructions for the store location. This field can help create a pleasant and easy pickup experience for In-Store Pickup and Click and Collect orders. If this field was not set up through a <strong>createInventoryLocation</strong> or a <strong>updateInventoryLocation</strong> call, eBay will use the default pickup instructions contained in the merchant's profile.<br/><br/><b>Max length</b>: 1000  # noqa: E501

        :param location_instructions: The location_instructions of this InventoryLocationResponse.  # noqa: E501
        :type: str
        """

        self._location_instructions = location_instructions

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

        This container defines the function of the inventory location. Typically, an inventory location will serve as a store or a warehouse, but in some cases, an inventory location may be both. <br/><br/>The location type of an inventory location defaults to <code>WAREHOUSE</code> if a location type is not specified when a merchant creates an inventory location.  # noqa: E501

        :return: The location_types of this InventoryLocationResponse.  # noqa: E501
        :rtype: list[str]
        """
        return self._location_types

    @location_types.setter
    def location_types(self, location_types):
        """Sets the location_types of this InventoryLocationResponse.

        This container defines the function of the inventory location. Typically, an inventory location will serve as a store or a warehouse, but in some cases, an inventory location may be both. <br/><br/>The location type of an inventory location defaults to <code>WAREHOUSE</code> if a location type is not specified when a merchant creates an inventory location.  # noqa: E501

        :param location_types: The location_types of this InventoryLocationResponse.  # noqa: E501
        :type: list[str]
        """

        self._location_types = location_types

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

        This text field shows the  Website address (URL) associated with the inventory location. This field is returned if defined for the inventory location. <br/><br/><b>Max length</b>: 512  # noqa: E501

        :return: The location_web_url of this InventoryLocationResponse.  # noqa: E501
        :rtype: str
        """
        return self._location_web_url

    @location_web_url.setter
    def location_web_url(self, location_web_url):
        """Sets the location_web_url of this InventoryLocationResponse.

        This text field shows the  Website address (URL) associated with the inventory location. This field is returned if defined for the inventory location. <br/><br/><b>Max length</b>: 512  # noqa: E501

        :param location_web_url: The location_web_url of this InventoryLocationResponse.  # noqa: E501
        :type: str
        """

        self._location_web_url = location_web_url

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

        The unique identifier of the inventory location. This identifier is set up by the merchant when the inventory location is first created with the <strong>createInventoryLocation</strong> call. Once this value is set for an inventory location, it cannot be modified. <br/><br/><b>Max length</b>: 36  # noqa: E501

        :return: The merchant_location_key of this InventoryLocationResponse.  # noqa: E501
        :rtype: str
        """
        return self._merchant_location_key

    @merchant_location_key.setter
    def merchant_location_key(self, merchant_location_key):
        """Sets the merchant_location_key of this InventoryLocationResponse.

        The unique identifier of the inventory location. This identifier is set up by the merchant when the inventory location is first created with the <strong>createInventoryLocation</strong> call. Once this value is set for an inventory location, it cannot be modified. <br/><br/><b>Max length</b>: 36  # noqa: E501

        :param merchant_location_key: The merchant_location_key of this InventoryLocationResponse.  # noqa: E501
        :type: str
        """

        self._merchant_location_key = merchant_location_key

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

        This field indicates whether the inventory location is enabled (inventory can be loaded to location) or disabled (inventory can not be loaded to location). The merchant can use the <strong>enableInventoryLocation</strong> call to enable an inventory location in disabled status, or the <strong>disableInventoryLocation</strong> call to disable an inventory location in enabled status. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/inventory/types/api:StatusEnum'>eBay API documentation</a>  # noqa: E501

        :return: The merchant_location_status of this InventoryLocationResponse.  # noqa: E501
        :rtype: str
        """
        return self._merchant_location_status

    @merchant_location_status.setter
    def merchant_location_status(self, merchant_location_status):
        """Sets the merchant_location_status of this InventoryLocationResponse.

        This field indicates whether the inventory location is enabled (inventory can be loaded to location) or disabled (inventory can not be loaded to location). The merchant can use the <strong>enableInventoryLocation</strong> call to enable an inventory location in disabled status, or the <strong>disableInventoryLocation</strong> call to disable an inventory location in enabled status. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/inventory/types/api:StatusEnum'>eBay API documentation</a>  # noqa: E501

        :param merchant_location_status: The merchant_location_status of this InventoryLocationResponse.  # noqa: E501
        :type: str
        """

        self._merchant_location_status = merchant_location_status

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

        The name of the inventory location. This name should be a human-friendly name as it will be displayed in In-Store Pickup and Click and Collect listings. For store inventory locations, this field is not required for the <strong>createInventoryLocation</strong> call, but a store inventory location must have a defined <strong>name</strong> value before an In-Store Pickup and Click and Collect enabled offer is published. So, if the seller omits this field in the <strong>createInventoryLocation</strong> call, it will have to be added later through a <strong>updateInventoryLocation</strong> call. <br/><br/><b>Max length</b>: 1000  # noqa: E501

        :return: The name of this InventoryLocationResponse.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this InventoryLocationResponse.

        The name of the inventory location. This name should be a human-friendly name as it will be displayed in In-Store Pickup and Click and Collect listings. For store inventory locations, this field is not required for the <strong>createInventoryLocation</strong> call, but a store inventory location must have a defined <strong>name</strong> value before an In-Store Pickup and Click and Collect enabled offer is published. So, if the seller omits this field in the <strong>createInventoryLocation</strong> call, it will have to be added later through a <strong>updateInventoryLocation</strong> call. <br/><br/><b>Max length</b>: 1000  # noqa: E501

        :param name: The name of this InventoryLocationResponse.  # noqa: E501
        :type: str
        """

        self._name = name

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

        This container shows the regular operating hours for a store location during the days of the week. A <strong>dayOfWeekEnum</strong> field and an <strong>intervals</strong> container is shown for each day of the week that the store location is open.  # noqa: E501

        :return: The operating_hours of this InventoryLocationResponse.  # noqa: E501
        :rtype: list[OperatingHours]
        """
        return self._operating_hours

    @operating_hours.setter
    def operating_hours(self, operating_hours):
        """Sets the operating_hours of this InventoryLocationResponse.

        This container shows the regular operating hours for a store location during the days of the week. A <strong>dayOfWeekEnum</strong> field and an <strong>intervals</strong> container is shown for each day of the week that the store location is open.  # noqa: E501

        :param operating_hours: The operating_hours of this InventoryLocationResponse.  # noqa: E501
        :type: list[OperatingHours]
        """

        self._operating_hours = operating_hours

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

        The phone number for an inventory location. This field will typically only be set and returned for store locations. <br/><br/><b>Max length</b>: 36  # noqa: E501

        :return: The phone of this InventoryLocationResponse.  # noqa: E501
        :rtype: str
        """
        return self._phone

    @phone.setter
    def phone(self, phone):
        """Sets the phone of this InventoryLocationResponse.

        The phone number for an inventory location. This field will typically only be set and returned for store locations. <br/><br/><b>Max length</b>: 36  # noqa: E501

        :param phone: The phone of this InventoryLocationResponse.  # noqa: E501
        :type: str
        """

        self._phone = phone

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

        This container shows the special operating hours for a store location on a specific date or dates.  # noqa: E501

        :return: The special_hours of this InventoryLocationResponse.  # noqa: E501
        :rtype: list[SpecialHours]
        """
        return self._special_hours

    @special_hours.setter
    def special_hours(self, special_hours):
        """Sets the special_hours of this InventoryLocationResponse.

        This container shows the special operating hours for a store location on a specific date or dates.  # noqa: E501

        :param special_hours: The special_hours of this InventoryLocationResponse.  # noqa: E501
        :type: list[SpecialHours]
        """

        self._special_hours = special_hours

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

        return self.__dict__ == other.__dict__

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