using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using Top.Api.Util;
using Top.Api;
using Top.Api.DingTalk;
namespace DingTalk.Api.Request
{
    /// 
    /// TOP API: dingtalk.oapi.workspace.task.create
    /// 
    public class OapiWorkspaceTaskCreateRequest : BaseDingTalkRequest
    {
        /// 
        /// 微应用agentId
        /// 
        public Nullable MicroappAgentId { get; set; }
        /// 
        /// 操作者id
        /// 
        public string OperatorUserid { get; set; }
        /// 
        /// 请求入参
        /// 
        public string Task { get; set; }
        public TaskCreateDomain Task_ { set { this.Task = TopUtils.ObjectToJson(value); } } 
        #region IDingTalkRequest Members
        public override string GetApiName()
        {
            return "dingtalk.oapi.workspace.task.create";
        }
        public override string GetApiCallType()
        {
            return DingTalkConstants.CALL_TYPE_OAPI;
        }
        public override IDictionary GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("microapp_agent_id", this.MicroappAgentId);
            parameters.Add("operator_userid", this.OperatorUserid);
            parameters.Add("task", this.Task);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }
        public override void Validate()
        {
            RequestValidator.ValidateRequired("operator_userid", this.OperatorUserid);
            RequestValidator.ValidateRequired("task", this.Task);
        }
	/// 
/// TaskSystemPropertyDomain Data Structure.
/// 
[Serializable]
public class TaskSystemPropertyDomain : TopObject
{
	        /// 
	        /// APP 跳转连接
	        /// 
	        [XmlElement("appUrl")]
	        public string AppUrl { get; set; }
	
	        /// 
	        /// 来自的钉钉群 id
	        /// 
	        [XmlElement("groupId")]
	        public string GroupId { get; set; }
	
	        /// 
	        /// web 跳转连接
	        /// 
	        [XmlElement("webUrl")]
	        public string WebUrl { get; set; }
}
	/// 
/// TaskExtensionDomain Data Structure.
/// 
[Serializable]
public class TaskExtensionDomain : TopObject
{
	        /// 
	        /// 评论数
	        /// 
	        [XmlElement("comment_count")]
	        public Nullable CommentCount { get; set; }
	
	        /// 
	        /// 附件地址
	        /// 
	        [XmlElement("file_path")]
	        public string FilePath { get; set; }
	
	        /// 
	        /// 用户可扩展的字段
	        /// 
	        [XmlElement("other")]
	        public string Other { get; set; }
	
	        /// 
	        /// 待办系统属性,主要包含接入方的详情页跳转链接
	        /// 
	        [XmlElement("systemProperty")]
	        public TaskSystemPropertyDomain SystemProperty { get; set; }
}
	/// 
/// TaskCreateDomain Data Structure.
/// 
[Serializable]
public class TaskCreateDomain : TopObject
{
	        /// 
	        /// 任务所属项目(虚拟企业),基于项目空间的项目
	        /// 
	        [XmlElement("corp_id")]
	        public string CorpId { get; set; }
	
	        /// 
	        /// 创建者id, 传staffId(工号)
	        /// 
	        [XmlElement("creator_userid")]
	        public string CreatorUserid { get; set; }
	
	        /// 
	        /// 任务描述
	        /// 
	        [XmlElement("description")]
	        public string Description { get; set; }
	
	        /// 
	        /// 执行者id, 传staffId(工号)
	        /// 
	        [XmlElement("executor_userid")]
	        public string ExecutorUserid { get; set; }
	
	        /// 
	        /// 任务的扩展字段
	        /// 
	        [XmlElement("extension")]
	        public TaskExtensionDomain Extension { get; set; }
	
	        /// 
	        /// 任务实际完成时间
	        /// 
	        [XmlElement("finish_date")]
	        public Nullable FinishDate { get; set; }
	
	        /// 
	        /// 创建时间
	        /// 
	        [XmlElement("gmt_create")]
	        public Nullable GmtCreate { get; set; }
	
	        /// 
	        /// 修改时间
	        /// 
	        [XmlElement("gmt_modified")]
	        public Nullable GmtModified { get; set; }
	
	        /// 
	        /// 是否归档
	        /// 
	        [XmlElement("is_archived")]
	        public Nullable IsArchived { get; set; }
	
	        /// 
	        /// 是否放入回收站
	        /// 
	        [XmlElement("is_recycled")]
	        public Nullable IsRecycled { get; set; }
	
	        /// 
	        /// 更新者id, 传staffId(工号)
	        /// 
	        [XmlElement("modifier_userid")]
	        public string ModifierUserid { get; set; }
	
	        /// 
	        /// 父任务id
	        /// 
	        [XmlElement("parent_id")]
	        public string ParentId { get; set; }
	
	        /// 
	        /// 任务计划完成时间
	        /// 
	        [XmlElement("plan_finish_date")]
	        public Nullable PlanFinishDate { get; set; }
	
	        /// 
	        /// 任务计划开始时间
	        /// 
	        [XmlElement("plan_start_date")]
	        public Nullable PlanStartDate { get; set; }
	
	        /// 
	        /// 优先级, 较低:10, 普通:20, 紧急:30, 非常紧急:40
	        /// 
	        [XmlElement("priority")]
	        public Nullable Priority { get; set; }
	
	        /// 
	        /// 任务来源source
	        /// 
	        [XmlElement("source")]
	        public string Source { get; set; }
	
	        /// 
	        /// 此字段用于数据迁移的场景,表示任务在源系统中的唯一ID,ISV接入时必填,用于跳转至各自的任务详情页
	        /// 
	        [XmlElement("source_id")]
	        public string SourceId { get; set; }
	
	        /// 
	        /// 任务实际开始日期
	        /// 
	        [XmlElement("start_date")]
	        public Nullable StartDate { get; set; }
	
	        /// 
	        /// 状态id,工作流状态, 可以为空
	        /// 
	        [XmlElement("status_id")]
	        public Nullable StatusId { get; set; }
	
	        /// 
	        /// 状态阶段: 开始阶段(0),进行阶段(1),完成阶段(2)
	        /// 
	        [XmlElement("status_stage")]
	        public Nullable StatusStage { get; set; }
	
	        /// 
	        /// 任务标题
	        /// 
	        [XmlElement("subject")]
	        public string Subject { get; set; }
	
	        /// 
	        /// 任务类型分类:// 任务 TASK("task"),     // 需求     REQ("req"),     // 缺陷     BUG("bug"),     // 风险     RISK("risk"),     // 工作项     WORKITEM("workitem")
	        /// 
	        [XmlElement("task_type_category")]
	        public string TaskTypeCategory { get; set; }
	
	        /// 
	        /// 任务类型id,任务类型,可以不传
	        /// 
	        [XmlElement("task_type_id")]
	        public Nullable TaskTypeId { get; set; }
	
	        /// 
	        /// 任务参与者列表, 传staffId(工号)
	        /// 
	        [XmlArray("tracker_userids")]
	        [XmlArrayItem("string")]
	        public List TrackerUserids { get; set; }
}
        #endregion
    }
}