# coding: utf-8

"""
    BombBomb

    We make it easy to build relationships using simple videos.

    OpenAPI spec version: 2.0.20679
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
"""

from pprint import pformat
from six import iteritems
import re


class VideoEmailPrompt(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, template_id=None, email_subject_line=None, email_content=None, to_email_addresses=None, to_lists=None, jericho_id=None, prompt_subject=None, prompt_html=None, send_without_video=None, video_due_date=None, scheduled_send_date=None, do_not_apply_template=None):
        """
        VideoEmailPrompt - a model defined in Swagger

        :param dict swaggerTypes: The key is attribute name
                                  and the value is attribute type.
        :param dict attributeMap: The key is attribute name
                                  and the value is json key in definition.
        """
        self.swagger_types = {
            'id': 'str',
            'user_id': 'str',
            'template_id': 'str',
            'email_subject_line': 'str',
            'email_content': 'str',
            'to_email_addresses': 'list[str]',
            'to_lists': 'list[str]',
            'jericho_id': 'str',
            'prompt_subject': 'str',
            'prompt_html': 'str',
            'send_without_video': 'bool',
            'video_due_date': 'datetime',
            'scheduled_send_date': 'datetime',
            'video_id': 'str',
            'email_id': 'str',
            'job_id': 'str',
            'status': 'int',
            'do_not_apply_template': 'bool'
        }

        self.attribute_map = {
            'id': 'id',
            'user_id': 'userId',
            'template_id': 'templateId',
            'email_subject_line': 'emailSubjectLine',
            'email_content': 'emailContent',
            'to_email_addresses': 'toEmailAddresses',
            'to_lists': 'toLists',
            'jericho_id': 'jerichoId',
            'prompt_subject': 'promptSubject',
            'prompt_html': 'promptHtml',
            'send_without_video': 'sendWithoutVideo',
            'video_due_date': 'videoDueDate',
            'scheduled_send_date': 'scheduledSendDate',
            'video_id': 'videoId',
            'email_id': 'emailId',
            'job_id': 'jobId',
            'status': 'status',
            'do_not_apply_template': 'doNotApplyTemplate'
        }

        self._id = None
        self._user_id = None
        self._video_id = None
        self._email_id = None
        self._job_id = None
        self._status = None
        self._template_id = template_id
        self._email_subject_line = email_subject_line
        self._email_content = email_content
        self._to_email_addresses = to_email_addresses
        self._to_lists = to_lists
        self._jericho_id = jericho_id
        self._prompt_subject = prompt_subject
        self._prompt_html = prompt_html
        self._send_without_video = send_without_video
        self._video_due_date = video_due_date
        self._scheduled_send_date = scheduled_send_date
        self._do_not_apply_template = do_not_apply_template

    @property
    def id(self):
        """
        Gets the id of this VideoEmailPrompt.
        The identifier of the prompt. Read Only.

        :return: The id of this VideoEmailPrompt.
        :rtype: str
        """
        return self._id

    @property
    def user_id(self):
        """
        Gets the user_id of this VideoEmailPrompt.
        The prompt's owner. Read Only.

        :return: The user_id of this VideoEmailPrompt.
        :rtype: str
        """
        return self._user_id

    @property
    def template_id(self):
        """
        Gets the template_id of this VideoEmailPrompt.
        Optional. The email template to be used in the sent email, if none supplied, the users' default will be applied.

        :return: The template_id of this VideoEmailPrompt.
        :rtype: str
        """
        return self._template_id

    @template_id.setter
    def template_id(self, template_id):
        """
        Sets the template_id of this VideoEmailPrompt.
        Optional. The email template to be used in the sent email, if none supplied, the users' default will be applied.

        :param template_id: The template_id of this VideoEmailPrompt.
        :type: str
        """

        self._template_id = template_id

    @property
    def email_subject_line(self):
        """
        Gets the email_subject_line of this VideoEmailPrompt.
        The subject line of the final email

        :return: The email_subject_line of this VideoEmailPrompt.
        :rtype: str
        """
        return self._email_subject_line

    @email_subject_line.setter
    def email_subject_line(self, email_subject_line):
        """
        Sets the email_subject_line of this VideoEmailPrompt.
        The subject line of the final email

        :param email_subject_line: The email_subject_line of this VideoEmailPrompt.
        :type: str
        """

        self._email_subject_line = email_subject_line

    @property
    def email_content(self):
        """
        Gets the email_content of this VideoEmailPrompt.
        The HTML content of the final email

        :return: The email_content of this VideoEmailPrompt.
        :rtype: str
        """
        return self._email_content

    @email_content.setter
    def email_content(self, email_content):
        """
        Sets the email_content of this VideoEmailPrompt.
        The HTML content of the final email

        :param email_content: The email_content of this VideoEmailPrompt.
        :type: str
        """

        self._email_content = email_content

    @property
    def to_email_addresses(self):
        """
        Gets the to_email_addresses of this VideoEmailPrompt.
        Email addresses to send the final email to, can be mixed with listIds.

        :return: The to_email_addresses of this VideoEmailPrompt.
        :rtype: list[str]
        """
        return self._to_email_addresses

    @to_email_addresses.setter
    def to_email_addresses(self, to_email_addresses):
        """
        Sets the to_email_addresses of this VideoEmailPrompt.
        Email addresses to send the final email to, can be mixed with listIds.

        :param to_email_addresses: The to_email_addresses of this VideoEmailPrompt.
        :type: list[str]
        """

        self._to_email_addresses = to_email_addresses

    @property
    def to_lists(self):
        """
        Gets the to_lists of this VideoEmailPrompt.
        List Ids to send the final email to

        :return: The to_lists of this VideoEmailPrompt.
        :rtype: list[str]
        """
        return self._to_lists

    @to_lists.setter
    def to_lists(self, to_lists):
        """
        Sets the to_lists of this VideoEmailPrompt.
        List Ids to send the final email to

        :param to_lists: The to_lists of this VideoEmailPrompt.
        :type: list[str]
        """

        self._to_lists = to_lists

    @property
    def jericho_id(self):
        """
        Gets the jericho_id of this VideoEmailPrompt.
        If sent in a jericho context, this will have the jericho id

        :return: The jericho_id of this VideoEmailPrompt.
        :rtype: str
        """
        return self._jericho_id

    @jericho_id.setter
    def jericho_id(self, jericho_id):
        """
        Sets the jericho_id of this VideoEmailPrompt.
        If sent in a jericho context, this will have the jericho id

        :param jericho_id: The jericho_id of this VideoEmailPrompt.
        :type: str
        """

        self._jericho_id = jericho_id

    @property
    def prompt_subject(self):
        """
        Gets the prompt_subject of this VideoEmailPrompt.
        The prompt's subject line

        :return: The prompt_subject of this VideoEmailPrompt.
        :rtype: str
        """
        return self._prompt_subject

    @prompt_subject.setter
    def prompt_subject(self, prompt_subject):
        """
        Sets the prompt_subject of this VideoEmailPrompt.
        The prompt's subject line

        :param prompt_subject: The prompt_subject of this VideoEmailPrompt.
        :type: str
        """

        self._prompt_subject = prompt_subject

    @property
    def prompt_html(self):
        """
        Gets the prompt_html of this VideoEmailPrompt.
        The HTML body of the prompt

        :return: The prompt_html of this VideoEmailPrompt.
        :rtype: str
        """
        return self._prompt_html

    @prompt_html.setter
    def prompt_html(self, prompt_html):
        """
        Sets the prompt_html of this VideoEmailPrompt.
        The HTML body of the prompt

        :param prompt_html: The prompt_html of this VideoEmailPrompt.
        :type: str
        """

        self._prompt_html = prompt_html

    @property
    def send_without_video(self):
        """
        Gets the send_without_video of this VideoEmailPrompt.
        Whether to send the email if no video is recorded. If set to require a video, and none is added before the videoDueDate, the prompt is cancelled.

        :return: The send_without_video of this VideoEmailPrompt.
        :rtype: bool
        """
        return self._send_without_video

    @send_without_video.setter
    def send_without_video(self, send_without_video):
        """
        Sets the send_without_video of this VideoEmailPrompt.
        Whether to send the email if no video is recorded. If set to require a video, and none is added before the videoDueDate, the prompt is cancelled.

        :param send_without_video: The send_without_video of this VideoEmailPrompt.
        :type: bool
        """

        self._send_without_video = send_without_video

    @property
    def video_due_date(self):
        """
        Gets the video_due_date of this VideoEmailPrompt.
        When the video must be recorded by

        :return: The video_due_date of this VideoEmailPrompt.
        :rtype: datetime
        """
        return self._video_due_date

    @video_due_date.setter
    def video_due_date(self, video_due_date):
        """
        Sets the video_due_date of this VideoEmailPrompt.
        When the video must be recorded by

        :param video_due_date: The video_due_date of this VideoEmailPrompt.
        :type: datetime
        """

        self._video_due_date = video_due_date

    @property
    def scheduled_send_date(self):
        """
        Gets the scheduled_send_date of this VideoEmailPrompt.
        When the final email is scheduled to be sent

        :return: The scheduled_send_date of this VideoEmailPrompt.
        :rtype: datetime
        """
        return self._scheduled_send_date

    @scheduled_send_date.setter
    def scheduled_send_date(self, scheduled_send_date):
        """
        Sets the scheduled_send_date of this VideoEmailPrompt.
        When the final email is scheduled to be sent

        :param scheduled_send_date: The scheduled_send_date of this VideoEmailPrompt.
        :type: datetime
        """

        self._scheduled_send_date = scheduled_send_date

    @property
    def video_id(self):
        """
        Gets the video_id of this VideoEmailPrompt.
        The video that was added to the prompt. Read Only.

        :return: The video_id of this VideoEmailPrompt.
        :rtype: str
        """
        return self._video_id

    @property
    def email_id(self):
        """
        Gets the email_id of this VideoEmailPrompt.
        The email that was created by the prompt Read Only.

        :return: The email_id of this VideoEmailPrompt.
        :rtype: str
        """
        return self._email_id

    @property
    def job_id(self):
        """
        Gets the job_id of this VideoEmailPrompt.
        The job sent by the prompt Read Only.

        :return: The job_id of this VideoEmailPrompt.
        :rtype: str
        """
        return self._job_id

    @property
    def status(self):
        """
        Gets the status of this VideoEmailPrompt.
        The status of the prompt: created = 0, sent = 10, recorded = 20, job_created = 30, timed_out = 40, declined = 50 Read Only

        :return: The status of this VideoEmailPrompt.
        :rtype: int
        """
        return self._status

    @property
    def do_not_apply_template(self):
        """
        Gets the do_not_apply_template of this VideoEmailPrompt.
        Controls whether a user template is applied to the message as it is sent

        :return: The do_not_apply_template of this VideoEmailPrompt.
        :rtype: bool
        """
        return self._do_not_apply_template

    @do_not_apply_template.setter
    def do_not_apply_template(self, do_not_apply_template):
        """
        Sets the do_not_apply_template of this VideoEmailPrompt.
        Controls whether a user template is applied to the message as it is sent

        :param do_not_apply_template: The do_not_apply_template of this VideoEmailPrompt.
        :type: bool
        """

        self._do_not_apply_template = do_not_apply_template

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in 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

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return 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
        """
        return self.__dict__ == other.__dict__

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