# 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 GetInterviewDetailsForEvaluatingResponseData(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 = {
        'status': 'str',
        'video_screen_id': 'str',
        'restart_count': 'float',
        're_invite_count': 'float',
        'interview_details': 'GetInterviewDetailsForEvaluatingResponseDataInterviewDetails',
        'candidate_info': 'GetInterviewDetailsForEvaluatingResponseDataCandidateInfo',
        'questions': 'list[GetInterviewDetailsForEvaluatingResponseDataQuestions]',
        'video_deleted': 'bool',
        'transcribe_enabled': 'bool',
        'assessment_late_submitted': 'bool',
        'total_score_percentage': 'str',
        'answered_score_points': 'float',
        'max_score_points': 'float',
        'has_scored_question': 'bool'
    }

    attribute_map = {
        'status': 'status',
        'video_screen_id': 'videoScreenId',
        'restart_count': 'restartCount',
        're_invite_count': 'reInviteCount',
        'interview_details': 'interviewDetails',
        'candidate_info': 'candidateInfo',
        'questions': 'questions',
        'video_deleted': 'videoDeleted',
        'transcribe_enabled': 'transcribeEnabled',
        'assessment_late_submitted': 'assessmentLateSubmitted',
        'total_score_percentage': 'totalScorePercentage',
        'answered_score_points': 'answeredScorePoints',
        'max_score_points': 'maxScorePoints',
        'has_scored_question': 'hasScoredQuestion'
    }

    def __init__(self, status=None, video_screen_id=None, restart_count=None, re_invite_count=None, interview_details=None, candidate_info=None, questions=None, video_deleted=None, transcribe_enabled=None, assessment_late_submitted=None, total_score_percentage=None, answered_score_points=None, max_score_points=None, has_scored_question=None):  # noqa: E501
        """GetInterviewDetailsForEvaluatingResponseData - a model defined in Swagger"""  # noqa: E501
        self._status = None
        self._video_screen_id = None
        self._restart_count = None
        self._re_invite_count = None
        self._interview_details = None
        self._candidate_info = None
        self._questions = None
        self._video_deleted = None
        self._transcribe_enabled = None
        self._assessment_late_submitted = None
        self._total_score_percentage = None
        self._answered_score_points = None
        self._max_score_points = None
        self._has_scored_question = None
        self.discriminator = None
        self.status = status
        self.video_screen_id = video_screen_id
        if restart_count is not None:
            self.restart_count = restart_count
        if re_invite_count is not None:
            self.re_invite_count = re_invite_count
        self.interview_details = interview_details
        self.candidate_info = candidate_info
        self.questions = questions
        if video_deleted is not None:
            self.video_deleted = video_deleted
        self.transcribe_enabled = transcribe_enabled
        self.assessment_late_submitted = assessment_late_submitted
        self.total_score_percentage = total_score_percentage
        self.answered_score_points = answered_score_points
        self.max_score_points = max_score_points
        self.has_scored_question = has_scored_question

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

        Success or Failure.  # noqa: E501

        :return: The status of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this GetInterviewDetailsForEvaluatingResponseData.

        Success or Failure.  # noqa: E501

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

        self._status = status

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

        This is the interviewId.  # noqa: E501

        :return: The video_screen_id of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: str
        """
        return self._video_screen_id

    @video_screen_id.setter
    def video_screen_id(self, video_screen_id):
        """Sets the video_screen_id of this GetInterviewDetailsForEvaluatingResponseData.

        This is the interviewId.  # noqa: E501

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

        self._video_screen_id = video_screen_id

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

        This indicates how many times candidate has restarted the interview.  # noqa: E501

        :return: The restart_count of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: float
        """
        return self._restart_count

    @restart_count.setter
    def restart_count(self, restart_count):
        """Sets the restart_count of this GetInterviewDetailsForEvaluatingResponseData.

        This indicates how many times candidate has restarted the interview.  # noqa: E501

        :param restart_count: The restart_count of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :type: float
        """

        self._restart_count = restart_count

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

        This indicates how many times invite has been sent to candidate.  # noqa: E501

        :return: The re_invite_count of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: float
        """
        return self._re_invite_count

    @re_invite_count.setter
    def re_invite_count(self, re_invite_count):
        """Sets the re_invite_count of this GetInterviewDetailsForEvaluatingResponseData.

        This indicates how many times invite has been sent to candidate.  # noqa: E501

        :param re_invite_count: The re_invite_count of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :type: float
        """

        self._re_invite_count = re_invite_count

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


        :return: The interview_details of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: GetInterviewDetailsForEvaluatingResponseDataInterviewDetails
        """
        return self._interview_details

    @interview_details.setter
    def interview_details(self, interview_details):
        """Sets the interview_details of this GetInterviewDetailsForEvaluatingResponseData.


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

        self._interview_details = interview_details

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


        :return: The candidate_info of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: GetInterviewDetailsForEvaluatingResponseDataCandidateInfo
        """
        return self._candidate_info

    @candidate_info.setter
    def candidate_info(self, candidate_info):
        """Sets the candidate_info of this GetInterviewDetailsForEvaluatingResponseData.


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

        self._candidate_info = candidate_info

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

        This provides all questions.  # noqa: E501

        :return: The questions of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: list[GetInterviewDetailsForEvaluatingResponseDataQuestions]
        """
        return self._questions

    @questions.setter
    def questions(self, questions):
        """Sets the questions of this GetInterviewDetailsForEvaluatingResponseData.

        This provides all questions.  # noqa: E501

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

        self._questions = questions

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

        Video deleted can be true or false.  # noqa: E501

        :return: The video_deleted of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: bool
        """
        return self._video_deleted

    @video_deleted.setter
    def video_deleted(self, video_deleted):
        """Sets the video_deleted of this GetInterviewDetailsForEvaluatingResponseData.

        Video deleted can be true or false.  # noqa: E501

        :param video_deleted: The video_deleted of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :type: bool
        """

        self._video_deleted = video_deleted

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

        Transcribe enabled can be true or false.  # noqa: E501

        :return: The transcribe_enabled of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: bool
        """
        return self._transcribe_enabled

    @transcribe_enabled.setter
    def transcribe_enabled(self, transcribe_enabled):
        """Sets the transcribe_enabled of this GetInterviewDetailsForEvaluatingResponseData.

        Transcribe enabled can be true or false.  # noqa: E501

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

        self._transcribe_enabled = transcribe_enabled

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

        Candidate submitted assessment late can be true or false.  # noqa: E501

        :return: The assessment_late_submitted of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: bool
        """
        return self._assessment_late_submitted

    @assessment_late_submitted.setter
    def assessment_late_submitted(self, assessment_late_submitted):
        """Sets the assessment_late_submitted of this GetInterviewDetailsForEvaluatingResponseData.

        Candidate submitted assessment late can be true or false.  # noqa: E501

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

        self._assessment_late_submitted = assessment_late_submitted

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

        Percentage score candidate has scored when he answered single choice question.  # noqa: E501

        :return: The total_score_percentage of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: str
        """
        return self._total_score_percentage

    @total_score_percentage.setter
    def total_score_percentage(self, total_score_percentage):
        """Sets the total_score_percentage of this GetInterviewDetailsForEvaluatingResponseData.

        Percentage score candidate has scored when he answered single choice question.  # noqa: E501

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

        self._total_score_percentage = total_score_percentage

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

        Score value for all single choice question answered.  # noqa: E501

        :return: The answered_score_points of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: float
        """
        return self._answered_score_points

    @answered_score_points.setter
    def answered_score_points(self, answered_score_points):
        """Sets the answered_score_points of this GetInterviewDetailsForEvaluatingResponseData.

        Score value for all single choice question answered.  # noqa: E501

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

        self._answered_score_points = answered_score_points

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

        Max score points available for question.  # noqa: E501

        :return: The max_score_points of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: float
        """
        return self._max_score_points

    @max_score_points.setter
    def max_score_points(self, max_score_points):
        """Sets the max_score_points of this GetInterviewDetailsForEvaluatingResponseData.

        Max score points available for question.  # noqa: E501

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

        self._max_score_points = max_score_points

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

        Has scored question can be true or false.  # noqa: E501

        :return: The has_scored_question of this GetInterviewDetailsForEvaluatingResponseData.  # noqa: E501
        :rtype: bool
        """
        return self._has_scored_question

    @has_scored_question.setter
    def has_scored_question(self, has_scored_question):
        """Sets the has_scored_question of this GetInterviewDetailsForEvaluatingResponseData.

        Has scored question can be true or false.  # noqa: E501

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

        self._has_scored_question = has_scored_question

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

        return self.__dict__ == other.__dict__

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