# 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 CampaignProbeRunComparisonDto(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': 'CampaignProbeRunDto',
        'current': 'CampaignProbeRunDto',
        'health_score_delta': 'int',
        'status_changed': 'bool',
        'link_issue_delta': 'int',
        'image_issue_delta': 'int',
        'compatibility_warning_delta': 'int',
        'compatibility_not_supported_delta': 'int',
        'html_error_delta': 'int',
        'html_warning_delta': 'int',
        'reputation_failure_delta': 'int',
        'attachment_mention_issue_delta': 'int',
        'added_insights': 'list[str]',
        'removed_insights': 'list[str]'
    }

    attribute_map = {
        'baseline': 'baseline',
        'current': 'current',
        'health_score_delta': 'healthScoreDelta',
        'status_changed': 'statusChanged',
        'link_issue_delta': 'linkIssueDelta',
        'image_issue_delta': 'imageIssueDelta',
        'compatibility_warning_delta': 'compatibilityWarningDelta',
        'compatibility_not_supported_delta': 'compatibilityNotSupportedDelta',
        'html_error_delta': 'htmlErrorDelta',
        'html_warning_delta': 'htmlWarningDelta',
        'reputation_failure_delta': 'reputationFailureDelta',
        'attachment_mention_issue_delta': 'attachmentMentionIssueDelta',
        'added_insights': 'addedInsights',
        'removed_insights': 'removedInsights'
    }

    def __init__(self, baseline=None, current=None, health_score_delta=None, status_changed=None, link_issue_delta=None, image_issue_delta=None, compatibility_warning_delta=None, compatibility_not_supported_delta=None, html_error_delta=None, html_warning_delta=None, reputation_failure_delta=None, attachment_mention_issue_delta=None, added_insights=None, removed_insights=None, local_vars_configuration=None):  # noqa: E501
        """CampaignProbeRunComparisonDto - 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._link_issue_delta = None
        self._image_issue_delta = None
        self._compatibility_warning_delta = None
        self._compatibility_not_supported_delta = None
        self._html_error_delta = None
        self._html_warning_delta = None
        self._reputation_failure_delta = None
        self._attachment_mention_issue_delta = 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.link_issue_delta = link_issue_delta
        self.image_issue_delta = image_issue_delta
        self.compatibility_warning_delta = compatibility_warning_delta
        self.compatibility_not_supported_delta = compatibility_not_supported_delta
        self.html_error_delta = html_error_delta
        self.html_warning_delta = html_warning_delta
        self.reputation_failure_delta = reputation_failure_delta
        self.attachment_mention_issue_delta = attachment_mention_issue_delta
        self.added_insights = added_insights
        self.removed_insights = removed_insights

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


        :return: The baseline of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: CampaignProbeRunDto
        """
        return self._baseline

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


        :param baseline: The baseline of this CampaignProbeRunComparisonDto.  # noqa: E501
        :type: CampaignProbeRunDto
        """
        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 CampaignProbeRunComparisonDto.  # noqa: E501


        :return: The current of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: CampaignProbeRunDto
        """
        return self._current

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


        :param current: The current of this CampaignProbeRunComparisonDto.  # noqa: E501
        :type: CampaignProbeRunDto
        """
        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 CampaignProbeRunComparisonDto.  # noqa: E501


        :return: The health_score_delta of this CampaignProbeRunComparisonDto.  # 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 CampaignProbeRunComparisonDto.


        :param health_score_delta: The health_score_delta of this CampaignProbeRunComparisonDto.  # 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 CampaignProbeRunComparisonDto.  # noqa: E501


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

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


        :param status_changed: The status_changed of this CampaignProbeRunComparisonDto.  # 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 link_issue_delta(self):
        """Gets the link_issue_delta of this CampaignProbeRunComparisonDto.  # noqa: E501


        :return: The link_issue_delta of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._link_issue_delta

    @link_issue_delta.setter
    def link_issue_delta(self, link_issue_delta):
        """Sets the link_issue_delta of this CampaignProbeRunComparisonDto.


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

        self._link_issue_delta = link_issue_delta

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


        :return: The image_issue_delta of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._image_issue_delta

    @image_issue_delta.setter
    def image_issue_delta(self, image_issue_delta):
        """Sets the image_issue_delta of this CampaignProbeRunComparisonDto.


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

        self._image_issue_delta = image_issue_delta

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


        :return: The compatibility_warning_delta of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._compatibility_warning_delta

    @compatibility_warning_delta.setter
    def compatibility_warning_delta(self, compatibility_warning_delta):
        """Sets the compatibility_warning_delta of this CampaignProbeRunComparisonDto.


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

        self._compatibility_warning_delta = compatibility_warning_delta

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


        :return: The compatibility_not_supported_delta of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._compatibility_not_supported_delta

    @compatibility_not_supported_delta.setter
    def compatibility_not_supported_delta(self, compatibility_not_supported_delta):
        """Sets the compatibility_not_supported_delta of this CampaignProbeRunComparisonDto.


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

        self._compatibility_not_supported_delta = compatibility_not_supported_delta

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


        :return: The html_error_delta of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._html_error_delta

    @html_error_delta.setter
    def html_error_delta(self, html_error_delta):
        """Sets the html_error_delta of this CampaignProbeRunComparisonDto.


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

        self._html_error_delta = html_error_delta

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


        :return: The html_warning_delta of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._html_warning_delta

    @html_warning_delta.setter
    def html_warning_delta(self, html_warning_delta):
        """Sets the html_warning_delta of this CampaignProbeRunComparisonDto.


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

        self._html_warning_delta = html_warning_delta

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


        :return: The reputation_failure_delta of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._reputation_failure_delta

    @reputation_failure_delta.setter
    def reputation_failure_delta(self, reputation_failure_delta):
        """Sets the reputation_failure_delta of this CampaignProbeRunComparisonDto.


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

        self._reputation_failure_delta = reputation_failure_delta

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


        :return: The attachment_mention_issue_delta of this CampaignProbeRunComparisonDto.  # noqa: E501
        :rtype: int
        """
        return self._attachment_mention_issue_delta

    @attachment_mention_issue_delta.setter
    def attachment_mention_issue_delta(self, attachment_mention_issue_delta):
        """Sets the attachment_mention_issue_delta of this CampaignProbeRunComparisonDto.


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

        self._attachment_mention_issue_delta = attachment_mention_issue_delta

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


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

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


        :param added_insights: The added_insights of this CampaignProbeRunComparisonDto.  # 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 CampaignProbeRunComparisonDto.  # noqa: E501


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

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


        :param removed_insights: The removed_insights of this CampaignProbeRunComparisonDto.  # 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, CampaignProbeRunComparisonDto):
            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, CampaignProbeRunComparisonDto):
            return True

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