# coding: utf-8

"""
    MailSlurp API

    MailSlurp is an API for sending and receiving emails and SMS from dynamically allocated email addresses and phone numbers. It's designed for developers and QA teams to test applications, process inbound emails, send templated notifications, attachments, and more.  ## Resources  - [Homepage](https://www.mailslurp.com) - Get an [API KEY](https://app.mailslurp.com/sign-up/) - Generated [SDK Clients](https://docs.mailslurp.com/) - [Examples](https://github.com/mailslurp/examples) repository  # noqa: E501

    The version of the OpenAPI document: 6.5.2
    Contact: contact@mailslurp.dev
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from mailslurp_client.configuration import Configuration


class CampaignProbeSeriesPointDto(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 = {
        'bucket_start': 'datetime',
        'run_count': 'int',
        'healthy_count': 'int',
        'warning_count': 'int',
        'failed_count': 'int',
        'healthy_rate': 'float',
        'average_health_score': 'float'
    }

    attribute_map = {
        'bucket_start': 'bucketStart',
        'run_count': 'runCount',
        'healthy_count': 'healthyCount',
        'warning_count': 'warningCount',
        'failed_count': 'failedCount',
        'healthy_rate': 'healthyRate',
        'average_health_score': 'averageHealthScore'
    }

    def __init__(self, bucket_start=None, run_count=None, healthy_count=None, warning_count=None, failed_count=None, healthy_rate=None, average_health_score=None, local_vars_configuration=None):  # noqa: E501
        """CampaignProbeSeriesPointDto - 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._bucket_start = None
        self._run_count = None
        self._healthy_count = None
        self._warning_count = None
        self._failed_count = None
        self._healthy_rate = None
        self._average_health_score = None
        self.discriminator = None

        self.bucket_start = bucket_start
        self.run_count = run_count
        self.healthy_count = healthy_count
        self.warning_count = warning_count
        self.failed_count = failed_count
        self.healthy_rate = healthy_rate
        self.average_health_score = average_health_score

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


        :return: The bucket_start of this CampaignProbeSeriesPointDto.  # noqa: E501
        :rtype: datetime
        """
        return self._bucket_start

    @bucket_start.setter
    def bucket_start(self, bucket_start):
        """Sets the bucket_start of this CampaignProbeSeriesPointDto.


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

        self._bucket_start = bucket_start

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


        :return: The run_count of this CampaignProbeSeriesPointDto.  # noqa: E501
        :rtype: int
        """
        return self._run_count

    @run_count.setter
    def run_count(self, run_count):
        """Sets the run_count of this CampaignProbeSeriesPointDto.


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

        self._run_count = run_count

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


        :return: The healthy_count of this CampaignProbeSeriesPointDto.  # noqa: E501
        :rtype: int
        """
        return self._healthy_count

    @healthy_count.setter
    def healthy_count(self, healthy_count):
        """Sets the healthy_count of this CampaignProbeSeriesPointDto.


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

        self._healthy_count = healthy_count

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


        :return: The warning_count of this CampaignProbeSeriesPointDto.  # noqa: E501
        :rtype: int
        """
        return self._warning_count

    @warning_count.setter
    def warning_count(self, warning_count):
        """Sets the warning_count of this CampaignProbeSeriesPointDto.


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

        self._warning_count = warning_count

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


        :return: The failed_count of this CampaignProbeSeriesPointDto.  # noqa: E501
        :rtype: int
        """
        return self._failed_count

    @failed_count.setter
    def failed_count(self, failed_count):
        """Sets the failed_count of this CampaignProbeSeriesPointDto.


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

        self._failed_count = failed_count

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


        :return: The healthy_rate of this CampaignProbeSeriesPointDto.  # noqa: E501
        :rtype: float
        """
        return self._healthy_rate

    @healthy_rate.setter
    def healthy_rate(self, healthy_rate):
        """Sets the healthy_rate of this CampaignProbeSeriesPointDto.


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

        self._healthy_rate = healthy_rate

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


        :return: The average_health_score of this CampaignProbeSeriesPointDto.  # noqa: E501
        :rtype: float
        """
        return self._average_health_score

    @average_health_score.setter
    def average_health_score(self, average_health_score):
        """Sets the average_health_score of this CampaignProbeSeriesPointDto.


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

        self._average_health_score = average_health_score

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

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