# coding: utf-8

"""
    SCORM Cloud Rest API

    REST API used for SCORM Cloud integrations.  # noqa: E501

    OpenAPI spec version: 2.0
    Contact: systems@rusticisoftware.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class RuntimeObjectiveSchema(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 = {
        'id': 'str',
        'score_scaled': 'str',
        'score_min': 'str',
        'score_max': 'str',
        'score_raw': 'str',
        'runtime_objective_success_status': 'str',
        'runtime_objective_completion_status': 'str',
        'progress_measure': 'str',
        'description': 'str'
    }

    attribute_map = {
        'id': 'id',
        'score_scaled': 'scoreScaled',
        'score_min': 'scoreMin',
        'score_max': 'scoreMax',
        'score_raw': 'scoreRaw',
        'runtime_objective_success_status': 'runtimeObjectiveSuccessStatus',
        'runtime_objective_completion_status': 'runtimeObjectiveCompletionStatus',
        'progress_measure': 'progressMeasure',
        'description': 'description'
    }

    def __init__(self, id=None, score_scaled=None, score_min=None, score_max=None, score_raw=None, runtime_objective_success_status='UNKNOWN', runtime_objective_completion_status='UNKNOWN', progress_measure=None, description=None):  # noqa: E501
        """RuntimeObjectiveSchema - a model defined in Swagger"""  # noqa: E501

        self._id = None
        self._score_scaled = None
        self._score_min = None
        self._score_max = None
        self._score_raw = None
        self._runtime_objective_success_status = None
        self._runtime_objective_completion_status = None
        self._progress_measure = None
        self._description = None
        self.discriminator = None

        if id is not None:
            self.id = id
        if score_scaled is not None:
            self.score_scaled = score_scaled
        if score_min is not None:
            self.score_min = score_min
        if score_max is not None:
            self.score_max = score_max
        if score_raw is not None:
            self.score_raw = score_raw
        if runtime_objective_success_status is not None:
            self.runtime_objective_success_status = runtime_objective_success_status
        if runtime_objective_completion_status is not None:
            self.runtime_objective_completion_status = runtime_objective_completion_status
        if progress_measure is not None:
            self.progress_measure = progress_measure
        if description is not None:
            self.description = description

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

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

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

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

        self._id = id

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

        :return: The score_scaled of this RuntimeObjectiveSchema.  # noqa: E501
        :rtype: str
        """
        return self._score_scaled

    @score_scaled.setter
    def score_scaled(self, score_scaled):
        """Sets the score_scaled of this RuntimeObjectiveSchema.

        :param score_scaled: The score_scaled of this RuntimeObjectiveSchema.  # noqa: E501
        :type: str
        """

        self._score_scaled = score_scaled

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

        :return: The score_min of this RuntimeObjectiveSchema.  # noqa: E501
        :rtype: str
        """
        return self._score_min

    @score_min.setter
    def score_min(self, score_min):
        """Sets the score_min of this RuntimeObjectiveSchema.

        :param score_min: The score_min of this RuntimeObjectiveSchema.  # noqa: E501
        :type: str
        """

        self._score_min = score_min

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

        :return: The score_max of this RuntimeObjectiveSchema.  # noqa: E501
        :rtype: str
        """
        return self._score_max

    @score_max.setter
    def score_max(self, score_max):
        """Sets the score_max of this RuntimeObjectiveSchema.

        :param score_max: The score_max of this RuntimeObjectiveSchema.  # noqa: E501
        :type: str
        """

        self._score_max = score_max

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

        :return: The score_raw of this RuntimeObjectiveSchema.  # noqa: E501
        :rtype: str
        """
        return self._score_raw

    @score_raw.setter
    def score_raw(self, score_raw):
        """Sets the score_raw of this RuntimeObjectiveSchema.

        :param score_raw: The score_raw of this RuntimeObjectiveSchema.  # noqa: E501
        :type: str
        """

        self._score_raw = score_raw

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

        allowed_values = ["UNKNOWN", "PASSED", "FAILED"]  # noqa: E501

        :return: The runtime_objective_success_status of this RuntimeObjectiveSchema.  # noqa: E501
        :rtype: str
        """
        return self._runtime_objective_success_status

    @runtime_objective_success_status.setter
    def runtime_objective_success_status(self, runtime_objective_success_status):
        """Sets the runtime_objective_success_status of this RuntimeObjectiveSchema.

        allowed_values = ["UNKNOWN", "PASSED", "FAILED"]  # noqa: E501

        :param runtime_objective_success_status: The runtime_objective_success_status of this RuntimeObjectiveSchema.  # noqa: E501
        :type: str
        """

        self._runtime_objective_success_status = runtime_objective_success_status

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

        allowed_values = ["UNKNOWN", "COMPLETED", "INCOMPLETE", "NOT_ATTEMPTED", "BROWSED"]  # noqa: E501

        :return: The runtime_objective_completion_status of this RuntimeObjectiveSchema.  # noqa: E501
        :rtype: str
        """
        return self._runtime_objective_completion_status

    @runtime_objective_completion_status.setter
    def runtime_objective_completion_status(self, runtime_objective_completion_status):
        """Sets the runtime_objective_completion_status of this RuntimeObjectiveSchema.

        allowed_values = ["UNKNOWN", "COMPLETED", "INCOMPLETE", "NOT_ATTEMPTED", "BROWSED"]  # noqa: E501

        :param runtime_objective_completion_status: The runtime_objective_completion_status of this RuntimeObjectiveSchema.  # noqa: E501
        :type: str
        """

        self._runtime_objective_completion_status = runtime_objective_completion_status

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

        :return: The progress_measure of this RuntimeObjectiveSchema.  # noqa: E501
        :rtype: str
        """
        return self._progress_measure

    @progress_measure.setter
    def progress_measure(self, progress_measure):
        """Sets the progress_measure of this RuntimeObjectiveSchema.

        :param progress_measure: The progress_measure of this RuntimeObjectiveSchema.  # noqa: E501
        :type: str
        """

        self._progress_measure = progress_measure

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

        :return: The description of this RuntimeObjectiveSchema.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this RuntimeObjectiveSchema.

        :param description: The description of this RuntimeObjectiveSchema.  # noqa: E501
        :type: str
        """

        self._description = description

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

        return self.__dict__ == other.__dict__

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