# coding: utf-8

"""
    CardPay REST API

    Welcome to the CardPay REST API. The CardPay API uses HTTP verbs and a [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) resources endpoint structure (see more info about REST). Request and response payloads are formatted as JSON. Merchant uses API to create payments, refunds, payouts or recurrings, check or update transaction status and get information about created transactions. In API authentication process based on [OAuth 2.0](https://oauth.net/2/) standard. For recent changes see changelog section.  # noqa: E501

    OpenAPI spec version: 3.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class DisputeResponseDisputeData(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_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.
    """
    swagger_types = {
        "due_time": "str",
        "group_id": "str",
        "reason_code": "str",
        "reason_description": "str",
        "reg_time": "str",
        "result_time": "str",
        "stage": "str",
        "status": "str",
        "type": "str",
    }

    attribute_map = {
        "due_time": "due_time",
        "group_id": "group_id",
        "reason_code": "reason_code",
        "reason_description": "reason_description",
        "reg_time": "reg_time",
        "result_time": "result_time",
        "stage": "stage",
        "status": "status",
        "type": "type",
    }

    def __init__(
        self,
        due_time=None,
        group_id=None,
        reason_code=None,
        reason_description=None,
        reg_time=None,
        result_time=None,
        stage=None,
        status=None,
        type=None,
    ):  # noqa: E501
        """DisputeResponseDisputeData - a model defined in Swagger"""  # noqa: E501

        self._due_time = None
        self._group_id = None
        self._reason_code = None
        self._reason_description = None
        self._reg_time = None
        self._result_time = None
        self._stage = None
        self._status = None
        self._type = None
        self.discriminator = None

        if due_time is not None:
            self.due_time = due_time
        if group_id is not None:
            self.group_id = group_id
        if reason_code is not None:
            self.reason_code = reason_code
        if reason_description is not None:
            self.reason_description = reason_description
        if reg_time is not None:
            self.reg_time = reg_time
        if result_time is not None:
            self.result_time = result_time
        if stage is not None:
            self.stage = stage
        if status is not None:
            self.status = status
        if type is not None:
            self.type = type

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

        Due date and time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format for making decision or action over chargeback/retrieval request, i.e accepting, disputing or providing evidence documents (format - yyyy-MM-dd'T'HH:mm:ss'Z')  # noqa: E501

        :return: The due_time of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._due_time

    @due_time.setter
    def due_time(self, due_time):
        """Sets the due_time of this DisputeResponseDisputeData.

        Due date and time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format for making decision or action over chargeback/retrieval request, i.e accepting, disputing or providing evidence documents (format - yyyy-MM-dd'T'HH:mm:ss'Z')  # noqa: E501

        :param due_time: The due_time of this DisputeResponseDisputeData.  # noqa: E501
        :type: str
        """

        self._due_time = due_time

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

        Dispute group ID in Disputes Resolution Center that includes returned dispute entity  # noqa: E501

        :return: The group_id of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._group_id

    @group_id.setter
    def group_id(self, group_id):
        """Sets the group_id of this DisputeResponseDisputeData.

        Dispute group ID in Disputes Resolution Center that includes returned dispute entity  # noqa: E501

        :param group_id: The group_id of this DisputeResponseDisputeData.  # noqa: E501
        :type: str
        """

        self._group_id = group_id

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

        Dispute's reason code  # noqa: E501

        :return: The reason_code of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._reason_code

    @reason_code.setter
    def reason_code(self, reason_code):
        """Sets the reason_code of this DisputeResponseDisputeData.

        Dispute's reason code  # noqa: E501

        :param reason_code: The reason_code of this DisputeResponseDisputeData.  # noqa: E501
        :type: str
        """

        self._reason_code = reason_code

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

        Dispute's reason code description  # noqa: E501

        :return: The reason_description of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._reason_description

    @reason_description.setter
    def reason_description(self, reason_description):
        """Sets the reason_description of this DisputeResponseDisputeData.

        Dispute's reason code description  # noqa: E501

        :param reason_description: The reason_description of this DisputeResponseDisputeData.  # noqa: E501
        :type: str
        """

        self._reason_description = reason_description

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

        Dispute registration date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (format - yyyy-MM-dd'T'HH:mm:ss'Z')  # noqa: E501

        :return: The reg_time of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._reg_time

    @reg_time.setter
    def reg_time(self, reg_time):
        """Sets the reg_time of this DisputeResponseDisputeData.

        Dispute registration date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (format - yyyy-MM-dd'T'HH:mm:ss'Z')  # noqa: E501

        :param reg_time: The reg_time of this DisputeResponseDisputeData.  # noqa: E501
        :type: str
        """

        self._reg_time = reg_time

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

        Dispute's terminal (final) status date and time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (format - yyyy-MM-dd'T'HH:mm:ss'Z')  # noqa: E501

        :return: The result_time of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._result_time

    @result_time.setter
    def result_time(self, result_time):
        """Sets the result_time of this DisputeResponseDisputeData.

        Dispute's terminal (final) status date and time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (format - yyyy-MM-dd'T'HH:mm:ss'Z')  # noqa: E501

        :param result_time: The result_time of this DisputeResponseDisputeData.  # noqa: E501
        :type: str
        """

        self._result_time = result_time

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

        Chargeback/retrieval request's current stage  # noqa: E501

        :return: The stage of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._stage

    @stage.setter
    def stage(self, stage):
        """Sets the stage of this DisputeResponseDisputeData.

        Chargeback/retrieval request's current stage  # noqa: E501

        :param stage: The stage of this DisputeResponseDisputeData.  # noqa: E501
        :type: str
        """

        self._stage = stage

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

        Chargeback/retrieval request's current status  # noqa: E501

        :return: The status of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this DisputeResponseDisputeData.

        Chargeback/retrieval request's current status  # noqa: E501

        :param status: The status of this DisputeResponseDisputeData.  # noqa: E501
        :type: str
        """

        self._status = status

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

        Indicates dispute entity type: `CB` - for chargebacks `RR` - for retrieval requests `FR` - for fraud reports  # noqa: E501

        :return: The type of this DisputeResponseDisputeData.  # noqa: E501
        :rtype: str
        """
        return self._type

    @type.setter
    def type(self, type):
        """Sets the type of this DisputeResponseDisputeData.

        Indicates dispute entity type: `CB` - for chargebacks `RR` - for retrieval requests `FR` - for fraud reports  # noqa: E501

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

        self._type = type

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_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:
                if value is not None:
                    result[attr] = value
        if issubclass(DisputeResponseDisputeData, dict):
            for key, value in self.items():
                result[key] = 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, DisputeResponseDisputeData):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
