# 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 CreatePrivateInvitationSchema(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 = {
        'course_id': 'str',
        'creating_user_email': 'str',
        'invitation_email': 'InvitationEmailSchema',
        'post_back': 'PostBackSchema',
        'expiration_date': 'datetime',
        'tags': 'list[str]'
    }

    attribute_map = {
        'course_id': 'courseId',
        'creating_user_email': 'creatingUserEmail',
        'invitation_email': 'invitationEmail',
        'post_back': 'postBack',
        'expiration_date': 'expirationDate',
        'tags': 'tags'
    }

    def __init__(self, course_id=None, creating_user_email=None, invitation_email=None, post_back=None, expiration_date=None, tags=None):  # noqa: E501
        """CreatePrivateInvitationSchema - a model defined in Swagger"""  # noqa: E501

        self._course_id = None
        self._creating_user_email = None
        self._invitation_email = None
        self._post_back = None
        self._expiration_date = None
        self._tags = None
        self.discriminator = None

        self.course_id = course_id
        self.creating_user_email = creating_user_email
        self.invitation_email = invitation_email
        if post_back is not None:
            self.post_back = post_back
        if expiration_date is not None:
            self.expiration_date = expiration_date
        if tags is not None:
            self.tags = tags

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

        The id of the course for which to create an invitation.  # noqa: E501

        :return: The course_id of this CreatePrivateInvitationSchema.  # noqa: E501
        :rtype: str
        """
        return self._course_id

    @course_id.setter
    def course_id(self, course_id):
        """Sets the course_id of this CreatePrivateInvitationSchema.

        The id of the course for which to create an invitation.  # noqa: E501

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

        self._course_id = course_id

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

        The email of the user who is creating the invitation.  # noqa: E501

        :return: The creating_user_email of this CreatePrivateInvitationSchema.  # noqa: E501
        :rtype: str
        """
        return self._creating_user_email

    @creating_user_email.setter
    def creating_user_email(self, creating_user_email):
        """Sets the creating_user_email of this CreatePrivateInvitationSchema.

        The email of the user who is creating the invitation.  # noqa: E501

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

        self._creating_user_email = creating_user_email

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

        :return: The invitation_email of this CreatePrivateInvitationSchema.  # noqa: E501
        :rtype: InvitationEmailSchema
        """
        return self._invitation_email

    @invitation_email.setter
    def invitation_email(self, invitation_email):
        """Sets the invitation_email of this CreatePrivateInvitationSchema.

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

        self._invitation_email = invitation_email

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

        Specifies a URL for which to post activity and status data in real time as the course is completed  # noqa: E501

        :return: The post_back of this CreatePrivateInvitationSchema.  # noqa: E501
        :rtype: PostBackSchema
        """
        return self._post_back

    @post_back.setter
    def post_back(self, post_back):
        """Sets the post_back of this CreatePrivateInvitationSchema.

        Specifies a URL for which to post activity and status data in real time as the course is completed  # noqa: E501

        :param post_back: The post_back of this CreatePrivateInvitationSchema.  # noqa: E501
        :type: PostBackSchema
        """

        self._post_back = post_back

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

        The ISO 8601 TimeStamp (defaults to UTC) after which this invitation will expire and can no longer be launched. An empty value will represent no expiration date.   # noqa: E501

        :return: The expiration_date of this CreatePrivateInvitationSchema.  # noqa: E501
        :rtype: datetime
        """
        return self._expiration_date

    @expiration_date.setter
    def expiration_date(self, expiration_date):
        """Sets the expiration_date of this CreatePrivateInvitationSchema.

        The ISO 8601 TimeStamp (defaults to UTC) after which this invitation will expire and can no longer be launched. An empty value will represent no expiration date.   # noqa: E501

        :param expiration_date: The expiration_date of this CreatePrivateInvitationSchema.  # noqa: E501
        :type: datetime
        """

        self._expiration_date = expiration_date

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

        Optional tags to be applied to this invitation.  # noqa: E501

        :return: The tags of this CreatePrivateInvitationSchema.  # noqa: E501
        :rtype: list[str]
        """
        return self._tags

    @tags.setter
    def tags(self, tags):
        """Sets the tags of this CreatePrivateInvitationSchema.

        Optional tags to be applied to this invitation.  # noqa: E501

        :param tags: The tags of this CreatePrivateInvitationSchema.  # noqa: E501
        :type: list[str]
        """

        self._tags = tags

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

        return self.__dict__ == other.__dict__

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