# 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 InviteCandidateResponseDataInvites(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_id': 'str',
        'candidate_id': 'str',
        'invitation_code': 'str',
        'expiry_in_days': 'float',
        'date_created': 'int',
        'interview_link': 'str',
        'interview_end_time': 'float',
        'auto_reminder_trigger_time': 'float',
        'auto_reminder_info': 'InviteCandidateResponseDataAutoReminderInfo',
        'status_code': 'float',
        'assessment_status': 'str',
        'status': 'str'
    }

    attribute_map = {
        'video_screen_id': 'videoScreenId',
        'candidate_id': 'candidateId',
        'invitation_code': 'invitationCode',
        'expiry_in_days': 'expiryInDays',
        'date_created': 'dateCreated',
        'interview_link': 'interviewLink',
        'interview_end_time': 'interviewEndTime',
        'auto_reminder_trigger_time': 'autoReminderTriggerTime',
        'auto_reminder_info': 'autoReminderInfo',
        'status_code': 'statusCode',
        'assessment_status': 'assessmentStatus',
        'status': 'status'
    }

    def __init__(self, video_screen_id=None, candidate_id=None, invitation_code=None, expiry_in_days=None, date_created=None, interview_link=None, interview_end_time=None, auto_reminder_trigger_time=None, auto_reminder_info=None, status_code=None, assessment_status=None, status=None):  # noqa: E501
        """InviteCandidateResponseDataInvites - a model defined in Swagger"""  # noqa: E501
        self._video_screen_id = None
        self._candidate_id = None
        self._invitation_code = None
        self._expiry_in_days = None
        self._date_created = None
        self._interview_link = None
        self._interview_end_time = None
        self._auto_reminder_trigger_time = None
        self._auto_reminder_info = None
        self._status_code = None
        self._assessment_status = None
        self._status = None
        self.discriminator = None
        self.video_screen_id = video_screen_id
        self.candidate_id = candidate_id
        self.invitation_code = invitation_code
        self.expiry_in_days = expiry_in_days
        self.date_created = date_created
        self.interview_link = interview_link
        self.interview_end_time = interview_end_time
        self.auto_reminder_trigger_time = auto_reminder_trigger_time
        self.auto_reminder_info = auto_reminder_info
        self.status_code = status_code
        self.assessment_status = assessment_status
        self.status = status

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

        This is the interview id.  # noqa: E501

        :return: The video_screen_id of this InviteCandidateResponseDataInvites.  # 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 InviteCandidateResponseDataInvites.

        This is the interview id.  # noqa: E501

        :param video_screen_id: The video_screen_id of this InviteCandidateResponseDataInvites.  # 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 candidate_id(self):
        """Gets the candidate_id of this InviteCandidateResponseDataInvites.  # noqa: E501

        Candidate id.  # noqa: E501

        :return: The candidate_id of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: str
        """
        return self._candidate_id

    @candidate_id.setter
    def candidate_id(self, candidate_id):
        """Sets the candidate_id of this InviteCandidateResponseDataInvites.

        Candidate id.  # noqa: E501

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

        self._candidate_id = candidate_id

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

        Invitation code for the invite sent.  # noqa: E501

        :return: The invitation_code of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: str
        """
        return self._invitation_code

    @invitation_code.setter
    def invitation_code(self, invitation_code):
        """Sets the invitation_code of this InviteCandidateResponseDataInvites.

        Invitation code for the invite sent.  # noqa: E501

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

        self._invitation_code = invitation_code

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

        Interview expiry days. Counts from the invited date.  # noqa: E501

        :return: The expiry_in_days of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: float
        """
        return self._expiry_in_days

    @expiry_in_days.setter
    def expiry_in_days(self, expiry_in_days):
        """Sets the expiry_in_days of this InviteCandidateResponseDataInvites.

        Interview expiry days. Counts from the invited date.  # noqa: E501

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

        self._expiry_in_days = expiry_in_days

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

        Date when invite sent.  # noqa: E501

        :return: The date_created of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: int
        """
        return self._date_created

    @date_created.setter
    def date_created(self, date_created):
        """Sets the date_created of this InviteCandidateResponseDataInvites.

        Date when invite sent.  # noqa: E501

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

        self._date_created = date_created

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

        Interview link.  # noqa: E501

        :return: The interview_link of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: str
        """
        return self._interview_link

    @interview_link.setter
    def interview_link(self, interview_link):
        """Sets the interview_link of this InviteCandidateResponseDataInvites.

        Interview link.  # noqa: E501

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

        self._interview_link = interview_link

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

        Expiry Timestamp  # noqa: E501

        :return: The interview_end_time of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: float
        """
        return self._interview_end_time

    @interview_end_time.setter
    def interview_end_time(self, interview_end_time):
        """Sets the interview_end_time of this InviteCandidateResponseDataInvites.

        Expiry Timestamp  # noqa: E501

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

        self._interview_end_time = interview_end_time

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

        Timestamp of when auto reminder should trigger.  # noqa: E501

        :return: The auto_reminder_trigger_time of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: float
        """
        return self._auto_reminder_trigger_time

    @auto_reminder_trigger_time.setter
    def auto_reminder_trigger_time(self, auto_reminder_trigger_time):
        """Sets the auto_reminder_trigger_time of this InviteCandidateResponseDataInvites.

        Timestamp of when auto reminder should trigger.  # noqa: E501

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

        self._auto_reminder_trigger_time = auto_reminder_trigger_time

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


        :return: The auto_reminder_info of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: InviteCandidateResponseDataAutoReminderInfo
        """
        return self._auto_reminder_info

    @auto_reminder_info.setter
    def auto_reminder_info(self, auto_reminder_info):
        """Sets the auto_reminder_info of this InviteCandidateResponseDataInvites.


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

        self._auto_reminder_info = auto_reminder_info

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

        0 for success, or specific error code for respective failure case.  # noqa: E501

        :return: The status_code of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: float
        """
        return self._status_code

    @status_code.setter
    def status_code(self, status_code):
        """Sets the status_code of this InviteCandidateResponseDataInvites.

        0 for success, or specific error code for respective failure case.  # noqa: E501

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

        self._status_code = status_code

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

        This is the invite status.  # noqa: E501

        :return: The assessment_status of this InviteCandidateResponseDataInvites.  # noqa: E501
        :rtype: str
        """
        return self._assessment_status

    @assessment_status.setter
    def assessment_status(self, assessment_status):
        """Sets the assessment_status of this InviteCandidateResponseDataInvites.

        This is the invite status.  # noqa: E501

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

        self._assessment_status = assessment_status

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

        Status whether invite is Success or Failure. for a candidate.  # noqa: E501

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

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

        Status whether invite is Success or Failure. for a candidate.  # noqa: E501

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

        self._status = status

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

        return self.__dict__ == other.__dict__

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