# coding: utf-8

"""
    Asana

    This is the interface for interacting with the [Asana Platform](https://developers.asana.com). Our API reference is generated from our [OpenAPI spec] (https://raw.githubusercontent.com/Asana/openapi/master/defs/asana_oas.yaml).  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class ProjectDuplicateRequestScheduleDates(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 = {
        'should_skip_weekends': 'bool',
        'due_on': 'str',
        'start_on': 'str'
    }

    attribute_map = {
        'should_skip_weekends': 'should_skip_weekends',
        'due_on': 'due_on',
        'start_on': 'start_on'
    }

    def __init__(self, should_skip_weekends=None, due_on=None, start_on=None):  # noqa: E501
        """ProjectDuplicateRequestScheduleDates - a model defined in Swagger"""  # noqa: E501
        self._should_skip_weekends = None
        self._due_on = None
        self._start_on = None
        self.discriminator = None
        self.should_skip_weekends = should_skip_weekends
        if due_on is not None:
            self.due_on = due_on
        if start_on is not None:
            self.start_on = start_on

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

        Determines if the auto-shifted dates should skip weekends.  # noqa: E501

        :return: The should_skip_weekends of this ProjectDuplicateRequestScheduleDates.  # noqa: E501
        :rtype: bool
        """
        return self._should_skip_weekends

    @should_skip_weekends.setter
    def should_skip_weekends(self, should_skip_weekends):
        """Sets the should_skip_weekends of this ProjectDuplicateRequestScheduleDates.

        Determines if the auto-shifted dates should skip weekends.  # noqa: E501

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

        self._should_skip_weekends = should_skip_weekends

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

        Sets the last due date in the duplicated project to the given date. The rest of the due dates will be offset by the same amount as the due dates in the original project.  # noqa: E501

        :return: The due_on of this ProjectDuplicateRequestScheduleDates.  # noqa: E501
        :rtype: str
        """
        return self._due_on

    @due_on.setter
    def due_on(self, due_on):
        """Sets the due_on of this ProjectDuplicateRequestScheduleDates.

        Sets the last due date in the duplicated project to the given date. The rest of the due dates will be offset by the same amount as the due dates in the original project.  # noqa: E501

        :param due_on: The due_on of this ProjectDuplicateRequestScheduleDates.  # noqa: E501
        :type: str
        """

        self._due_on = due_on

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

        Sets the first start date in the duplicated project to the given date. The rest of the start dates will be offset by the same amount as the start dates in the original project.  # noqa: E501

        :return: The start_on of this ProjectDuplicateRequestScheduleDates.  # noqa: E501
        :rtype: str
        """
        return self._start_on

    @start_on.setter
    def start_on(self, start_on):
        """Sets the start_on of this ProjectDuplicateRequestScheduleDates.

        Sets the first start date in the duplicated project to the given date. The rest of the start dates will be offset by the same amount as the start dates in the original project.  # noqa: E501

        :param start_on: The start_on of this ProjectDuplicateRequestScheduleDates.  # noqa: E501
        :type: str
        """

        self._start_on = start_on

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

        return self.__dict__ == other.__dict__

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