# 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 UpdateDevicePreviewFeedbackOptions(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 = {
        'status': 'str',
        'rating': 'int',
        'title': 'str',
        'comment': 'str',
        'internal_note': 'str',
        'append_internal_note': 'bool',
        'session_id': 'str',
        'live_view_url': 'str',
        'metadata': 'dict(str, str)'
    }

    attribute_map = {
        'status': 'status',
        'rating': 'rating',
        'title': 'title',
        'comment': 'comment',
        'internal_note': 'internalNote',
        'append_internal_note': 'appendInternalNote',
        'session_id': 'sessionId',
        'live_view_url': 'liveViewUrl',
        'metadata': 'metadata'
    }

    def __init__(self, status=None, rating=None, title=None, comment=None, internal_note=None, append_internal_note=None, session_id=None, live_view_url=None, metadata=None, local_vars_configuration=None):  # noqa: E501
        """UpdateDevicePreviewFeedbackOptions - 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._status = None
        self._rating = None
        self._title = None
        self._comment = None
        self._internal_note = None
        self._append_internal_note = None
        self._session_id = None
        self._live_view_url = None
        self._metadata = None
        self.discriminator = None

        if status is not None:
            self.status = status
        if rating is not None:
            self.rating = rating
        if title is not None:
            self.title = title
        if comment is not None:
            self.comment = comment
        if internal_note is not None:
            self.internal_note = internal_note
        if append_internal_note is not None:
            self.append_internal_note = append_internal_note
        if session_id is not None:
            self.session_id = session_id
        if live_view_url is not None:
            self.live_view_url = live_view_url
        if metadata is not None:
            self.metadata = metadata

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


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

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


        :param status: The status of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :type: str
        """
        allowed_values = ["OPEN", "ACKNOWLEDGED", "RESOLVED", "DISMISSED"]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and status not in allowed_values:  # noqa: E501
            raise ValueError(
                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
                .format(status, allowed_values)
            )

        self._status = status

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


        :return: The rating of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :rtype: int
        """
        return self._rating

    @rating.setter
    def rating(self, rating):
        """Sets the rating of this UpdateDevicePreviewFeedbackOptions.


        :param rating: The rating of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :type: int
        """

        self._rating = rating

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


        :return: The title of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title):
        """Sets the title of this UpdateDevicePreviewFeedbackOptions.


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

        self._title = title

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


        :return: The comment of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :rtype: str
        """
        return self._comment

    @comment.setter
    def comment(self, comment):
        """Sets the comment of this UpdateDevicePreviewFeedbackOptions.


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

        self._comment = comment

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


        :return: The internal_note of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :rtype: str
        """
        return self._internal_note

    @internal_note.setter
    def internal_note(self, internal_note):
        """Sets the internal_note of this UpdateDevicePreviewFeedbackOptions.


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

        self._internal_note = internal_note

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


        :return: The append_internal_note of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :rtype: bool
        """
        return self._append_internal_note

    @append_internal_note.setter
    def append_internal_note(self, append_internal_note):
        """Sets the append_internal_note of this UpdateDevicePreviewFeedbackOptions.


        :param append_internal_note: The append_internal_note of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :type: bool
        """

        self._append_internal_note = append_internal_note

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


        :return: The session_id of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :rtype: str
        """
        return self._session_id

    @session_id.setter
    def session_id(self, session_id):
        """Sets the session_id of this UpdateDevicePreviewFeedbackOptions.


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

        self._session_id = session_id

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


        :return: The live_view_url of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :rtype: str
        """
        return self._live_view_url

    @live_view_url.setter
    def live_view_url(self, live_view_url):
        """Sets the live_view_url of this UpdateDevicePreviewFeedbackOptions.


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

        self._live_view_url = live_view_url

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


        :return: The metadata of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :rtype: dict(str, str)
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this UpdateDevicePreviewFeedbackOptions.


        :param metadata: The metadata of this UpdateDevicePreviewFeedbackOptions.  # noqa: E501
        :type: dict(str, str)
        """

        self._metadata = metadata

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

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