# coding: utf-8

"""
    Curia Platform API

    These are the docs for the curia platform API. To test, generate an authorization token first.  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class CohortWindow(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 = {
        'cohort_logic': 'str',
        'outcome_logic': 'str',
        'intervention_logic': 'str',
        'period_definitions': 'list[PeriodDefinition]',
        'outcome_type': 'str',
        'cohort_filters': 'list[CohortFilter]',
        'outcome_total_cost': 'float',
        'outcome_list_query': 'str',
        'outcome_count_query': 'str',
        'intervention_list_query': 'str',
        'intervention_count_query': 'str',
        'cohort_list_query': 'str',
        'cohort_count_query': 'str',
        'outcome_count': 'float',
        'intervention_count': 'float',
        'cohort_count': 'float'
    }

    attribute_map = {
        'cohort_logic': 'cohortLogic',
        'outcome_logic': 'outcomeLogic',
        'intervention_logic': 'interventionLogic',
        'period_definitions': 'periodDefinitions',
        'outcome_type': 'outcomeType',
        'cohort_filters': 'cohortFilters',
        'outcome_total_cost': 'outcomeTotalCost',
        'outcome_list_query': 'outcomeListQuery',
        'outcome_count_query': 'outcomeCountQuery',
        'intervention_list_query': 'interventionListQuery',
        'intervention_count_query': 'interventionCountQuery',
        'cohort_list_query': 'cohortListQuery',
        'cohort_count_query': 'cohortCountQuery',
        'outcome_count': 'outcomeCount',
        'intervention_count': 'interventionCount',
        'cohort_count': 'cohortCount'
    }

    def __init__(self, cohort_logic=None, outcome_logic=None, intervention_logic=None, period_definitions=None, outcome_type=None, cohort_filters=None, outcome_total_cost=None, outcome_list_query=None, outcome_count_query=None, intervention_list_query=None, intervention_count_query=None, cohort_list_query=None, cohort_count_query=None, outcome_count=None, intervention_count=None, cohort_count=None):  # noqa: E501
        """CohortWindow - a model defined in Swagger"""  # noqa: E501
        self._cohort_logic = None
        self._outcome_logic = None
        self._intervention_logic = None
        self._period_definitions = None
        self._outcome_type = None
        self._cohort_filters = None
        self._outcome_total_cost = None
        self._outcome_list_query = None
        self._outcome_count_query = None
        self._intervention_list_query = None
        self._intervention_count_query = None
        self._cohort_list_query = None
        self._cohort_count_query = None
        self._outcome_count = None
        self._intervention_count = None
        self._cohort_count = None
        self.discriminator = None
        self.cohort_logic = cohort_logic
        self.outcome_logic = outcome_logic
        self.intervention_logic = intervention_logic
        self.period_definitions = period_definitions
        self.outcome_type = outcome_type
        self.cohort_filters = cohort_filters
        self.outcome_total_cost = outcome_total_cost
        self.outcome_list_query = outcome_list_query
        self.outcome_count_query = outcome_count_query
        self.intervention_list_query = intervention_list_query
        self.intervention_count_query = intervention_count_query
        self.cohort_list_query = cohort_list_query
        self.cohort_count_query = cohort_count_query
        self.outcome_count = outcome_count
        self.intervention_count = intervention_count
        self.cohort_count = cohort_count

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


        :return: The cohort_logic of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._cohort_logic

    @cohort_logic.setter
    def cohort_logic(self, cohort_logic):
        """Sets the cohort_logic of this CohortWindow.


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

        self._cohort_logic = cohort_logic

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


        :return: The outcome_logic of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._outcome_logic

    @outcome_logic.setter
    def outcome_logic(self, outcome_logic):
        """Sets the outcome_logic of this CohortWindow.


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

        self._outcome_logic = outcome_logic

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


        :return: The intervention_logic of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._intervention_logic

    @intervention_logic.setter
    def intervention_logic(self, intervention_logic):
        """Sets the intervention_logic of this CohortWindow.


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

        self._intervention_logic = intervention_logic

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


        :return: The period_definitions of this CohortWindow.  # noqa: E501
        :rtype: list[PeriodDefinition]
        """
        return self._period_definitions

    @period_definitions.setter
    def period_definitions(self, period_definitions):
        """Sets the period_definitions of this CohortWindow.


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

        self._period_definitions = period_definitions

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


        :return: The outcome_type of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._outcome_type

    @outcome_type.setter
    def outcome_type(self, outcome_type):
        """Sets the outcome_type of this CohortWindow.


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

        self._outcome_type = outcome_type

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


        :return: The cohort_filters of this CohortWindow.  # noqa: E501
        :rtype: list[CohortFilter]
        """
        return self._cohort_filters

    @cohort_filters.setter
    def cohort_filters(self, cohort_filters):
        """Sets the cohort_filters of this CohortWindow.


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

        self._cohort_filters = cohort_filters

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


        :return: The outcome_total_cost of this CohortWindow.  # noqa: E501
        :rtype: float
        """
        return self._outcome_total_cost

    @outcome_total_cost.setter
    def outcome_total_cost(self, outcome_total_cost):
        """Sets the outcome_total_cost of this CohortWindow.


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

        self._outcome_total_cost = outcome_total_cost

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


        :return: The outcome_list_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._outcome_list_query

    @outcome_list_query.setter
    def outcome_list_query(self, outcome_list_query):
        """Sets the outcome_list_query of this CohortWindow.


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

        self._outcome_list_query = outcome_list_query

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


        :return: The outcome_count_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._outcome_count_query

    @outcome_count_query.setter
    def outcome_count_query(self, outcome_count_query):
        """Sets the outcome_count_query of this CohortWindow.


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

        self._outcome_count_query = outcome_count_query

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


        :return: The intervention_list_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._intervention_list_query

    @intervention_list_query.setter
    def intervention_list_query(self, intervention_list_query):
        """Sets the intervention_list_query of this CohortWindow.


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

        self._intervention_list_query = intervention_list_query

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


        :return: The intervention_count_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._intervention_count_query

    @intervention_count_query.setter
    def intervention_count_query(self, intervention_count_query):
        """Sets the intervention_count_query of this CohortWindow.


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

        self._intervention_count_query = intervention_count_query

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


        :return: The cohort_list_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._cohort_list_query

    @cohort_list_query.setter
    def cohort_list_query(self, cohort_list_query):
        """Sets the cohort_list_query of this CohortWindow.


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

        self._cohort_list_query = cohort_list_query

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


        :return: The cohort_count_query of this CohortWindow.  # noqa: E501
        :rtype: str
        """
        return self._cohort_count_query

    @cohort_count_query.setter
    def cohort_count_query(self, cohort_count_query):
        """Sets the cohort_count_query of this CohortWindow.


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

        self._cohort_count_query = cohort_count_query

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


        :return: The outcome_count of this CohortWindow.  # noqa: E501
        :rtype: float
        """
        return self._outcome_count

    @outcome_count.setter
    def outcome_count(self, outcome_count):
        """Sets the outcome_count of this CohortWindow.


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

        self._outcome_count = outcome_count

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


        :return: The intervention_count of this CohortWindow.  # noqa: E501
        :rtype: float
        """
        return self._intervention_count

    @intervention_count.setter
    def intervention_count(self, intervention_count):
        """Sets the intervention_count of this CohortWindow.


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

        self._intervention_count = intervention_count

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


        :return: The cohort_count of this CohortWindow.  # noqa: E501
        :rtype: float
        """
        return self._cohort_count

    @cohort_count.setter
    def cohort_count(self, cohort_count):
        """Sets the cohort_count of this CohortWindow.


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

        self._cohort_count = cohort_count

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

        return self.__dict__ == other.__dict__

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