# coding: utf-8

"""
    Yahoo!広告 検索広告 API リファレンス / Yahoo! JAPAN Ads Search Ads API Reference

    <div lang=\"ja\">Yahoo!広告 検索広告 APIのWebサービスについて説明します。</div> <div lang=\"en\">Search Ads API Web Services supported in Yahoo! JAPAN Ads API.</div> <div><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-search-api-documents/blob/master/design/v12/Route.yaml\">OpenAPI Specification</a></div> <div lang=\"ja\"><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-search-api-documents/blob/master/bestpractice/ja\">Best Practice</a></div> <div lang=\"en\"><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-search-api-documents/blob/master/bestpractice/en\">Best Practice</a></div>   # noqa: E501

    The version of the OpenAPI document: v12
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from yahoo_search_api_v12.configuration import Configuration


class CampaignServiceBiddingStrategy(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 = {
        'bidding_scheme': 'CampaignServiceBiddingScheme',
        'portfolio_bidding_id': 'int',
        'portfolio_bidding_name': 'str',
        'bidding_strategy_source': 'CampaignServiceBiddingStrategySource'
    }

    attribute_map = {
        'bidding_scheme': 'biddingScheme',
        'portfolio_bidding_id': 'portfolioBiddingId',
        'portfolio_bidding_name': 'portfolioBiddingName',
        'bidding_strategy_source': 'biddingStrategySource'
    }

    def __init__(self, bidding_scheme=None, portfolio_bidding_id=None, portfolio_bidding_name=None, bidding_strategy_source=None, local_vars_configuration=None):  # noqa: E501
        """CampaignServiceBiddingStrategy - 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._bidding_scheme = None
        self._portfolio_bidding_id = None
        self._portfolio_bidding_name = None
        self._bidding_strategy_source = None
        self.discriminator = None

        self.bidding_scheme = bidding_scheme
        self.portfolio_bidding_id = portfolio_bidding_id
        self.portfolio_bidding_name = portfolio_bidding_name
        self.bidding_strategy_source = bidding_strategy_source

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


        :return: The bidding_scheme of this CampaignServiceBiddingStrategy.  # noqa: E501
        :rtype: CampaignServiceBiddingScheme
        """
        return self._bidding_scheme

    @bidding_scheme.setter
    def bidding_scheme(self, bidding_scheme):
        """Sets the bidding_scheme of this CampaignServiceBiddingStrategy.


        :param bidding_scheme: The bidding_scheme of this CampaignServiceBiddingStrategy.  # noqa: E501
        :type: CampaignServiceBiddingScheme
        """

        self._bidding_scheme = bidding_scheme

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

        <div lang=\"ja\">ポートフォリオ入札IDです。<br> ADD時、標準入札設定の場合、このフィールドは設定不可となり、ポートフォリオ入札設定の場合、必須となります。また、biddingSchemeと同時に設定することはできません。</div> <div lang=\"en\">Portfolio bidding ID.<br> This field cannot be specified when Standard bidding is setting, and is required when Portfolio bidding is setting in ADD operation. It cannot be specified at the same times as biddingScheme.</div>   # noqa: E501

        :return: The portfolio_bidding_id of this CampaignServiceBiddingStrategy.  # noqa: E501
        :rtype: int
        """
        return self._portfolio_bidding_id

    @portfolio_bidding_id.setter
    def portfolio_bidding_id(self, portfolio_bidding_id):
        """Sets the portfolio_bidding_id of this CampaignServiceBiddingStrategy.

        <div lang=\"ja\">ポートフォリオ入札IDです。<br> ADD時、標準入札設定の場合、このフィールドは設定不可となり、ポートフォリオ入札設定の場合、必須となります。また、biddingSchemeと同時に設定することはできません。</div> <div lang=\"en\">Portfolio bidding ID.<br> This field cannot be specified when Standard bidding is setting, and is required when Portfolio bidding is setting in ADD operation. It cannot be specified at the same times as biddingScheme.</div>   # noqa: E501

        :param portfolio_bidding_id: The portfolio_bidding_id of this CampaignServiceBiddingStrategy.  # noqa: E501
        :type: int
        """

        self._portfolio_bidding_id = portfolio_bidding_id

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

        <div lang=\"ja\">ポートフォリオ入札名です。<br> ADD時、このフィールドは無視されます。<br> ※50文字以内になります。</div> <div lang=\"en\">Portfolio bidding name.<br> This field will be ignored in ADD operation.<br>* Up to 50 characters.</div>   # noqa: E501

        :return: The portfolio_bidding_name of this CampaignServiceBiddingStrategy.  # noqa: E501
        :rtype: str
        """
        return self._portfolio_bidding_name

    @portfolio_bidding_name.setter
    def portfolio_bidding_name(self, portfolio_bidding_name):
        """Sets the portfolio_bidding_name of this CampaignServiceBiddingStrategy.

        <div lang=\"ja\">ポートフォリオ入札名です。<br> ADD時、このフィールドは無視されます。<br> ※50文字以内になります。</div> <div lang=\"en\">Portfolio bidding name.<br> This field will be ignored in ADD operation.<br>* Up to 50 characters.</div>   # noqa: E501

        :param portfolio_bidding_name: The portfolio_bidding_name of this CampaignServiceBiddingStrategy.  # noqa: E501
        :type: str
        """

        self._portfolio_bidding_name = portfolio_bidding_name

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


        :return: The bidding_strategy_source of this CampaignServiceBiddingStrategy.  # noqa: E501
        :rtype: CampaignServiceBiddingStrategySource
        """
        return self._bidding_strategy_source

    @bidding_strategy_source.setter
    def bidding_strategy_source(self, bidding_strategy_source):
        """Sets the bidding_strategy_source of this CampaignServiceBiddingStrategy.


        :param bidding_strategy_source: The bidding_strategy_source of this CampaignServiceBiddingStrategy.  # noqa: E501
        :type: CampaignServiceBiddingStrategySource
        """

        self._bidding_strategy_source = bidding_strategy_source

    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, CampaignServiceBiddingStrategy):
            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, CampaignServiceBiddingStrategy):
            return True

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