/*
 * 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/developer-docs/master/defs/asana_oas.yaml).
 *
 * The version of the OpenAPI document: 1.0
 *
 * Generated by: https://openapi-generator.tech
 */

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ProjectDuplicateRequest {
    /// The name of the new project.
    #[serde(rename = "name")]
    pub name: String,
    /// Sets the team of the new project. If team is not defined, the new project will be in the same team as the the original project.
    #[serde(rename = "team", skip_serializing_if = "Option::is_none")]
    pub team: Option<String>,
    /// The elements that will be duplicated to the new project. Tasks are always included.
    #[serde(rename = "include", skip_serializing_if = "Option::is_none")]
    pub include: Option<Include>,
    #[serde(rename = "schedule_dates", skip_serializing_if = "Option::is_none")]
    pub schedule_dates: Option<Box<crate::models::ProjectDuplicateRequestScheduleDates>>,
}

impl ProjectDuplicateRequest {
    pub fn new(name: String) -> ProjectDuplicateRequest {
        ProjectDuplicateRequest { name, team: None, include: None, schedule_dates: None }
    }
}

/// The elements that will be duplicated to the new project. Tasks are always included.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Include {
    #[serde(rename = "members")]
    Members,
    #[serde(rename = "notes")]
    Notes,
    #[serde(rename = "task_notes")]
    TaskNotes,
    #[serde(rename = "task_assignee")]
    TaskAssignee,
    #[serde(rename = "task_subtasks")]
    TaskSubtasks,
    #[serde(rename = "task_attachments")]
    TaskAttachments,
    #[serde(rename = "task_dates")]
    TaskDates,
    #[serde(rename = "task_dependencies")]
    TaskDependencies,
    #[serde(rename = "task_followers")]
    TaskFollowers,
    #[serde(rename = "task_tags")]
    TaskTags,
    #[serde(rename = "task_projects")]
    TaskProjects,
}
