# coding: utf-8

"""
    Emby Server REST API (BETA)
"""

import pprint
import re  # noqa: F401

import six

class PlaybackStopInfo(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 = {
        'now_playing_queue': 'list[QueueItem]',
        'playlist_item_id': 'str',
        'playlist_index': 'int',
        'playlist_length': 'int',
        'item': 'BaseItemDto',
        'item_id': 'str',
        'session_id': 'str',
        'media_source_id': 'str',
        'position_ticks': 'int',
        'live_stream_id': 'str',
        'play_session_id': 'str',
        'failed': 'bool',
        'is_automated': 'bool',
        'next_media_type': 'str'
    }

    attribute_map = {
        'now_playing_queue': 'NowPlayingQueue',
        'playlist_item_id': 'PlaylistItemId',
        'playlist_index': 'PlaylistIndex',
        'playlist_length': 'PlaylistLength',
        'item': 'Item',
        'item_id': 'ItemId',
        'session_id': 'SessionId',
        'media_source_id': 'MediaSourceId',
        'position_ticks': 'PositionTicks',
        'live_stream_id': 'LiveStreamId',
        'play_session_id': 'PlaySessionId',
        'failed': 'Failed',
        'is_automated': 'IsAutomated',
        'next_media_type': 'NextMediaType'
    }

    def __init__(self, now_playing_queue=None, playlist_item_id=None, playlist_index=None, playlist_length=None, item=None, item_id=None, session_id=None, media_source_id=None, position_ticks=None, live_stream_id=None, play_session_id=None, failed=None, is_automated=None, next_media_type=None):  # noqa: E501
        """PlaybackStopInfo - a model defined in Swagger"""  # noqa: E501
        self._now_playing_queue = None
        self._playlist_item_id = None
        self._playlist_index = None
        self._playlist_length = None
        self._item = None
        self._item_id = None
        self._session_id = None
        self._media_source_id = None
        self._position_ticks = None
        self._live_stream_id = None
        self._play_session_id = None
        self._failed = None
        self._is_automated = None
        self._next_media_type = None
        self.discriminator = None
        if now_playing_queue is not None:
            self.now_playing_queue = now_playing_queue
        if playlist_item_id is not None:
            self.playlist_item_id = playlist_item_id
        if playlist_index is not None:
            self.playlist_index = playlist_index
        if playlist_length is not None:
            self.playlist_length = playlist_length
        if item is not None:
            self.item = item
        if item_id is not None:
            self.item_id = item_id
        if session_id is not None:
            self.session_id = session_id
        if media_source_id is not None:
            self.media_source_id = media_source_id
        if position_ticks is not None:
            self.position_ticks = position_ticks
        if live_stream_id is not None:
            self.live_stream_id = live_stream_id
        if play_session_id is not None:
            self.play_session_id = play_session_id
        if failed is not None:
            self.failed = failed
        if is_automated is not None:
            self.is_automated = is_automated
        if next_media_type is not None:
            self.next_media_type = next_media_type

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


        :return: The now_playing_queue of this PlaybackStopInfo.  # noqa: E501
        :rtype: list[QueueItem]
        """
        return self._now_playing_queue

    @now_playing_queue.setter
    def now_playing_queue(self, now_playing_queue):
        """Sets the now_playing_queue of this PlaybackStopInfo.


        :param now_playing_queue: The now_playing_queue of this PlaybackStopInfo.  # noqa: E501
        :type: list[QueueItem]
        """

        self._now_playing_queue = now_playing_queue

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


        :return: The playlist_item_id of this PlaybackStopInfo.  # noqa: E501
        :rtype: str
        """
        return self._playlist_item_id

    @playlist_item_id.setter
    def playlist_item_id(self, playlist_item_id):
        """Sets the playlist_item_id of this PlaybackStopInfo.


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

        self._playlist_item_id = playlist_item_id

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


        :return: The playlist_index of this PlaybackStopInfo.  # noqa: E501
        :rtype: int
        """
        return self._playlist_index

    @playlist_index.setter
    def playlist_index(self, playlist_index):
        """Sets the playlist_index of this PlaybackStopInfo.


        :param playlist_index: The playlist_index of this PlaybackStopInfo.  # noqa: E501
        :type: int
        """

        self._playlist_index = playlist_index

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


        :return: The playlist_length of this PlaybackStopInfo.  # noqa: E501
        :rtype: int
        """
        return self._playlist_length

    @playlist_length.setter
    def playlist_length(self, playlist_length):
        """Sets the playlist_length of this PlaybackStopInfo.


        :param playlist_length: The playlist_length of this PlaybackStopInfo.  # noqa: E501
        :type: int
        """

        self._playlist_length = playlist_length

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


        :return: The item of this PlaybackStopInfo.  # noqa: E501
        :rtype: BaseItemDto
        """
        return self._item

    @item.setter
    def item(self, item):
        """Sets the item of this PlaybackStopInfo.


        :param item: The item of this PlaybackStopInfo.  # noqa: E501
        :type: BaseItemDto
        """

        self._item = item

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

        The item identifier.  # noqa: E501

        :return: The item_id of this PlaybackStopInfo.  # noqa: E501
        :rtype: str
        """
        return self._item_id

    @item_id.setter
    def item_id(self, item_id):
        """Sets the item_id of this PlaybackStopInfo.

        The item identifier.  # noqa: E501

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

        self._item_id = item_id

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

        The session id.  # noqa: E501

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

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

        The session id.  # noqa: E501

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

        self._session_id = session_id

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

        The media version identifier.  # noqa: E501

        :return: The media_source_id of this PlaybackStopInfo.  # noqa: E501
        :rtype: str
        """
        return self._media_source_id

    @media_source_id.setter
    def media_source_id(self, media_source_id):
        """Sets the media_source_id of this PlaybackStopInfo.

        The media version identifier.  # noqa: E501

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

        self._media_source_id = media_source_id

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

        The position ticks.  # noqa: E501

        :return: The position_ticks of this PlaybackStopInfo.  # noqa: E501
        :rtype: int
        """
        return self._position_ticks

    @position_ticks.setter
    def position_ticks(self, position_ticks):
        """Sets the position_ticks of this PlaybackStopInfo.

        The position ticks.  # noqa: E501

        :param position_ticks: The position_ticks of this PlaybackStopInfo.  # noqa: E501
        :type: int
        """

        self._position_ticks = position_ticks

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

        The live stream identifier.  # noqa: E501

        :return: The live_stream_id of this PlaybackStopInfo.  # noqa: E501
        :rtype: str
        """
        return self._live_stream_id

    @live_stream_id.setter
    def live_stream_id(self, live_stream_id):
        """Sets the live_stream_id of this PlaybackStopInfo.

        The live stream identifier.  # noqa: E501

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

        self._live_stream_id = live_stream_id

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

        The play session identifier.  # noqa: E501

        :return: The play_session_id of this PlaybackStopInfo.  # noqa: E501
        :rtype: str
        """
        return self._play_session_id

    @play_session_id.setter
    def play_session_id(self, play_session_id):
        """Sets the play_session_id of this PlaybackStopInfo.

        The play session identifier.  # noqa: E501

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

        self._play_session_id = play_session_id

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

        A value indicating whether this `MediaBrowser.Model.Session.PlaybackStopInfo` is failed.  # noqa: E501

        :return: The failed of this PlaybackStopInfo.  # noqa: E501
        :rtype: bool
        """
        return self._failed

    @failed.setter
    def failed(self, failed):
        """Sets the failed of this PlaybackStopInfo.

        A value indicating whether this `MediaBrowser.Model.Session.PlaybackStopInfo` is failed.  # noqa: E501

        :param failed: The failed of this PlaybackStopInfo.  # noqa: E501
        :type: bool
        """

        self._failed = failed

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


        :return: The is_automated of this PlaybackStopInfo.  # noqa: E501
        :rtype: bool
        """
        return self._is_automated

    @is_automated.setter
    def is_automated(self, is_automated):
        """Sets the is_automated of this PlaybackStopInfo.


        :param is_automated: The is_automated of this PlaybackStopInfo.  # noqa: E501
        :type: bool
        """

        self._is_automated = is_automated

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


        :return: The next_media_type of this PlaybackStopInfo.  # noqa: E501
        :rtype: str
        """
        return self._next_media_type

    @next_media_type.setter
    def next_media_type(self, next_media_type):
        """Sets the next_media_type of this PlaybackStopInfo.


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

        self._next_media_type = next_media_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:
                result[attr] = value
        if issubclass(PlaybackStopInfo, 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, PlaybackStopInfo):
            return False

        return self.__dict__ == other.__dict__

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