# coding: utf-8

"""
    Sparks OpenAPI

    Generated documentation for the Logicdrop Sparks API and OpenAPI clients.  Logicdrop Sparks lets users build rules, analyze data, and automate documents.  Use it to make decisions faster, generate documents better, and learn from your data.  ### Documentation - [User Documentation](https://docs.logicdrop.com)  ### Modules - [Sparks Compute](https://docs.logicdrop.com/rules/introduction) - [Sparks Decision Tables](https://docs.logicdrop.com/rules/authoring-decision-tables) - [Sparks Documents](https://docs.logicdrop.com/documents/introduction)  ### Clients - [OpenAPI Clients](https://docs.logicdrop.com/development/sample-clients)  ### Security - [Authorizing API Requests](https://docs.logicdrop.com/development/authorization)   # noqa: E501

    The version of the OpenAPI document: v_VERSION_._BUILD_
    Contact: support@logicdrop.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from logicdrop.sparks.openapi.configuration import Configuration


class ClientRegistration(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'subscription': 'str',
        'client_name': 'str',
        'coupon_code': 'str',
        'referrer': 'str',
        'campaign': 'str',
        'subscriber_id': 'str',
        'email': 'str',
        'picture': 'str',
        'name': 'str',
        'company_name': 'str',
        'meta_employees': 'str',
        'meta_role': 'str',
        'meta_challenge': 'str',
        'address1': 'str',
        'address2': 'str',
        'city': 'str',
        'state': 'str',
        'postal_code': 'str',
        'country': 'str',
        'phone_number': 'str',
        'stripe_customer_id': 'str',
        'stripe_subscription_id': 'str'
    }

    attribute_map = {
        'subscription': 'subscription',
        'client_name': 'clientName',
        'coupon_code': 'couponCode',
        'referrer': 'referrer',
        'campaign': 'campaign',
        'subscriber_id': 'subscriberId',
        'email': 'email',
        'picture': 'picture',
        'name': 'name',
        'company_name': 'companyName',
        'meta_employees': 'metaEmployees',
        'meta_role': 'metaRole',
        'meta_challenge': 'metaChallenge',
        'address1': 'address1',
        'address2': 'address2',
        'city': 'city',
        'state': 'state',
        'postal_code': 'postalCode',
        'country': 'country',
        'phone_number': 'phoneNumber',
        'stripe_customer_id': 'stripeCustomerId',
        'stripe_subscription_id': 'stripeSubscriptionId'
    }

    def __init__(self, subscription=None, client_name=None, coupon_code=None, referrer=None, campaign=None, subscriber_id=None, email=None, picture=None, name=None, company_name=None, meta_employees=None, meta_role=None, meta_challenge=None, address1=None, address2=None, city=None, state=None, postal_code=None, country=None, phone_number=None, stripe_customer_id=None, stripe_subscription_id=None, local_vars_configuration=None):  # noqa: E501
        """ClientRegistration - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._subscription = None
        self._client_name = None
        self._coupon_code = None
        self._referrer = None
        self._campaign = None
        self._subscriber_id = None
        self._email = None
        self._picture = None
        self._name = None
        self._company_name = None
        self._meta_employees = None
        self._meta_role = None
        self._meta_challenge = None
        self._address1 = None
        self._address2 = None
        self._city = None
        self._state = None
        self._postal_code = None
        self._country = None
        self._phone_number = None
        self._stripe_customer_id = None
        self._stripe_subscription_id = None
        self.discriminator = None

        self.subscription = subscription
        self.client_name = client_name
        if coupon_code is not None:
            self.coupon_code = coupon_code
        if referrer is not None:
            self.referrer = referrer
        if campaign is not None:
            self.campaign = campaign
        if subscriber_id is not None:
            self.subscriber_id = subscriber_id
        if email is not None:
            self.email = email
        if picture is not None:
            self.picture = picture
        if name is not None:
            self.name = name
        if company_name is not None:
            self.company_name = company_name
        if meta_employees is not None:
            self.meta_employees = meta_employees
        if meta_role is not None:
            self.meta_role = meta_role
        if meta_challenge is not None:
            self.meta_challenge = meta_challenge
        if address1 is not None:
            self.address1 = address1
        if address2 is not None:
            self.address2 = address2
        if city is not None:
            self.city = city
        if state is not None:
            self.state = state
        if postal_code is not None:
            self.postal_code = postal_code
        if country is not None:
            self.country = country
        if phone_number is not None:
            self.phone_number = phone_number
        if stripe_customer_id is not None:
            self.stripe_customer_id = stripe_customer_id
        if stripe_subscription_id is not None:
            self.stripe_subscription_id = stripe_subscription_id

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


        :return: The subscription of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._subscription

    @subscription.setter
    def subscription(self, subscription):
        """Sets the subscription of this ClientRegistration.


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

        self._subscription = subscription

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


        :return: The client_name of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._client_name

    @client_name.setter
    def client_name(self, client_name):
        """Sets the client_name of this ClientRegistration.


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

        self._client_name = client_name

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


        :return: The coupon_code of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._coupon_code

    @coupon_code.setter
    def coupon_code(self, coupon_code):
        """Sets the coupon_code of this ClientRegistration.


        :param coupon_code: The coupon_code of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._coupon_code = coupon_code

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


        :return: The referrer of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._referrer

    @referrer.setter
    def referrer(self, referrer):
        """Sets the referrer of this ClientRegistration.


        :param referrer: The referrer of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._referrer = referrer

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


        :return: The campaign of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._campaign

    @campaign.setter
    def campaign(self, campaign):
        """Sets the campaign of this ClientRegistration.


        :param campaign: The campaign of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._campaign = campaign

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


        :return: The subscriber_id of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._subscriber_id

    @subscriber_id.setter
    def subscriber_id(self, subscriber_id):
        """Sets the subscriber_id of this ClientRegistration.


        :param subscriber_id: The subscriber_id of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._subscriber_id = subscriber_id

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


        :return: The email of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._email

    @email.setter
    def email(self, email):
        """Sets the email of this ClientRegistration.


        :param email: The email of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._email = email

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


        :return: The picture of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._picture

    @picture.setter
    def picture(self, picture):
        """Sets the picture of this ClientRegistration.


        :param picture: The picture of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._picture = picture

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


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

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


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

        self._name = name

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


        :return: The company_name of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._company_name

    @company_name.setter
    def company_name(self, company_name):
        """Sets the company_name of this ClientRegistration.


        :param company_name: The company_name of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._company_name = company_name

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


        :return: The meta_employees of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._meta_employees

    @meta_employees.setter
    def meta_employees(self, meta_employees):
        """Sets the meta_employees of this ClientRegistration.


        :param meta_employees: The meta_employees of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._meta_employees = meta_employees

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


        :return: The meta_role of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._meta_role

    @meta_role.setter
    def meta_role(self, meta_role):
        """Sets the meta_role of this ClientRegistration.


        :param meta_role: The meta_role of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._meta_role = meta_role

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


        :return: The meta_challenge of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._meta_challenge

    @meta_challenge.setter
    def meta_challenge(self, meta_challenge):
        """Sets the meta_challenge of this ClientRegistration.


        :param meta_challenge: The meta_challenge of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._meta_challenge = meta_challenge

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


        :return: The address1 of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._address1

    @address1.setter
    def address1(self, address1):
        """Sets the address1 of this ClientRegistration.


        :param address1: The address1 of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._address1 = address1

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


        :return: The address2 of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._address2

    @address2.setter
    def address2(self, address2):
        """Sets the address2 of this ClientRegistration.


        :param address2: The address2 of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._address2 = address2

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


        :return: The city of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._city

    @city.setter
    def city(self, city):
        """Sets the city of this ClientRegistration.


        :param city: The city of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._city = city

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


        :return: The state of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._state

    @state.setter
    def state(self, state):
        """Sets the state of this ClientRegistration.


        :param state: The state of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._state = state

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


        :return: The postal_code of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._postal_code

    @postal_code.setter
    def postal_code(self, postal_code):
        """Sets the postal_code of this ClientRegistration.


        :param postal_code: The postal_code of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._postal_code = postal_code

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


        :return: The country of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._country

    @country.setter
    def country(self, country):
        """Sets the country of this ClientRegistration.


        :param country: The country of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._country = country

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


        :return: The phone_number of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._phone_number

    @phone_number.setter
    def phone_number(self, phone_number):
        """Sets the phone_number of this ClientRegistration.


        :param phone_number: The phone_number of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._phone_number = phone_number

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


        :return: The stripe_customer_id of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._stripe_customer_id

    @stripe_customer_id.setter
    def stripe_customer_id(self, stripe_customer_id):
        """Sets the stripe_customer_id of this ClientRegistration.


        :param stripe_customer_id: The stripe_customer_id of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._stripe_customer_id = stripe_customer_id

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


        :return: The stripe_subscription_id of this ClientRegistration.  # noqa: E501
        :rtype: str
        """
        return self._stripe_subscription_id

    @stripe_subscription_id.setter
    def stripe_subscription_id(self, stripe_subscription_id):
        """Sets the stripe_subscription_id of this ClientRegistration.


        :param stripe_subscription_id: The stripe_subscription_id of this ClientRegistration.  # noqa: E501
        :type: str
        """

        self._stripe_subscription_id = stripe_subscription_id

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

        for attr, _ in six.iteritems(self.openapi_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 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, ClientRegistration):
            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, ClientRegistration):
            return True

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