# 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 DeliverabilityAnalyticsSummaryDto(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 = {
        'total_runs': 'int',
        'complete_runs': 'int',
        'failed_runs': 'int',
        'stopped_runs': 'int',
        'running_runs': 'int',
        'scheduled_runs': 'int',
        'paused_runs': 'int',
        'created_runs': 'int',
        'threshold_configured_runs': 'int',
        'threshold_met_runs': 'int',
        'average_completion_percentage': 'float',
        'average_matched_entities': 'float',
        'average_unmatched_entities': 'float'
    }

    attribute_map = {
        'total_runs': 'totalRuns',
        'complete_runs': 'completeRuns',
        'failed_runs': 'failedRuns',
        'stopped_runs': 'stoppedRuns',
        'running_runs': 'runningRuns',
        'scheduled_runs': 'scheduledRuns',
        'paused_runs': 'pausedRuns',
        'created_runs': 'createdRuns',
        'threshold_configured_runs': 'thresholdConfiguredRuns',
        'threshold_met_runs': 'thresholdMetRuns',
        'average_completion_percentage': 'averageCompletionPercentage',
        'average_matched_entities': 'averageMatchedEntities',
        'average_unmatched_entities': 'averageUnmatchedEntities'
    }

    def __init__(self, total_runs=None, complete_runs=None, failed_runs=None, stopped_runs=None, running_runs=None, scheduled_runs=None, paused_runs=None, created_runs=None, threshold_configured_runs=None, threshold_met_runs=None, average_completion_percentage=None, average_matched_entities=None, average_unmatched_entities=None, local_vars_configuration=None):  # noqa: E501
        """DeliverabilityAnalyticsSummaryDto - 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._total_runs = None
        self._complete_runs = None
        self._failed_runs = None
        self._stopped_runs = None
        self._running_runs = None
        self._scheduled_runs = None
        self._paused_runs = None
        self._created_runs = None
        self._threshold_configured_runs = None
        self._threshold_met_runs = None
        self._average_completion_percentage = None
        self._average_matched_entities = None
        self._average_unmatched_entities = None
        self.discriminator = None

        self.total_runs = total_runs
        self.complete_runs = complete_runs
        self.failed_runs = failed_runs
        self.stopped_runs = stopped_runs
        self.running_runs = running_runs
        self.scheduled_runs = scheduled_runs
        self.paused_runs = paused_runs
        self.created_runs = created_runs
        self.threshold_configured_runs = threshold_configured_runs
        self.threshold_met_runs = threshold_met_runs
        self.average_completion_percentage = average_completion_percentage
        self.average_matched_entities = average_matched_entities
        self.average_unmatched_entities = average_unmatched_entities

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


        :return: The total_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._total_runs

    @total_runs.setter
    def total_runs(self, total_runs):
        """Sets the total_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._total_runs = total_runs

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


        :return: The complete_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._complete_runs

    @complete_runs.setter
    def complete_runs(self, complete_runs):
        """Sets the complete_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._complete_runs = complete_runs

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


        :return: The failed_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._failed_runs

    @failed_runs.setter
    def failed_runs(self, failed_runs):
        """Sets the failed_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._failed_runs = failed_runs

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


        :return: The stopped_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._stopped_runs

    @stopped_runs.setter
    def stopped_runs(self, stopped_runs):
        """Sets the stopped_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._stopped_runs = stopped_runs

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


        :return: The running_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._running_runs

    @running_runs.setter
    def running_runs(self, running_runs):
        """Sets the running_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._running_runs = running_runs

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


        :return: The scheduled_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._scheduled_runs

    @scheduled_runs.setter
    def scheduled_runs(self, scheduled_runs):
        """Sets the scheduled_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._scheduled_runs = scheduled_runs

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


        :return: The paused_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._paused_runs

    @paused_runs.setter
    def paused_runs(self, paused_runs):
        """Sets the paused_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._paused_runs = paused_runs

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


        :return: The created_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._created_runs

    @created_runs.setter
    def created_runs(self, created_runs):
        """Sets the created_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._created_runs = created_runs

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


        :return: The threshold_configured_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._threshold_configured_runs

    @threshold_configured_runs.setter
    def threshold_configured_runs(self, threshold_configured_runs):
        """Sets the threshold_configured_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._threshold_configured_runs = threshold_configured_runs

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


        :return: The threshold_met_runs of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: int
        """
        return self._threshold_met_runs

    @threshold_met_runs.setter
    def threshold_met_runs(self, threshold_met_runs):
        """Sets the threshold_met_runs of this DeliverabilityAnalyticsSummaryDto.


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

        self._threshold_met_runs = threshold_met_runs

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


        :return: The average_completion_percentage of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: float
        """
        return self._average_completion_percentage

    @average_completion_percentage.setter
    def average_completion_percentage(self, average_completion_percentage):
        """Sets the average_completion_percentage of this DeliverabilityAnalyticsSummaryDto.


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

        self._average_completion_percentage = average_completion_percentage

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


        :return: The average_matched_entities of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: float
        """
        return self._average_matched_entities

    @average_matched_entities.setter
    def average_matched_entities(self, average_matched_entities):
        """Sets the average_matched_entities of this DeliverabilityAnalyticsSummaryDto.


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

        self._average_matched_entities = average_matched_entities

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


        :return: The average_unmatched_entities of this DeliverabilityAnalyticsSummaryDto.  # noqa: E501
        :rtype: float
        """
        return self._average_unmatched_entities

    @average_unmatched_entities.setter
    def average_unmatched_entities(self, average_unmatched_entities):
        """Sets the average_unmatched_entities of this DeliverabilityAnalyticsSummaryDto.


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

        self._average_unmatched_entities = average_unmatched_entities

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

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