# coding: utf-8

"""
    iEngage 2.0 API

    This API enables Intelligent Engagement for your Business. iEngage is a platform that combines process, augmented intelligence and rewards to help you intelligently engage customers.

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

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
"""

from pprint import pformat
from six import iteritems
import re


class Notification(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, notification_id=None, type=None, message=None, is_read=False, date=None, by_user=None, to_user=None, entity=None, parent_entity=None, extra_data=None, title=None, body=None, role_name=None, read=False):
        """
        Notification - a model defined in Swagger

        :param dict swaggerTypes: The key is attribute name
                                  and the value is attribute type.
        :param dict attributeMap: The key is attribute name
                                  and the value is json key in definition.
        """
        self.swagger_types = {
            'notification_id': 'int',
            'type': 'str',
            'message': 'str',
            'is_read': 'bool',
            'date': 'datetime',
            'by_user': 'User',
            'to_user': 'User',
            'entity': 'Entity',
            'parent_entity': 'Entity',
            'extra_data': 'str',
            'title': 'str',
            'body': 'str',
            'role_name': 'str',
            'read': 'bool'
        }

        self.attribute_map = {
            'notification_id': 'notificationId',
            'type': 'type',
            'message': 'message',
            'is_read': 'isRead',
            'date': 'date',
            'by_user': 'byUser',
            'to_user': 'toUser',
            'entity': 'entity',
            'parent_entity': 'parentEntity',
            'extra_data': 'extraData',
            'title': 'title',
            'body': 'body',
            'role_name': 'roleName',
            'read': 'read'
        }

        self._notification_id = notification_id
        self._type = type
        self._message = message
        self._is_read = is_read
        self._date = date
        self._by_user = by_user
        self._to_user = to_user
        self._entity = entity
        self._parent_entity = parent_entity
        self._extra_data = extra_data
        self._title = title
        self._body = body
        self._role_name = role_name
        self._read = read

    @property
    def notification_id(self):
        """
        Gets the notification_id of this Notification.


        :return: The notification_id of this Notification.
        :rtype: int
        """
        return self._notification_id

    @notification_id.setter
    def notification_id(self, notification_id):
        """
        Sets the notification_id of this Notification.


        :param notification_id: The notification_id of this Notification.
        :type: int
        """

        self._notification_id = notification_id

    @property
    def type(self):
        """
        Gets the type of this Notification.


        :return: The type of this Notification.
        :rtype: str
        """
        return self._type

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


        :param type: The type of this Notification.
        :type: str
        """

        self._type = type

    @property
    def message(self):
        """
        Gets the message of this Notification.


        :return: The message of this Notification.
        :rtype: str
        """
        return self._message

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


        :param message: The message of this Notification.
        :type: str
        """

        self._message = message

    @property
    def is_read(self):
        """
        Gets the is_read of this Notification.


        :return: The is_read of this Notification.
        :rtype: bool
        """
        return self._is_read

    @is_read.setter
    def is_read(self, is_read):
        """
        Sets the is_read of this Notification.


        :param is_read: The is_read of this Notification.
        :type: bool
        """

        self._is_read = is_read

    @property
    def date(self):
        """
        Gets the date of this Notification.


        :return: The date of this Notification.
        :rtype: datetime
        """
        return self._date

    @date.setter
    def date(self, date):
        """
        Sets the date of this Notification.


        :param date: The date of this Notification.
        :type: datetime
        """

        self._date = date

    @property
    def by_user(self):
        """
        Gets the by_user of this Notification.


        :return: The by_user of this Notification.
        :rtype: User
        """
        return self._by_user

    @by_user.setter
    def by_user(self, by_user):
        """
        Sets the by_user of this Notification.


        :param by_user: The by_user of this Notification.
        :type: User
        """

        self._by_user = by_user

    @property
    def to_user(self):
        """
        Gets the to_user of this Notification.


        :return: The to_user of this Notification.
        :rtype: User
        """
        return self._to_user

    @to_user.setter
    def to_user(self, to_user):
        """
        Sets the to_user of this Notification.


        :param to_user: The to_user of this Notification.
        :type: User
        """

        self._to_user = to_user

    @property
    def entity(self):
        """
        Gets the entity of this Notification.


        :return: The entity of this Notification.
        :rtype: Entity
        """
        return self._entity

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


        :param entity: The entity of this Notification.
        :type: Entity
        """

        self._entity = entity

    @property
    def parent_entity(self):
        """
        Gets the parent_entity of this Notification.


        :return: The parent_entity of this Notification.
        :rtype: Entity
        """
        return self._parent_entity

    @parent_entity.setter
    def parent_entity(self, parent_entity):
        """
        Sets the parent_entity of this Notification.


        :param parent_entity: The parent_entity of this Notification.
        :type: Entity
        """

        self._parent_entity = parent_entity

    @property
    def extra_data(self):
        """
        Gets the extra_data of this Notification.


        :return: The extra_data of this Notification.
        :rtype: str
        """
        return self._extra_data

    @extra_data.setter
    def extra_data(self, extra_data):
        """
        Sets the extra_data of this Notification.


        :param extra_data: The extra_data of this Notification.
        :type: str
        """

        self._extra_data = extra_data

    @property
    def title(self):
        """
        Gets the title of this Notification.


        :return: The title of this Notification.
        :rtype: str
        """
        return self._title

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


        :param title: The title of this Notification.
        :type: str
        """

        self._title = title

    @property
    def body(self):
        """
        Gets the body of this Notification.


        :return: The body of this Notification.
        :rtype: str
        """
        return self._body

    @body.setter
    def body(self, body):
        """
        Sets the body of this Notification.


        :param body: The body of this Notification.
        :type: str
        """

        self._body = body

    @property
    def role_name(self):
        """
        Gets the role_name of this Notification.


        :return: The role_name of this Notification.
        :rtype: str
        """
        return self._role_name

    @role_name.setter
    def role_name(self, role_name):
        """
        Sets the role_name of this Notification.


        :param role_name: The role_name of this Notification.
        :type: str
        """

        self._role_name = role_name

    @property
    def read(self):
        """
        Gets the read of this Notification.


        :return: The read of this Notification.
        :rtype: bool
        """
        return self._read

    @read.setter
    def read(self, read):
        """
        Sets the read of this Notification.


        :param read: The read of this Notification.
        :type: bool
        """

        self._read = read

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

        for attr, _ in 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

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return 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
        """
        return self.__dict__ == other.__dict__

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

# coding: utf-8

"""
    iEngage 2.0 API

    This API enables Intelligent Engagement for your Business. iEngage is a platform that combines process, augmented intelligence and rewards to help you intelligently engage customers.

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

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
"""

from pprint import pformat
from six import iteritems
import re


class Notification(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, notification_id=None, type=None, message=None, is_read=False, date=None, by_user=None, to_user=None, entity=None, parent_entity=None, extra_data=None, title=None, body=None, role_name=None, read=False):
        """
        Notification - a model defined in Swagger

        :param dict swaggerTypes: The key is attribute name
                                  and the value is attribute type.
        :param dict attributeMap: The key is attribute name
                                  and the value is json key in definition.
        """
        self.swagger_types = {
            'notification_id': 'int',
            'type': 'str',
            'message': 'str',
            'is_read': 'bool',
            'date': 'datetime',
            'by_user': 'User',
            'to_user': 'User',
            'entity': 'Entity',
            'parent_entity': 'Entity',
            'extra_data': 'str',
            'title': 'str',
            'body': 'str',
            'role_name': 'str',
            'read': 'bool'
        }

        self.attribute_map = {
            'notification_id': 'notificationId',
            'type': 'type',
            'message': 'message',
            'is_read': 'isRead',
            'date': 'date',
            'by_user': 'byUser',
            'to_user': 'toUser',
            'entity': 'entity',
            'parent_entity': 'parentEntity',
            'extra_data': 'extraData',
            'title': 'title',
            'body': 'body',
            'role_name': 'roleName',
            'read': 'read'
        }

        self._notification_id = notification_id
        self._type = type
        self._message = message
        self._is_read = is_read
        self._date = date
        self._by_user = by_user
        self._to_user = to_user
        self._entity = entity
        self._parent_entity = parent_entity
        self._extra_data = extra_data
        self._title = title
        self._body = body
        self._role_name = role_name
        self._read = read

    @property
    def notification_id(self):
        """
        Gets the notification_id of this Notification.


        :return: The notification_id of this Notification.
        :rtype: int
        """
        return self._notification_id

    @notification_id.setter
    def notification_id(self, notification_id):
        """
        Sets the notification_id of this Notification.


        :param notification_id: The notification_id of this Notification.
        :type: int
        """

        self._notification_id = notification_id

    @property
    def type(self):
        """
        Gets the type of this Notification.


        :return: The type of this Notification.
        :rtype: str
        """
        return self._type

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


        :param type: The type of this Notification.
        :type: str
        """

        self._type = type

    @property
    def message(self):
        """
        Gets the message of this Notification.


        :return: The message of this Notification.
        :rtype: str
        """
        return self._message

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


        :param message: The message of this Notification.
        :type: str
        """

        self._message = message

    @property
    def is_read(self):
        """
        Gets the is_read of this Notification.


        :return: The is_read of this Notification.
        :rtype: bool
        """
        return self._is_read

    @is_read.setter
    def is_read(self, is_read):
        """
        Sets the is_read of this Notification.


        :param is_read: The is_read of this Notification.
        :type: bool
        """

        self._is_read = is_read

    @property
    def date(self):
        """
        Gets the date of this Notification.


        :return: The date of this Notification.
        :rtype: datetime
        """
        return self._date

    @date.setter
    def date(self, date):
        """
        Sets the date of this Notification.


        :param date: The date of this Notification.
        :type: datetime
        """

        self._date = date

    @property
    def by_user(self):
        """
        Gets the by_user of this Notification.


        :return: The by_user of this Notification.
        :rtype: User
        """
        return self._by_user

    @by_user.setter
    def by_user(self, by_user):
        """
        Sets the by_user of this Notification.


        :param by_user: The by_user of this Notification.
        :type: User
        """

        self._by_user = by_user

    @property
    def to_user(self):
        """
        Gets the to_user of this Notification.


        :return: The to_user of this Notification.
        :rtype: User
        """
        return self._to_user

    @to_user.setter
    def to_user(self, to_user):
        """
        Sets the to_user of this Notification.


        :param to_user: The to_user of this Notification.
        :type: User
        """

        self._to_user = to_user

    @property
    def entity(self):
        """
        Gets the entity of this Notification.


        :return: The entity of this Notification.
        :rtype: Entity
        """
        return self._entity

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


        :param entity: The entity of this Notification.
        :type: Entity
        """

        self._entity = entity

    @property
    def parent_entity(self):
        """
        Gets the parent_entity of this Notification.


        :return: The parent_entity of this Notification.
        :rtype: Entity
        """
        return self._parent_entity

    @parent_entity.setter
    def parent_entity(self, parent_entity):
        """
        Sets the parent_entity of this Notification.


        :param parent_entity: The parent_entity of this Notification.
        :type: Entity
        """

        self._parent_entity = parent_entity

    @property
    def extra_data(self):
        """
        Gets the extra_data of this Notification.


        :return: The extra_data of this Notification.
        :rtype: str
        """
        return self._extra_data

    @extra_data.setter
    def extra_data(self, extra_data):
        """
        Sets the extra_data of this Notification.


        :param extra_data: The extra_data of this Notification.
        :type: str
        """

        self._extra_data = extra_data

    @property
    def title(self):
        """
        Gets the title of this Notification.


        :return: The title of this Notification.
        :rtype: str
        """
        return self._title

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


        :param title: The title of this Notification.
        :type: str
        """

        self._title = title

    @property
    def body(self):
        """
        Gets the body of this Notification.


        :return: The body of this Notification.
        :rtype: str
        """
        return self._body

    @body.setter
    def body(self, body):
        """
        Sets the body of this Notification.


        :param body: The body of this Notification.
        :type: str
        """

        self._body = body

    @property
    def role_name(self):
        """
        Gets the role_name of this Notification.


        :return: The role_name of this Notification.
        :rtype: str
        """
        return self._role_name

    @role_name.setter
    def role_name(self, role_name):
        """
        Sets the role_name of this Notification.


        :param role_name: The role_name of this Notification.
        :type: str
        """

        self._role_name = role_name

    @property
    def read(self):
        """
        Gets the read of this Notification.


        :return: The read of this Notification.
        :rtype: bool
        """
        return self._read

    @read.setter
    def read(self, read):
        """
        Sets the read of this Notification.


        :param read: The read of this Notification.
        :type: bool
        """

        self._read = read

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

        for attr, _ in 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

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return 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
        """
        return self.__dict__ == other.__dict__

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

