# coding: utf-8

"""
    Seeq REST API

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)

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


from pprint import pformat
from six import iteritems
import re


class OptionalReportInputV1(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 = {
        'asset_selection_ids': 'list[str]',
        'background': 'bool',
        'content_ids': 'list[str]',
        'cron_schedule': 'list[str]',
        'date_range_ids': 'list[str]',
        'enabled': 'bool',
        'step_to_now': 'bool'
    }

    attribute_map = {
        'asset_selection_ids': 'assetSelectionIds',
        'background': 'background',
        'content_ids': 'contentIds',
        'cron_schedule': 'cronSchedule',
        'date_range_ids': 'dateRangeIds',
        'enabled': 'enabled',
        'step_to_now': 'stepToNow'
    }

    def __init__(self, asset_selection_ids=None, background=False, content_ids=None, cron_schedule=None, date_range_ids=None, enabled=True, step_to_now=False):
        """
        OptionalReportInputV1 - a model defined in Swagger
        """

        self._asset_selection_ids = None
        self._background = None
        self._content_ids = None
        self._cron_schedule = None
        self._date_range_ids = None
        self._enabled = None
        self._step_to_now = None

        if asset_selection_ids is not None:
          self.asset_selection_ids = asset_selection_ids
        if background is not None:
          self.background = background
        if content_ids is not None:
          self.content_ids = content_ids
        if cron_schedule is not None:
          self.cron_schedule = cron_schedule
        if date_range_ids is not None:
          self.date_range_ids = date_range_ids
        if enabled is not None:
          self.enabled = enabled
        if step_to_now is not None:
          self.step_to_now = step_to_now

    @property
    def asset_selection_ids(self):
        """
        Gets the asset_selection_ids of this OptionalReportInputV1.
        The IDs of Asset Selections included in this Report. Ignored for Journals. When omitted, does not change existing Asset Selections on this Report. Set to an empty list to remove allAsset Selections from Report.

        :return: The asset_selection_ids of this OptionalReportInputV1.
        :rtype: list[str]
        """
        return self._asset_selection_ids

    @asset_selection_ids.setter
    def asset_selection_ids(self, asset_selection_ids):
        """
        Sets the asset_selection_ids of this OptionalReportInputV1.
        The IDs of Asset Selections included in this Report. Ignored for Journals. When omitted, does not change existing Asset Selections on this Report. Set to an empty list to remove allAsset Selections from Report.

        :param asset_selection_ids: The asset_selection_ids of this OptionalReportInputV1.
        :type: list[str]
        """

        self._asset_selection_ids = asset_selection_ids

    @property
    def background(self):
        """
        Gets the background of this OptionalReportInputV1.
        Whether the report, if scheduled, should continue to update if there are no subscribers(i.e. in the background)

        :return: The background of this OptionalReportInputV1.
        :rtype: bool
        """
        return self._background

    @background.setter
    def background(self, background):
        """
        Sets the background of this OptionalReportInputV1.
        Whether the report, if scheduled, should continue to update if there are no subscribers(i.e. in the background)

        :param background: The background of this OptionalReportInputV1.
        :type: bool
        """

        self._background = background

    @property
    def content_ids(self):
        """
        Gets the content_ids of this OptionalReportInputV1.
        The IDs of Content included in this Report. Ignored for Journals. When omitted, does not change existing content on this Report. Set to an empty list to remove all content from Report.

        :return: The content_ids of this OptionalReportInputV1.
        :rtype: list[str]
        """
        return self._content_ids

    @content_ids.setter
    def content_ids(self, content_ids):
        """
        Sets the content_ids of this OptionalReportInputV1.
        The IDs of Content included in this Report. Ignored for Journals. When omitted, does not change existing content on this Report. Set to an empty list to remove all content from Report.

        :param content_ids: The content_ids of this OptionalReportInputV1.
        :type: list[str]
        """

        self._content_ids = content_ids

    @property
    def cron_schedule(self):
        """
        Gets the cron_schedule of this OptionalReportInputV1.
        The report's update schedule as a cron expression (see http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html)

        :return: The cron_schedule of this OptionalReportInputV1.
        :rtype: list[str]
        """
        return self._cron_schedule

    @cron_schedule.setter
    def cron_schedule(self, cron_schedule):
        """
        Sets the cron_schedule of this OptionalReportInputV1.
        The report's update schedule as a cron expression (see http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html)

        :param cron_schedule: The cron_schedule of this OptionalReportInputV1.
        :type: list[str]
        """

        self._cron_schedule = cron_schedule

    @property
    def date_range_ids(self):
        """
        Gets the date_range_ids of this OptionalReportInputV1.
        The IDs of Date Ranges included in this Report. Ignored for Journals. When omitted, does not change existing date ranges on this Report. Set to an empty list to remove all date ranges from Report.

        :return: The date_range_ids of this OptionalReportInputV1.
        :rtype: list[str]
        """
        return self._date_range_ids

    @date_range_ids.setter
    def date_range_ids(self, date_range_ids):
        """
        Sets the date_range_ids of this OptionalReportInputV1.
        The IDs of Date Ranges included in this Report. Ignored for Journals. When omitted, does not change existing date ranges on this Report. Set to an empty list to remove all date ranges from Report.

        :param date_range_ids: The date_range_ids of this OptionalReportInputV1.
        :type: list[str]
        """

        self._date_range_ids = date_range_ids

    @property
    def enabled(self):
        """
        Gets the enabled of this OptionalReportInputV1.
        Whether the report is enabled to run jobs

        :return: The enabled of this OptionalReportInputV1.
        :rtype: bool
        """
        return self._enabled

    @enabled.setter
    def enabled(self, enabled):
        """
        Sets the enabled of this OptionalReportInputV1.
        Whether the report is enabled to run jobs

        :param enabled: The enabled of this OptionalReportInputV1.
        :type: bool
        """

        self._enabled = enabled

    @property
    def step_to_now(self):
        """
        Gets the step_to_now of this OptionalReportInputV1.
        Whether the scheduled report should update its value for 'now'

        :return: The step_to_now of this OptionalReportInputV1.
        :rtype: bool
        """
        return self._step_to_now

    @step_to_now.setter
    def step_to_now(self, step_to_now):
        """
        Sets the step_to_now of this OptionalReportInputV1.
        Whether the scheduled report should update its value for 'now'

        :param step_to_now: The step_to_now of this OptionalReportInputV1.
        :type: bool
        """

        self._step_to_now = step_to_now

    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
        """
        if not isinstance(other, OptionalReportInputV1):
            return False

        return self.__dict__ == other.__dict__

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