# coding: utf-8

"""
    Prompt.io APIs

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class AnalyticsChannelReportModel(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 = {
        'channel_id': 'int',
        'channel_name': 'str',
        'total_messages': 'int',
        'outgoing_messages': 'int',
        'incoming_messages': 'int',
        'total_segments': 'int',
        'outgoing_segments': 'int',
        'incoming_segments': 'int',
        'messages_delivery_failed': 'int',
        'messages_undelivered': 'int',
        'opt_outs': 'int',
        'last_activity_timestamp': 'int',
        'pending_scheduled': 'int'
    }

    attribute_map = {
        'channel_id': 'channelId',
        'channel_name': 'channelName',
        'total_messages': 'totalMessages',
        'outgoing_messages': 'outgoingMessages',
        'incoming_messages': 'incomingMessages',
        'total_segments': 'totalSegments',
        'outgoing_segments': 'outgoingSegments',
        'incoming_segments': 'incomingSegments',
        'messages_delivery_failed': 'messagesDeliveryFailed',
        'messages_undelivered': 'messagesUndelivered',
        'opt_outs': 'optOuts',
        'last_activity_timestamp': 'lastActivityTimestamp',
        'pending_scheduled': 'pendingScheduled'
    }

    def __init__(self, channel_id=None, channel_name=None, total_messages=None, outgoing_messages=None, incoming_messages=None, total_segments=None, outgoing_segments=None, incoming_segments=None, messages_delivery_failed=None, messages_undelivered=None, opt_outs=None, last_activity_timestamp=None, pending_scheduled=None):  # noqa: E501
        """AnalyticsChannelReportModel - a model defined in Swagger"""  # noqa: E501
        self._channel_id = None
        self._channel_name = None
        self._total_messages = None
        self._outgoing_messages = None
        self._incoming_messages = None
        self._total_segments = None
        self._outgoing_segments = None
        self._incoming_segments = None
        self._messages_delivery_failed = None
        self._messages_undelivered = None
        self._opt_outs = None
        self._last_activity_timestamp = None
        self._pending_scheduled = None
        self.discriminator = None
        if channel_id is not None:
            self.channel_id = channel_id
        if channel_name is not None:
            self.channel_name = channel_name
        if total_messages is not None:
            self.total_messages = total_messages
        if outgoing_messages is not None:
            self.outgoing_messages = outgoing_messages
        if incoming_messages is not None:
            self.incoming_messages = incoming_messages
        if total_segments is not None:
            self.total_segments = total_segments
        if outgoing_segments is not None:
            self.outgoing_segments = outgoing_segments
        if incoming_segments is not None:
            self.incoming_segments = incoming_segments
        if messages_delivery_failed is not None:
            self.messages_delivery_failed = messages_delivery_failed
        if messages_undelivered is not None:
            self.messages_undelivered = messages_undelivered
        if opt_outs is not None:
            self.opt_outs = opt_outs
        if last_activity_timestamp is not None:
            self.last_activity_timestamp = last_activity_timestamp
        if pending_scheduled is not None:
            self.pending_scheduled = pending_scheduled

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

        The channel's internal id.  # noqa: E501

        :return: The channel_id of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._channel_id

    @channel_id.setter
    def channel_id(self, channel_id):
        """Sets the channel_id of this AnalyticsChannelReportModel.

        The channel's internal id.  # noqa: E501

        :param channel_id: The channel_id of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._channel_id = channel_id

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

        The channel's display name.  # noqa: E501

        :return: The channel_name of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: str
        """
        return self._channel_name

    @channel_name.setter
    def channel_name(self, channel_name):
        """Sets the channel_name of this AnalyticsChannelReportModel.

        The channel's display name.  # noqa: E501

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

        self._channel_name = channel_name

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

        The number of messages sent or received by the channel during the window.  # noqa: E501

        :return: The total_messages of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._total_messages

    @total_messages.setter
    def total_messages(self, total_messages):
        """Sets the total_messages of this AnalyticsChannelReportModel.

        The number of messages sent or received by the channel during the window.  # noqa: E501

        :param total_messages: The total_messages of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._total_messages = total_messages

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

        The number of messages sent by the channel during the window.  # noqa: E501

        :return: The outgoing_messages of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._outgoing_messages

    @outgoing_messages.setter
    def outgoing_messages(self, outgoing_messages):
        """Sets the outgoing_messages of this AnalyticsChannelReportModel.

        The number of messages sent by the channel during the window.  # noqa: E501

        :param outgoing_messages: The outgoing_messages of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._outgoing_messages = outgoing_messages

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

        The number of messages received by the channel during the window.  # noqa: E501

        :return: The incoming_messages of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._incoming_messages

    @incoming_messages.setter
    def incoming_messages(self, incoming_messages):
        """Sets the incoming_messages of this AnalyticsChannelReportModel.

        The number of messages received by the channel during the window.  # noqa: E501

        :param incoming_messages: The incoming_messages of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._incoming_messages = incoming_messages

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

        The number of segments sent or received by the channel during the window.  # noqa: E501

        :return: The total_segments of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._total_segments

    @total_segments.setter
    def total_segments(self, total_segments):
        """Sets the total_segments of this AnalyticsChannelReportModel.

        The number of segments sent or received by the channel during the window.  # noqa: E501

        :param total_segments: The total_segments of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._total_segments = total_segments

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

        The number of segments sent by the channel during the window.  # noqa: E501

        :return: The outgoing_segments of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._outgoing_segments

    @outgoing_segments.setter
    def outgoing_segments(self, outgoing_segments):
        """Sets the outgoing_segments of this AnalyticsChannelReportModel.

        The number of segments sent by the channel during the window.  # noqa: E501

        :param outgoing_segments: The outgoing_segments of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._outgoing_segments = outgoing_segments

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

        The number of segments received by the channel during the window.  # noqa: E501

        :return: The incoming_segments of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._incoming_segments

    @incoming_segments.setter
    def incoming_segments(self, incoming_segments):
        """Sets the incoming_segments of this AnalyticsChannelReportModel.

        The number of segments received by the channel during the window.  # noqa: E501

        :param incoming_segments: The incoming_segments of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._incoming_segments = incoming_segments

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

        The number of messages the failed to send by the channel during the window.  # noqa: E501

        :return: The messages_delivery_failed of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._messages_delivery_failed

    @messages_delivery_failed.setter
    def messages_delivery_failed(self, messages_delivery_failed):
        """Sets the messages_delivery_failed of this AnalyticsChannelReportModel.

        The number of messages the failed to send by the channel during the window.  # noqa: E501

        :param messages_delivery_failed: The messages_delivery_failed of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._messages_delivery_failed = messages_delivery_failed

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

        The number of messages that were sent by the channel but were undelivered during the window.  # noqa: E501

        :return: The messages_undelivered of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._messages_undelivered

    @messages_undelivered.setter
    def messages_undelivered(self, messages_undelivered):
        """Sets the messages_undelivered of this AnalyticsChannelReportModel.

        The number of messages that were sent by the channel but were undelivered during the window.  # noqa: E501

        :param messages_undelivered: The messages_undelivered of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._messages_undelivered = messages_undelivered

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

        The number of opt out messages recevied from customers on the channel during the window.  # noqa: E501

        :return: The opt_outs of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._opt_outs

    @opt_outs.setter
    def opt_outs(self, opt_outs):
        """Sets the opt_outs of this AnalyticsChannelReportModel.

        The number of opt out messages recevied from customers on the channel during the window.  # noqa: E501

        :param opt_outs: The opt_outs of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._opt_outs = opt_outs

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

        The time the last message was sent or received by the channel.  # noqa: E501

        :return: The last_activity_timestamp of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._last_activity_timestamp

    @last_activity_timestamp.setter
    def last_activity_timestamp(self, last_activity_timestamp):
        """Sets the last_activity_timestamp of this AnalyticsChannelReportModel.

        The time the last message was sent or received by the channel.  # noqa: E501

        :param last_activity_timestamp: The last_activity_timestamp of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._last_activity_timestamp = last_activity_timestamp

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

        The number of scheduled actions currently waiting to be sent on the channel, regardless of the time window selected.  # noqa: E501

        :return: The pending_scheduled of this AnalyticsChannelReportModel.  # noqa: E501
        :rtype: int
        """
        return self._pending_scheduled

    @pending_scheduled.setter
    def pending_scheduled(self, pending_scheduled):
        """Sets the pending_scheduled of this AnalyticsChannelReportModel.

        The number of scheduled actions currently waiting to be sent on the channel, regardless of the time window selected.  # noqa: E501

        :param pending_scheduled: The pending_scheduled of this AnalyticsChannelReportModel.  # noqa: E501
        :type: int
        """

        self._pending_scheduled = pending_scheduled

    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(AnalyticsChannelReportModel, 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, AnalyticsChannelReportModel):
            return False

        return self.__dict__ == other.__dict__

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