# coding: utf-8

"""
    videoplatform-api

    Interview Screening APIs allows to invite candidate to interview, evaluate and review candidates interview performances.  # noqa: E501

    OpenAPI spec version: 1.0.0
    Contact: support@phenompeople.com
    Generated by: phenom
"""

import pprint
import re  # noqa: F401

import six

class GetInterviewDetailsForEvaluatingResponseDataQuestions(object):
    """
    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 = {
        'video_screen_question_id': 'str',
        'question_text': 'str',
        'response_duration_limit_in_sec': 'float',
        'video_id': 'str',
        'think_time_in_sec': 'float',
        'answer_time_in_sec': 'float',
        'answered': 'bool',
        'max_number_retakes': 'float',
        'pending_retakes': 'float',
        'timed': 'bool',
        'type': 'str',
        'settings': 'object',
        'question_id': 'str'
    }

    attribute_map = {
        'video_screen_question_id': 'videoScreenQuestionId',
        'question_text': 'questionText',
        'response_duration_limit_in_sec': 'responseDurationLimitInSec',
        'video_id': 'videoId',
        'think_time_in_sec': 'thinkTimeInSec',
        'answer_time_in_sec': 'answerTimeInSec',
        'answered': 'answered',
        'max_number_retakes': 'maxNumberRetakes',
        'pending_retakes': 'pendingRetakes',
        'timed': 'timed',
        'type': 'type',
        'settings': 'settings',
        'question_id': 'questionId'
    }

    def __init__(self, video_screen_question_id=None, question_text=None, response_duration_limit_in_sec=None, video_id=None, think_time_in_sec=None, answer_time_in_sec=None, answered=None, max_number_retakes=None, pending_retakes=None, timed=None, type=None, settings=None, question_id=None):  # noqa: E501
        """GetInterviewDetailsForEvaluatingResponseDataQuestions - a model defined in Swagger"""  # noqa: E501
        self._video_screen_question_id = None
        self._question_text = None
        self._response_duration_limit_in_sec = None
        self._video_id = None
        self._think_time_in_sec = None
        self._answer_time_in_sec = None
        self._answered = None
        self._max_number_retakes = None
        self._pending_retakes = None
        self._timed = None
        self._type = None
        self._settings = None
        self._question_id = None
        self.discriminator = None
        self.video_screen_question_id = video_screen_question_id
        self.question_text = question_text
        self.response_duration_limit_in_sec = response_duration_limit_in_sec
        self.video_id = video_id
        self.think_time_in_sec = think_time_in_sec
        self.answer_time_in_sec = answer_time_in_sec
        self.answered = answered
        self.max_number_retakes = max_number_retakes
        self.pending_retakes = pending_retakes
        self.timed = timed
        self.type = type
        self.settings = settings
        self.question_id = question_id

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

        This is the interview question id, this differs from actual question id created from create question api.  # noqa: E501

        :return: The video_screen_question_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: str
        """
        return self._video_screen_question_id

    @video_screen_question_id.setter
    def video_screen_question_id(self, video_screen_question_id):
        """Sets the video_screen_question_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        This is the interview question id, this differs from actual question id created from create question api.  # noqa: E501

        :param video_screen_question_id: The video_screen_question_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: str
        """
        if video_screen_question_id is None:
            raise ValueError("Invalid value for `video_screen_question_id`, must not be `None`")  # noqa: E501

        self._video_screen_question_id = video_screen_question_id

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

        Question text for the question.  # noqa: E501

        :return: The question_text of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: str
        """
        return self._question_text

    @question_text.setter
    def question_text(self, question_text):
        """Sets the question_text of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        Question text for the question.  # noqa: E501

        :param question_text: The question_text of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: str
        """
        if question_text is None:
            raise ValueError("Invalid value for `question_text`, must not be `None`")  # noqa: E501

        self._question_text = question_text

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

        Max recording duration allowed for a question.  # noqa: E501

        :return: The response_duration_limit_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: float
        """
        return self._response_duration_limit_in_sec

    @response_duration_limit_in_sec.setter
    def response_duration_limit_in_sec(self, response_duration_limit_in_sec):
        """Sets the response_duration_limit_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        Max recording duration allowed for a question.  # noqa: E501

        :param response_duration_limit_in_sec: The response_duration_limit_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: float
        """
        if response_duration_limit_in_sec is None:
            raise ValueError("Invalid value for `response_duration_limit_in_sec`, must not be `None`")  # noqa: E501

        self._response_duration_limit_in_sec = response_duration_limit_in_sec

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

        This field is applicable for media question video or audio etc.  # noqa: E501

        :return: The video_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: str
        """
        return self._video_id

    @video_id.setter
    def video_id(self, video_id):
        """Sets the video_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        This field is applicable for media question video or audio etc.  # noqa: E501

        :param video_id: The video_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: str
        """
        if video_id is None:
            raise ValueError("Invalid value for `video_id`, must not be `None`")  # noqa: E501

        self._video_id = video_id

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

        This is the preparation time given for the question before recording the actual answer.  # noqa: E501

        :return: The think_time_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: float
        """
        return self._think_time_in_sec

    @think_time_in_sec.setter
    def think_time_in_sec(self, think_time_in_sec):
        """Sets the think_time_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        This is the preparation time given for the question before recording the actual answer.  # noqa: E501

        :param think_time_in_sec: The think_time_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: float
        """
        if think_time_in_sec is None:
            raise ValueError("Invalid value for `think_time_in_sec`, must not be `None`")  # noqa: E501

        self._think_time_in_sec = think_time_in_sec

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

        This field is applicable for non media question.  # noqa: E501

        :return: The answer_time_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: float
        """
        return self._answer_time_in_sec

    @answer_time_in_sec.setter
    def answer_time_in_sec(self, answer_time_in_sec):
        """Sets the answer_time_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        This field is applicable for non media question.  # noqa: E501

        :param answer_time_in_sec: The answer_time_in_sec of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: float
        """
        if answer_time_in_sec is None:
            raise ValueError("Invalid value for `answer_time_in_sec`, must not be `None`")  # noqa: E501

        self._answer_time_in_sec = answer_time_in_sec

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

        Indicates whether question is answered.  # noqa: E501

        :return: The answered of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: bool
        """
        return self._answered

    @answered.setter
    def answered(self, answered):
        """Sets the answered of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        Indicates whether question is answered.  # noqa: E501

        :param answered: The answered of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: bool
        """
        if answered is None:
            raise ValueError("Invalid value for `answered`, must not be `None`")  # noqa: E501

        self._answered = answered

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

        Max number of retakes allowed for a media question.  # noqa: E501

        :return: The max_number_retakes of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: float
        """
        return self._max_number_retakes

    @max_number_retakes.setter
    def max_number_retakes(self, max_number_retakes):
        """Sets the max_number_retakes of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        Max number of retakes allowed for a media question.  # noqa: E501

        :param max_number_retakes: The max_number_retakes of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: float
        """
        if max_number_retakes is None:
            raise ValueError("Invalid value for `max_number_retakes`, must not be `None`")  # noqa: E501

        self._max_number_retakes = max_number_retakes

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

        Pending retakes for a question.  # noqa: E501

        :return: The pending_retakes of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: float
        """
        return self._pending_retakes

    @pending_retakes.setter
    def pending_retakes(self, pending_retakes):
        """Sets the pending_retakes of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        Pending retakes for a question.  # noqa: E501

        :param pending_retakes: The pending_retakes of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: float
        """
        if pending_retakes is None:
            raise ValueError("Invalid value for `pending_retakes`, must not be `None`")  # noqa: E501

        self._pending_retakes = pending_retakes

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

        Indicates whether timer applied to a non media question.  # noqa: E501

        :return: The timed of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: bool
        """
        return self._timed

    @timed.setter
    def timed(self, timed):
        """Sets the timed of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        Indicates whether timer applied to a non media question.  # noqa: E501

        :param timed: The timed of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: bool
        """
        if timed is None:
            raise ValueError("Invalid value for `timed`, must not be `None`")  # noqa: E501

        self._timed = timed

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

        Question type can be a video, audio etc.  # noqa: E501

        :return: The type of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: str
        """
        return self._type

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

        Question type can be a video, audio etc.  # noqa: E501

        :param type: The type of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: str
        """
        if type is None:
            raise ValueError("Invalid value for `type`, must not be `None`")  # noqa: E501

        self._type = type

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

        Settings object is dynamic.  # noqa: E501

        :return: The settings of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: object
        """
        return self._settings

    @settings.setter
    def settings(self, settings):
        """Sets the settings of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        Settings object is dynamic.  # noqa: E501

        :param settings: The settings of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: object
        """
        if settings is None:
            raise ValueError("Invalid value for `settings`, must not be `None`")  # noqa: E501

        self._settings = settings

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

        Actual question id of the question created.  # noqa: E501

        :return: The question_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :rtype: str
        """
        return self._question_id

    @question_id.setter
    def question_id(self, question_id):
        """Sets the question_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.

        Actual question id of the question created.  # noqa: E501

        :param question_id: The question_id of this GetInterviewDetailsForEvaluatingResponseDataQuestions.  # noqa: E501
        :type: str
        """
        if question_id is None:
            raise ValueError("Invalid value for `question_id`, must not be `None`")  # noqa: E501

        self._question_id = question_id

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

        return self.__dict__ == other.__dict__

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