# coding: utf-8 iEngage 2.0 API      This API enables Intelligent Engagement for your Business. iEngage is a platform that combines process, augmented intelligence and rewards to help you intelligently engage customers.      OpenAPI spec version: 2.0          Generated by: https://github.com/swagger-api/swagger-codegen.git      Licensed under the Apache License, Version 2.0 (the "License");     you may not use this file except in compliance with the License.     You may obtain a copy of the License at          http://www.apache.org/licenses/LICENSE-2.0      Unless required by applicable law or agreed to in writing, software     distributed under the License is distributed on an "AS IS" BASIS,     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.     See the License for the specific language governing permissions and     limitations under the License. NOTE: This class is auto generated by the swagger code generator program.     Do not edit the class manually. Notification - a model defined in Swagger          :param dict swaggerTypes: The key is attribute name                                   and the value is attribute type.         :param dict attributeMap: The key is attribute name                                   and the value is json key in definition. Gets the notification_id of this Notification.           :return: The notification_id of this Notification.         :rtype: int Sets the notification_id of this Notification.           :param notification_id: The notification_id of this Notification.         :type: int Gets the type of this Notification.           :return: The type of this Notification.         :rtype: str Sets the type of this Notification.           :param type: The type of this Notification.         :type: str Gets the message of this Notification.           :return: The message of this Notification.         :rtype: str Sets the message of this Notification.           :param message: The message of this Notification.         :type: str Gets the is_read of this Notification.           :return: The is_read of this Notification.         :rtype: bool Sets the is_read of this Notification.           :param is_read: The is_read of this Notification.         :type: bool Gets the date of this Notification.           :return: The date of this Notification.         :rtype: datetime Sets the date of this Notification.           :param date: The date of this Notification.         :type: datetime Gets the by_user of this Notification.           :return: The by_user of this Notification.         :rtype: User Sets the by_user of this Notification.           :param by_user: The by_user of this Notification.         :type: User Gets the to_user of this Notification.           :return: The to_user of this Notification.         :rtype: User Sets the to_user of this Notification.           :param to_user: The to_user of this Notification.         :type: User Gets the entity of this Notification.           :return: The entity of this Notification.         :rtype: Entity Sets the entity of this Notification.           :param entity: The entity of this Notification.         :type: Entity Gets the parent_entity of this Notification.           :return: The parent_entity of this Notification.         :rtype: Entity Sets the parent_entity of this Notification.           :param parent_entity: The parent_entity of this Notification.         :type: Entity Gets the extra_data of this Notification.           :return: The extra_data of this Notification.         :rtype: str Sets the extra_data of this Notification.           :param extra_data: The extra_data of this Notification.         :type: str Gets the title of this Notification.           :return: The title of this Notification.         :rtype: str Sets the title of this Notification.           :param title: The title of this Notification.         :type: str Gets the body of this Notification.           :return: The body of this Notification.         :rtype: str Sets the body of this Notification.           :param body: The body of this Notification.         :type: str Gets the role_name of this Notification.           :return: The role_name of this Notification.         :rtype: str Sets the role_name of this Notification.           :param role_name: The role_name of this Notification.         :type: str Gets the read of this Notification.           :return: The read of this Notification.         :rtype: bool Sets the read of this Notification.           :param read: The read of this Notification.         :type: bool Returns the model properties as a dict Returns the string representation of the model For `print` and `pprint` Returns true if both objects are equal Returns true if both objects are not equal