# coding: utf-8

"""
    NetSuite REST Record API

    NetSuite REST Record API generated 2023-02-11 at 17:13:58 UTC for account 472052_SB1, user will@theapiguys.com with role Keap Integration.  # noqa: E501

    OpenAPI spec version: v1
    Contact: info@netsuite.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class Message(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 = {
        'has_attachment': 'bool',
        'cc': 'str',
        'incoming': 'bool',
        'html_message': 'bool',
        'recipient_email': 'str',
        'author_email': 'str',
        'bcc': 'str',
        'subject': 'str',
        'emailed': 'bool',
        'last_modified_date': 'datetime',
        'external_id': 'str',
        'message_date': 'date',
        'message': 'str',
        'record': 'str',
        'record_type': 'str',
        'id': 'str',
        'time': 'str',
        'ref_name': 'str',
        'links': 'list[NsLink]',
        'recipient': 'OneOfmessageRecipient',
        'author': 'OneOfmessageAuthor',
        'activity': 'NsResource',
        'template': 'NsResource',
        'primary_recipient': 'OneOfmessagePrimaryRecipient',
        'transaction': 'NsResource',
        'entity': 'OneOfmessageEntity'
    }

    attribute_map = {
        'has_attachment': 'hasAttachment',
        'cc': 'cc',
        'incoming': 'incoming',
        'html_message': 'htmlMessage',
        'recipient_email': 'recipientEmail',
        'author_email': 'authorEmail',
        'bcc': 'bcc',
        'subject': 'subject',
        'emailed': 'emailed',
        'last_modified_date': 'lastModifiedDate',
        'external_id': 'externalId',
        'message_date': 'messageDate',
        'message': 'message',
        'record': 'record',
        'record_type': 'recordType',
        'id': 'id',
        'time': 'time',
        'ref_name': 'refName',
        'links': 'links',
        'recipient': 'recipient',
        'author': 'author',
        'activity': 'activity',
        'template': 'template',
        'primary_recipient': 'primaryRecipient',
        'transaction': 'transaction',
        'entity': 'entity'
    }

    def __init__(self, has_attachment=None, cc=None, incoming=None, html_message=None, recipient_email=None, author_email=None, bcc=None, subject=None, emailed=None, last_modified_date=None, external_id=None, message_date=None, message=None, record=None, record_type=None, id=None, time=None, ref_name=None, links=None, recipient=None, author=None, activity=None, template=None, primary_recipient=None, transaction=None, entity=None):  # noqa: E501
        """Message - a model defined in Swagger"""  # noqa: E501
        self._has_attachment = None
        self._cc = None
        self._incoming = None
        self._html_message = None
        self._recipient_email = None
        self._author_email = None
        self._bcc = None
        self._subject = None
        self._emailed = None
        self._last_modified_date = None
        self._external_id = None
        self._message_date = None
        self._message = None
        self._record = None
        self._record_type = None
        self._id = None
        self._time = None
        self._ref_name = None
        self._links = None
        self._recipient = None
        self._author = None
        self._activity = None
        self._template = None
        self._primary_recipient = None
        self._transaction = None
        self._entity = None
        self.discriminator = None
        if has_attachment is not None:
            self.has_attachment = has_attachment
        if cc is not None:
            self.cc = cc
        if incoming is not None:
            self.incoming = incoming
        if html_message is not None:
            self.html_message = html_message
        if recipient_email is not None:
            self.recipient_email = recipient_email
        if author_email is not None:
            self.author_email = author_email
        if bcc is not None:
            self.bcc = bcc
        if subject is not None:
            self.subject = subject
        if emailed is not None:
            self.emailed = emailed
        if last_modified_date is not None:
            self.last_modified_date = last_modified_date
        if external_id is not None:
            self.external_id = external_id
        if message_date is not None:
            self.message_date = message_date
        if message is not None:
            self.message = message
        if record is not None:
            self.record = record
        if record_type is not None:
            self.record_type = record_type
        if id is not None:
            self.id = id
        if time is not None:
            self.time = time
        if ref_name is not None:
            self.ref_name = ref_name
        if links is not None:
            self.links = links
        if recipient is not None:
            self.recipient = recipient
        if author is not None:
            self.author = author
        if activity is not None:
            self.activity = activity
        if template is not None:
            self.template = template
        if primary_recipient is not None:
            self.primary_recipient = primary_recipient
        if transaction is not None:
            self.transaction = transaction
        if entity is not None:
            self.entity = entity

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


        :return: The has_attachment of this Message.  # noqa: E501
        :rtype: bool
        """
        return self._has_attachment

    @has_attachment.setter
    def has_attachment(self, has_attachment):
        """Sets the has_attachment of this Message.


        :param has_attachment: The has_attachment of this Message.  # noqa: E501
        :type: bool
        """

        self._has_attachment = has_attachment

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

        Enter the email addresses you would like to receive a copy of this message. Separate multiple addresses with a comma or a semicolon. These email addresses will show to everyone who receives this message.  # noqa: E501

        :return: The cc of this Message.  # noqa: E501
        :rtype: str
        """
        return self._cc

    @cc.setter
    def cc(self, cc):
        """Sets the cc of this Message.

        Enter the email addresses you would like to receive a copy of this message. Separate multiple addresses with a comma or a semicolon. These email addresses will show to everyone who receives this message.  # noqa: E501

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

        self._cc = cc

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


        :return: The incoming of this Message.  # noqa: E501
        :rtype: bool
        """
        return self._incoming

    @incoming.setter
    def incoming(self, incoming):
        """Sets the incoming of this Message.


        :param incoming: The incoming of this Message.  # noqa: E501
        :type: bool
        """

        self._incoming = incoming

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


        :return: The html_message of this Message.  # noqa: E501
        :rtype: bool
        """
        return self._html_message

    @html_message.setter
    def html_message(self, html_message):
        """Sets the html_message of this Message.


        :param html_message: The html_message of this Message.  # noqa: E501
        :type: bool
        """

        self._html_message = html_message

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

        Enter the e-mail address of the recipient.  # noqa: E501

        :return: The recipient_email of this Message.  # noqa: E501
        :rtype: str
        """
        return self._recipient_email

    @recipient_email.setter
    def recipient_email(self, recipient_email):
        """Sets the recipient_email of this Message.

        Enter the e-mail address of the recipient.  # noqa: E501

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

        self._recipient_email = recipient_email

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

        Email address of sender.  # noqa: E501

        :return: The author_email of this Message.  # noqa: E501
        :rtype: str
        """
        return self._author_email

    @author_email.setter
    def author_email(self, author_email):
        """Sets the author_email of this Message.

        Email address of sender.  # noqa: E501

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

        self._author_email = author_email

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

        E-mail addresses you enter here receive a copy of this e-mail message, but these addresses do not show to the other recipients of the message. Separate multiple addresses with a comma or a semicolon.  # noqa: E501

        :return: The bcc of this Message.  # noqa: E501
        :rtype: str
        """
        return self._bcc

    @bcc.setter
    def bcc(self, bcc):
        """Sets the bcc of this Message.

        E-mail addresses you enter here receive a copy of this e-mail message, but these addresses do not show to the other recipients of the message. Separate multiple addresses with a comma or a semicolon.  # noqa: E501

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

        self._bcc = bcc

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

        Enter a subject or title for this email message. This subject is displayed on the messages subtab on the records of those receiving or sending the message.  # noqa: E501

        :return: The subject of this Message.  # noqa: E501
        :rtype: str
        """
        return self._subject

    @subject.setter
    def subject(self, subject):
        """Sets the subject of this Message.

        Enter a subject or title for this email message. This subject is displayed on the messages subtab on the records of those receiving or sending the message.  # noqa: E501

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

        self._subject = subject

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

        Check this box if you are pasting in an e-mail message.  # noqa: E501

        :return: The emailed of this Message.  # noqa: E501
        :rtype: bool
        """
        return self._emailed

    @emailed.setter
    def emailed(self, emailed):
        """Sets the emailed of this Message.

        Check this box if you are pasting in an e-mail message.  # noqa: E501

        :param emailed: The emailed of this Message.  # noqa: E501
        :type: bool
        """

        self._emailed = emailed

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


        :return: The last_modified_date of this Message.  # noqa: E501
        :rtype: datetime
        """
        return self._last_modified_date

    @last_modified_date.setter
    def last_modified_date(self, last_modified_date):
        """Sets the last_modified_date of this Message.


        :param last_modified_date: The last_modified_date of this Message.  # noqa: E501
        :type: datetime
        """

        self._last_modified_date = last_modified_date

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


        :return: The external_id of this Message.  # noqa: E501
        :rtype: str
        """
        return self._external_id

    @external_id.setter
    def external_id(self, external_id):
        """Sets the external_id of this Message.


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

        self._external_id = external_id

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


        :return: The message_date of this Message.  # noqa: E501
        :rtype: date
        """
        return self._message_date

    @message_date.setter
    def message_date(self, message_date):
        """Sets the message_date of this Message.


        :param message_date: The message_date of this Message.  # noqa: E501
        :type: date
        """

        self._message_date = message_date

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

        Paste or enter the text of the message in this field.  # noqa: E501

        :return: The message of this Message.  # noqa: E501
        :rtype: str
        """
        return self._message

    @message.setter
    def message(self, message):
        """Sets the message of this Message.

        Paste or enter the text of the message in this field.  # noqa: E501

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

        self._message = message

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


        :return: The record of this Message.  # noqa: E501
        :rtype: str
        """
        return self._record

    @record.setter
    def record(self, record):
        """Sets the record of this Message.


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

        self._record = record

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


        :return: The record_type of this Message.  # noqa: E501
        :rtype: str
        """
        return self._record_type

    @record_type.setter
    def record_type(self, record_type):
        """Sets the record_type of this Message.


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

        self._record_type = record_type

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


        :return: The id of this Message.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this Message.


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

        self._id = id

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


        :return: The time of this Message.  # noqa: E501
        :rtype: str
        """
        return self._time

    @time.setter
    def time(self, time):
        """Sets the time of this Message.


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

        self._time = time

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


        :return: The ref_name of this Message.  # noqa: E501
        :rtype: str
        """
        return self._ref_name

    @ref_name.setter
    def ref_name(self, ref_name):
        """Sets the ref_name of this Message.


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

        self._ref_name = ref_name

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


        :return: The links of this Message.  # noqa: E501
        :rtype: list[NsLink]
        """
        return self._links

    @links.setter
    def links(self, links):
        """Sets the links of this Message.


        :param links: The links of this Message.  # noqa: E501
        :type: list[NsLink]
        """

        self._links = links

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


        :return: The recipient of this Message.  # noqa: E501
        :rtype: OneOfmessageRecipient
        """
        return self._recipient

    @recipient.setter
    def recipient(self, recipient):
        """Sets the recipient of this Message.


        :param recipient: The recipient of this Message.  # noqa: E501
        :type: OneOfmessageRecipient
        """

        self._recipient = recipient

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


        :return: The author of this Message.  # noqa: E501
        :rtype: OneOfmessageAuthor
        """
        return self._author

    @author.setter
    def author(self, author):
        """Sets the author of this Message.


        :param author: The author of this Message.  # noqa: E501
        :type: OneOfmessageAuthor
        """

        self._author = author

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


        :return: The activity of this Message.  # noqa: E501
        :rtype: NsResource
        """
        return self._activity

    @activity.setter
    def activity(self, activity):
        """Sets the activity of this Message.


        :param activity: The activity of this Message.  # noqa: E501
        :type: NsResource
        """

        self._activity = activity

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


        :return: The template of this Message.  # noqa: E501
        :rtype: NsResource
        """
        return self._template

    @template.setter
    def template(self, template):
        """Sets the template of this Message.


        :param template: The template of this Message.  # noqa: E501
        :type: NsResource
        """

        self._template = template

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


        :return: The primary_recipient of this Message.  # noqa: E501
        :rtype: OneOfmessagePrimaryRecipient
        """
        return self._primary_recipient

    @primary_recipient.setter
    def primary_recipient(self, primary_recipient):
        """Sets the primary_recipient of this Message.


        :param primary_recipient: The primary_recipient of this Message.  # noqa: E501
        :type: OneOfmessagePrimaryRecipient
        """

        self._primary_recipient = primary_recipient

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


        :return: The transaction of this Message.  # noqa: E501
        :rtype: NsResource
        """
        return self._transaction

    @transaction.setter
    def transaction(self, transaction):
        """Sets the transaction of this Message.


        :param transaction: The transaction of this Message.  # noqa: E501
        :type: NsResource
        """

        self._transaction = transaction

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


        :return: The entity of this Message.  # noqa: E501
        :rtype: OneOfmessageEntity
        """
        return self._entity

    @entity.setter
    def entity(self, entity):
        """Sets the entity of this Message.


        :param entity: The entity of this Message.  # noqa: E501
        :type: OneOfmessageEntity
        """

        self._entity = entity

    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:
                result[attr] = value
        if issubclass(Message, 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, Message):
            return False

        return self.__dict__ == other.__dict__

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