# coding: utf-8

"""
    Amazon Shipping API

    The Amazon Shipping API is designed to support outbound shipping use cases both for orders originating on Amazon-owned marketplaces as well as external channels/marketplaces. With these APIs, you can request shipping rates, create shipments, cancel shipments, and track shipments.  # noqa: E501

    OpenAPI spec version: v2
    Contact: swa-api-core@amazon.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class AccessPoint(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 = {
        'access_point_id': 'AccessPointId',
        'name': 'str',
        'timezone': 'str',
        'type': 'AccessPointType',
        'accessibility_attributes': 'AccessibilityAttributes',
        'address': 'Address',
        'exception_operating_hours': 'list[ExceptionOperatingHours]',
        'assistance_type': 'str',
        'score': 'str',
        'standard_operating_hours': 'DayOfWeekTimeMap'
    }

    attribute_map = {
        'access_point_id': 'accessPointId',
        'name': 'name',
        'timezone': 'timezone',
        'type': 'type',
        'accessibility_attributes': 'accessibilityAttributes',
        'address': 'address',
        'exception_operating_hours': 'exceptionOperatingHours',
        'assistance_type': 'assistanceType',
        'score': 'score',
        'standard_operating_hours': 'standardOperatingHours'
    }

    def __init__(self, access_point_id=None, name=None, timezone=None, type=None, accessibility_attributes=None, address=None, exception_operating_hours=None, assistance_type=None, score=None, standard_operating_hours=None):  # noqa: E501
        """AccessPoint - a model defined in Swagger"""  # noqa: E501
        self._access_point_id = None
        self._name = None
        self._timezone = None
        self._type = None
        self._accessibility_attributes = None
        self._address = None
        self._exception_operating_hours = None
        self._assistance_type = None
        self._score = None
        self._standard_operating_hours = None
        self.discriminator = None
        if access_point_id is not None:
            self.access_point_id = access_point_id
        if name is not None:
            self.name = name
        if timezone is not None:
            self.timezone = timezone
        if type is not None:
            self.type = type
        if accessibility_attributes is not None:
            self.accessibility_attributes = accessibility_attributes
        if address is not None:
            self.address = address
        if exception_operating_hours is not None:
            self.exception_operating_hours = exception_operating_hours
        if assistance_type is not None:
            self.assistance_type = assistance_type
        if score is not None:
            self.score = score
        if standard_operating_hours is not None:
            self.standard_operating_hours = standard_operating_hours

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


        :return: The access_point_id of this AccessPoint.  # noqa: E501
        :rtype: AccessPointId
        """
        return self._access_point_id

    @access_point_id.setter
    def access_point_id(self, access_point_id):
        """Sets the access_point_id of this AccessPoint.


        :param access_point_id: The access_point_id of this AccessPoint.  # noqa: E501
        :type: AccessPointId
        """

        self._access_point_id = access_point_id

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

        Name of entity (store/hub etc) where this access point is located  # noqa: E501

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

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

        Name of entity (store/hub etc) where this access point is located  # noqa: E501

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

        self._name = name

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

        Timezone of access point  # noqa: E501

        :return: The timezone of this AccessPoint.  # noqa: E501
        :rtype: str
        """
        return self._timezone

    @timezone.setter
    def timezone(self, timezone):
        """Sets the timezone of this AccessPoint.

        Timezone of access point  # noqa: E501

        :param timezone: The timezone of this AccessPoint.  # noqa: E501
        :type: str
        """

        self._timezone = timezone

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


        :return: The type of this AccessPoint.  # noqa: E501
        :rtype: AccessPointType
        """
        return self._type

    @type.setter
    def type(self, type):
        """Sets the type of this AccessPoint.


        :param type: The type of this AccessPoint.  # noqa: E501
        :type: AccessPointType
        """

        self._type = type

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


        :return: The accessibility_attributes of this AccessPoint.  # noqa: E501
        :rtype: AccessibilityAttributes
        """
        return self._accessibility_attributes

    @accessibility_attributes.setter
    def accessibility_attributes(self, accessibility_attributes):
        """Sets the accessibility_attributes of this AccessPoint.


        :param accessibility_attributes: The accessibility_attributes of this AccessPoint.  # noqa: E501
        :type: AccessibilityAttributes
        """

        self._accessibility_attributes = accessibility_attributes

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


        :return: The address of this AccessPoint.  # noqa: E501
        :rtype: Address
        """
        return self._address

    @address.setter
    def address(self, address):
        """Sets the address of this AccessPoint.


        :param address: The address of this AccessPoint.  # noqa: E501
        :type: Address
        """

        self._address = address

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


        :return: The exception_operating_hours of this AccessPoint.  # noqa: E501
        :rtype: list[ExceptionOperatingHours]
        """
        return self._exception_operating_hours

    @exception_operating_hours.setter
    def exception_operating_hours(self, exception_operating_hours):
        """Sets the exception_operating_hours of this AccessPoint.


        :param exception_operating_hours: The exception_operating_hours of this AccessPoint.  # noqa: E501
        :type: list[ExceptionOperatingHours]
        """

        self._exception_operating_hours = exception_operating_hours

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


        :return: The assistance_type of this AccessPoint.  # noqa: E501
        :rtype: str
        """
        return self._assistance_type

    @assistance_type.setter
    def assistance_type(self, assistance_type):
        """Sets the assistance_type of this AccessPoint.


        :param assistance_type: The assistance_type of this AccessPoint.  # noqa: E501
        :type: str
        """
        allowed_values = ["STAFF_ASSISTED", "SELF_ASSISTED"]  # noqa: E501
        if assistance_type not in allowed_values:
            raise ValueError(
                "Invalid value for `assistance_type` ({0}), must be one of {1}"  # noqa: E501
                .format(assistance_type, allowed_values)
            )

        self._assistance_type = assistance_type

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

        The score of access point, based on proximity to postal code and sorting preference. This can be used to sort access point results on shipper's end.  # noqa: E501

        :return: The score of this AccessPoint.  # noqa: E501
        :rtype: str
        """
        return self._score

    @score.setter
    def score(self, score):
        """Sets the score of this AccessPoint.

        The score of access point, based on proximity to postal code and sorting preference. This can be used to sort access point results on shipper's end.  # noqa: E501

        :param score: The score of this AccessPoint.  # noqa: E501
        :type: str
        """

        self._score = score

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


        :return: The standard_operating_hours of this AccessPoint.  # noqa: E501
        :rtype: DayOfWeekTimeMap
        """
        return self._standard_operating_hours

    @standard_operating_hours.setter
    def standard_operating_hours(self, standard_operating_hours):
        """Sets the standard_operating_hours of this AccessPoint.


        :param standard_operating_hours: The standard_operating_hours of this AccessPoint.  # noqa: E501
        :type: DayOfWeekTimeMap
        """

        self._standard_operating_hours = standard_operating_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(AccessPoint, 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, AccessPoint):
            return False

        return self.__dict__ == other.__dict__

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