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.edu.homework.create
    /// 
    public class OapiEduHomeworkCreateRequest : BaseDingTalkRequest
    {
        /// 
        /// 扩展属性
        /// 
        public string Attributes { get; set; }
        /// 
        /// 业务编码
        /// 
        public string BizCode { get; set; }
        /// 
        /// 作业课程名称
        /// 
        public string CourseName { get; set; }
        /// 
        /// 作业内容
        /// 
        public string HwContent { get; set; }
        /// 
        /// 截止时间
        /// 
        public Nullable HwDeadline { get; set; }
        /// 
        /// 是否开启截止时间
        /// 
        public string HwDeadlineOpen { get; set; }
        /// 
        /// 作业视频
        /// 
        public string HwMedia { get; set; }
        /// 
        /// 作业图片
        /// 
        public string HwPhoto { get; set; }
        /// 
        /// 作业标题
        /// 
        public string HwTitle { get; set; }
        /// 
        /// 作业类型
        /// 
        public string HwType { get; set; }
        /// 
        /// 作业录音
        /// 
        public string HwVideo { get; set; }
        /// 
        /// 幂等ID字段
        /// 
        public string Identifier { get; set; }
        /// 
        /// 是否开始定时调度
        /// 
        public string ScheduledRelease { get; set; }
        /// 
        /// 定时调度时间
        /// 
        public string ScheduledTime { get; set; }
        /// 
        /// 选择的布置班级
        /// 
        public string SelectClass { get; set; }
        public List SelectClass_ { set { this.SelectClass = TopUtils.ObjectToJson(value); } } 
        /// 
        /// 选择班级对应学生
        /// 
        public string SelectStu { get; set; }
        public List SelectStu_ { set { this.SelectStu = TopUtils.ObjectToJson(value); } } 
        /// 
        /// 状态
        /// 
        public string Status { get; set; }
        /// 
        /// 发送对象
        /// 
        public string TargetRole { get; set; }
        /// 
        /// 老师名称
        /// 
        public string TeacherName { get; set; }
        /// 
        /// 老师userid
        /// 
        public string TeacherUserid { get; set; }
        #region IDingTalkRequest Members
        public override string GetApiName()
        {
            return "dingtalk.oapi.edu.homework.create";
        }
        public override string GetApiCallType()
        {
            return DingTalkConstants.CALL_TYPE_OAPI;
        }
        public override IDictionary GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("attributes", this.Attributes);
            parameters.Add("biz_code", this.BizCode);
            parameters.Add("course_name", this.CourseName);
            parameters.Add("hw_content", this.HwContent);
            parameters.Add("hw_deadline", this.HwDeadline);
            parameters.Add("hw_deadline_open", this.HwDeadlineOpen);
            parameters.Add("hw_media", this.HwMedia);
            parameters.Add("hw_photo", this.HwPhoto);
            parameters.Add("hw_title", this.HwTitle);
            parameters.Add("hw_type", this.HwType);
            parameters.Add("hw_video", this.HwVideo);
            parameters.Add("identifier", this.Identifier);
            parameters.Add("scheduled_release", this.ScheduledRelease);
            parameters.Add("scheduled_time", this.ScheduledTime);
            parameters.Add("select_class", this.SelectClass);
            parameters.Add("select_stu", this.SelectStu);
            parameters.Add("status", this.Status);
            parameters.Add("target_role", this.TargetRole);
            parameters.Add("teacher_name", this.TeacherName);
            parameters.Add("teacher_userid", this.TeacherUserid);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }
        public override void Validate()
        {
            RequestValidator.ValidateRequired("biz_code", this.BizCode);
            RequestValidator.ValidateRequired("course_name", this.CourseName);
            RequestValidator.ValidateRequired("hw_content", this.HwContent);
            RequestValidator.ValidateRequired("hw_title", this.HwTitle);
            RequestValidator.ValidateRequired("identifier", this.Identifier);
            RequestValidator.ValidateObjectMaxListSize("select_class", this.SelectClass, 50);
            RequestValidator.ValidateObjectMaxListSize("select_stu", this.SelectStu, 50);
            RequestValidator.ValidateRequired("status", this.Status);
            RequestValidator.ValidateRequired("teacher_name", this.TeacherName);
            RequestValidator.ValidateRequired("teacher_userid", this.TeacherUserid);
        }
	/// 
/// ClassInfoItemDomain Data Structure.
/// 
[Serializable]
public class ClassInfoItemDomain : TopObject
{
	        /// 
	        /// 班级ID
	        /// 
	        [XmlElement("class_id")]
	        public Nullable ClassId { get; set; }
	
	        /// 
	        /// 班级名称
	        /// 
	        [XmlElement("class_name")]
	        public string ClassName { get; set; }
}
	/// 
/// StuInfoItemDomain Data Structure.
/// 
[Serializable]
public class StuInfoItemDomain : TopObject
{
	        /// 
	        /// 学生userid
	        /// 
	        [XmlElement("stu_id")]
	        public string StuId { get; set; }
	
	        /// 
	        /// 学生姓名
	        /// 
	        [XmlElement("stu_name")]
	        public string StuName { get; set; }
}
	/// 
/// SelectStuItemDomain Data Structure.
/// 
[Serializable]
public class SelectStuItemDomain : TopObject
{
	        /// 
	        /// 班级ID
	        /// 
	        [XmlElement("class_id")]
	        public Nullable ClassId { get; set; }
	
	        /// 
	        /// 班级名称
	        /// 
	        [XmlElement("class_name")]
	        public string ClassName { get; set; }
	
	        /// 
	        /// 选择学生列表
	        /// 
	        [XmlArray("class_stu")]
	        [XmlArrayItem("stu_info_item")]
	        public List ClassStu { get; set; }
}
        #endregion
    }
}