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.ats.job.batchadd
    /// 
    public class OapiAtsJobBatchaddRequest : BaseDingTalkRequest
    {
        /// 
        /// 招聘业务标识
        /// 
        public string BizCode { get; set; }
        /// 
        /// 职位列表,单次最多20个
        /// 
        public string Jobs { get; set; }
        public List Jobs_ { set { this.Jobs = TopUtils.ObjectToJson(value); } } 
        /// 
        /// 操作人员工标识
        /// 
        public string OpUserId { get; set; }
        #region IDingTalkRequest Members
        public override string GetApiName()
        {
            return "dingtalk.oapi.ats.job.batchadd";
        }
        public override string GetApiCallType()
        {
            return DingTalkConstants.CALL_TYPE_OAPI;
        }
        public override IDictionary GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("biz_code", this.BizCode);
            parameters.Add("jobs", this.Jobs);
            parameters.Add("op_user_id", this.OpUserId);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }
        public override void Validate()
        {
            RequestValidator.ValidateRequired("biz_code", this.BizCode);
            RequestValidator.ValidateRequired("jobs", this.Jobs);
            RequestValidator.ValidateObjectMaxListSize("jobs", this.Jobs, 999);
            RequestValidator.ValidateRequired("op_user_id", this.OpUserId);
        }
	/// 
/// JobFullTimeExtDataVoDomain Data Structure.
/// 
[Serializable]
public class JobFullTimeExtDataVoDomain : TopObject
{
	        /// 
	        /// 薪资发放月数
	        /// 
	        [XmlElement("salary_month")]
	        public Nullable SalaryMonth { get; set; }
}
	/// 
/// JobExtDataVoDomain Data Structure.
/// 
[Serializable]
public class JobExtDataVoDomain : TopObject
{
	        /// 
	        /// 职位来源渠道
	        /// 
	        [XmlElement("channel")]
	        public string Channel { get; set; }
	
	        /// 
	        /// 全职扩展数据
	        /// 
	        [XmlElement("full_time_ext_data")]
	        public JobFullTimeExtDataVoDomain FullTimeExtData { get; set; }
	
	        /// 
	        /// 招募人数
	        /// 
	        [XmlElement("head_count")]
	        public Nullable HeadCount { get; set; }
}
	/// 
/// JobAddressVoDomain Data Structure.
/// 
[Serializable]
public class JobAddressVoDomain : TopObject
{
	        /// 
	        /// 位置详情
	        /// 
	        [XmlElement("detail")]
	        public string Detail { get; set; }
	
	        /// 
	        /// 位置名称
	        /// 
	        [XmlElement("name")]
	        public string Name { get; set; }
}
	/// 
/// AtsAddJobParamDomain Data Structure.
/// 
[Serializable]
public class AtsAddJobParamDomain : TopObject
{
	        /// 
	        /// 工作地点
	        /// 
	        [XmlElement("address")]
	        public JobAddressVoDomain Address { get; set; }
	
	        /// 
	        /// 是否校招
	        /// 
	        [XmlElement("campus")]
	        public Nullable Campus { get; set; }
	
	        /// 
	        /// 城市编码
	        /// 
	        [XmlElement("city")]
	        public string City { get; set; }
	
	        /// 
	        /// 操作人员工标识
	        /// 
	        [XmlElement("creator_user_id")]
	        public string CreatorUserId { get; set; }
	
	        /// 
	        /// 职位描述
	        /// 
	        [XmlElement("description")]
	        public string Description { get; set; }
	
	        /// 
	        /// 区县编码
	        /// 
	        [XmlElement("district")]
	        public string District { get; set; }
	
	        /// 
	        /// 扩展数据
	        /// 
	        [XmlElement("ext_data")]
	        public JobExtDataVoDomain ExtData { get; set; }
	
	        /// 
	        /// 职位性质,FULL-TIME:全职,PART-TIME:兼职,INTERNSHIP:实习,OTHER:其他
	        /// 
	        [XmlElement("job_nature")]
	        public string JobNature { get; set; }
	
	        /// 
	        /// 最低月薪,单位:元
	        /// 
	        [XmlElement("max_salary")]
	        public Nullable MaxSalary { get; set; }
	
	        /// 
	        /// 最高月薪,单位:元
	        /// 
	        [XmlElement("min_salary")]
	        public Nullable MinSalary { get; set; }
	
	        /// 
	        /// 职位名称
	        /// 
	        [XmlElement("name")]
	        public string Name { get; set; }
	
	        /// 
	        /// 职位负责人的员工标识列表
	        /// 
	        [XmlArray("owner_user_ids")]
	        [XmlArrayItem("string")]
	        public List OwnerUserIds { get; set; }
	
	        /// 
	        /// 省域编码
	        /// 
	        [XmlElement("province")]
	        public string Province { get; set; }
	
	        /// 
	        /// 学历要求,1小学 2初中 3高中  4中专 5大专 6本科  7硕士 8 博士 9其他
	        /// 
	        [XmlElement("required_edu")]
	        public Nullable RequiredEdu { get; set; }
}
        #endregion
    }
}