# 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 DomainMonitorRunComparisonDto(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 = {
        'baseline': 'DomainMonitorRunDto',
        'current': 'DomainMonitorRunDto',
        'health_score_delta': 'int',
        'status_changed': 'bool',
        'passing_checks_delta': 'int',
        'failing_checks_delta': 'int',
        'spf_changed': 'bool',
        'dmarc_changed': 'bool',
        'dmarc_enforced_changed': 'bool',
        'mx_changed': 'bool',
        'added_insights': 'list[str]',
        'removed_insights': 'list[str]'
    }

    attribute_map = {
        'baseline': 'baseline',
        'current': 'current',
        'health_score_delta': 'healthScoreDelta',
        'status_changed': 'statusChanged',
        'passing_checks_delta': 'passingChecksDelta',
        'failing_checks_delta': 'failingChecksDelta',
        'spf_changed': 'spfChanged',
        'dmarc_changed': 'dmarcChanged',
        'dmarc_enforced_changed': 'dmarcEnforcedChanged',
        'mx_changed': 'mxChanged',
        'added_insights': 'addedInsights',
        'removed_insights': 'removedInsights'
    }

    def __init__(self, baseline=None, current=None, health_score_delta=None, status_changed=None, passing_checks_delta=None, failing_checks_delta=None, spf_changed=None, dmarc_changed=None, dmarc_enforced_changed=None, mx_changed=None, added_insights=None, removed_insights=None, local_vars_configuration=None):  # noqa: E501
        """DomainMonitorRunComparisonDto - 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._baseline = None
        self._current = None
        self._health_score_delta = None
        self._status_changed = None
        self._passing_checks_delta = None
        self._failing_checks_delta = None
        self._spf_changed = None
        self._dmarc_changed = None
        self._dmarc_enforced_changed = None
        self._mx_changed = None
        self._added_insights = None
        self._removed_insights = None
        self.discriminator = None

        self.baseline = baseline
        self.current = current
        self.health_score_delta = health_score_delta
        self.status_changed = status_changed
        self.passing_checks_delta = passing_checks_delta
        self.failing_checks_delta = failing_checks_delta
        self.spf_changed = spf_changed
        self.dmarc_changed = dmarc_changed
        self.dmarc_enforced_changed = dmarc_enforced_changed
        self.mx_changed = mx_changed
        self.added_insights = added_insights
        self.removed_insights = removed_insights

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


        :return: The baseline of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: DomainMonitorRunDto
        """
        return self._baseline

    @baseline.setter
    def baseline(self, baseline):
        """Sets the baseline of this DomainMonitorRunComparisonDto.


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

        self._baseline = baseline

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


        :return: The current of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: DomainMonitorRunDto
        """
        return self._current

    @current.setter
    def current(self, current):
        """Sets the current of this DomainMonitorRunComparisonDto.


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

        self._current = current

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


        :return: The health_score_delta of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._health_score_delta

    @health_score_delta.setter
    def health_score_delta(self, health_score_delta):
        """Sets the health_score_delta of this DomainMonitorRunComparisonDto.


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

        self._health_score_delta = health_score_delta

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


        :return: The status_changed of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: bool
        """
        return self._status_changed

    @status_changed.setter
    def status_changed(self, status_changed):
        """Sets the status_changed of this DomainMonitorRunComparisonDto.


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

        self._status_changed = status_changed

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


        :return: The passing_checks_delta of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._passing_checks_delta

    @passing_checks_delta.setter
    def passing_checks_delta(self, passing_checks_delta):
        """Sets the passing_checks_delta of this DomainMonitorRunComparisonDto.


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

        self._passing_checks_delta = passing_checks_delta

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


        :return: The failing_checks_delta of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._failing_checks_delta

    @failing_checks_delta.setter
    def failing_checks_delta(self, failing_checks_delta):
        """Sets the failing_checks_delta of this DomainMonitorRunComparisonDto.


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

        self._failing_checks_delta = failing_checks_delta

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


        :return: The spf_changed of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: bool
        """
        return self._spf_changed

    @spf_changed.setter
    def spf_changed(self, spf_changed):
        """Sets the spf_changed of this DomainMonitorRunComparisonDto.


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

        self._spf_changed = spf_changed

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


        :return: The dmarc_changed of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: bool
        """
        return self._dmarc_changed

    @dmarc_changed.setter
    def dmarc_changed(self, dmarc_changed):
        """Sets the dmarc_changed of this DomainMonitorRunComparisonDto.


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

        self._dmarc_changed = dmarc_changed

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


        :return: The dmarc_enforced_changed of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: bool
        """
        return self._dmarc_enforced_changed

    @dmarc_enforced_changed.setter
    def dmarc_enforced_changed(self, dmarc_enforced_changed):
        """Sets the dmarc_enforced_changed of this DomainMonitorRunComparisonDto.


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

        self._dmarc_enforced_changed = dmarc_enforced_changed

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


        :return: The mx_changed of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: bool
        """
        return self._mx_changed

    @mx_changed.setter
    def mx_changed(self, mx_changed):
        """Sets the mx_changed of this DomainMonitorRunComparisonDto.


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

        self._mx_changed = mx_changed

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


        :return: The added_insights of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: list[str]
        """
        return self._added_insights

    @added_insights.setter
    def added_insights(self, added_insights):
        """Sets the added_insights of this DomainMonitorRunComparisonDto.


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

        self._added_insights = added_insights

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


        :return: The removed_insights of this DomainMonitorRunComparisonDto.  # noqa: E501
        :rtype: list[str]
        """
        return self._removed_insights

    @removed_insights.setter
    def removed_insights(self, removed_insights):
        """Sets the removed_insights of this DomainMonitorRunComparisonDto.


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

        self._removed_insights = removed_insights

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

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