# coding: utf-8

"""
    Merchant Locator API

    Find Visa accepting merchants around by geolocation

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


from pprint import pformat
from six import iteritems
import re


class MerchantLocatorpostPayload(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, response_attr_list=None, header=None, search_attr_list=None, search_options=None):
        """
        MerchantLocatorpostPayload - a model defined in Swagger

        :param dict swaggerTypes: The key is attribute name
                                  and the value is attribute type.
        :param dict attributeMap: The key is attribute name
                                  and the value is json key in definition.
        """
        self.swagger_types = {
            'response_attr_list': 'str',
            'header': 'Header',
            'search_attr_list': 'SearchAttrList',
            'search_options': 'SearchOptions'
        }

        self.attribute_map = {
            'response_attr_list': 'responseAttrList',
            'header': 'header',
            'search_attr_list': 'searchAttrList',
            'search_options': 'searchOptions'
        }

        self._response_attr_list = response_attr_list
        self._header = header
        self._search_attr_list = search_attr_list
        self._search_options = search_options

    @property
    def response_attr_list(self):
        """
        Gets the response_attr_list of this MerchantLocatorpostPayload.
        oner or more of the Group Names assigned to the partner. Group Names define the attributes partners will receive in the response

        :return: The response_attr_list of this MerchantLocatorpostPayload.
        :rtype: str
        """
        return self._response_attr_list

    @response_attr_list.setter
    def response_attr_list(self, response_attr_list):
        """
        Sets the response_attr_list of this MerchantLocatorpostPayload.
        oner or more of the Group Names assigned to the partner. Group Names define the attributes partners will receive in the response

        :param response_attr_list: The response_attr_list of this MerchantLocatorpostPayload.
        :type: str
        """
        if response_attr_list is None:
            raise ValueError("Invalid value for `response_attr_list`, must not be `None`")

        self._response_attr_list = response_attr_list

    @property
    def header(self):
        """
        Gets the header of this MerchantLocatorpostPayload.

        :return: The header of this MerchantLocatorpostPayload.
        :rtype: Header
        """
        return self._header

    @header.setter
    def header(self, header):
        """
        Sets the header of this MerchantLocatorpostPayload.

        :param header: The header of this MerchantLocatorpostPayload.
        :type: Header
        """
        if header is None:
            raise ValueError("Invalid value for `header`, must not be `None`")

        self._header = header

    @property
    def search_attr_list(self):
        """
        Gets the search_attr_list of this MerchantLocatorpostPayload.

        :return: The search_attr_list of this MerchantLocatorpostPayload.
        :rtype: SearchAttrList
        """
        return self._search_attr_list

    @search_attr_list.setter
    def search_attr_list(self, search_attr_list):
        """
        Sets the search_attr_list of this MerchantLocatorpostPayload.

        :param search_attr_list: The search_attr_list of this MerchantLocatorpostPayload.
        :type: SearchAttrList
        """
        if search_attr_list is None:
            raise ValueError("Invalid value for `search_attr_list`, must not be `None`")

        self._search_attr_list = search_attr_list

    @property
    def search_options(self):
        """
        Gets the search_options of this MerchantLocatorpostPayload.

        :return: The search_options of this MerchantLocatorpostPayload.
        :rtype: SearchOptions
        """
        return self._search_options

    @search_options.setter
    def search_options(self, search_options):
        """
        Sets the search_options of this MerchantLocatorpostPayload.

        :param search_options: The search_options of this MerchantLocatorpostPayload.
        :type: SearchOptions
        """
        if search_options is None:
            raise ValueError("Invalid value for `search_options`, must not be `None`")

        self._search_options = search_options

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in 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

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return 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, MerchantLocatorpostPayload):
            return False

        return self.__dict__ == other.__dict__

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

# ----------------------------------------------------------------------------------------------------------------------
# © Copyright 2018 Visa. All Rights Reserved.
#
# NOTICE: The software and accompanying information and documentation (together, the “Software”) remain the property of
# and are proprietary to Visa and its suppliers and affiliates. The Software remains protected by intellectual property
# rights and may be covered by U.S. and foreign patents or patent applications. The Software is licensed and not sold.
#
# By accessing the Software you are agreeing to Visa's terms of use (developer.visa.com/terms) and privacy policy
# (developer.visa.com/privacy). In addition, all permissible uses of the Software must be in support of Visa products,
# programs and services provided through the Visa Developer Program (VDP) platform only (developer.visa.com).
# THE SOFTWARE AND ANY ASSOCIATED INFORMATION OR DOCUMENTATION IS PROVIDED ON AN “AS IS,” “AS AVAILABLE,” “WITH ALL
# FAULTS” BASIS WITHOUT WARRANTY OR CONDITION OF ANY KIND. YOUR USE IS AT YOUR OWN RISK.
# ----------------------------------------------------------------------------------------------------------------------