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.v2.department.create
///
public class OapiV2DepartmentCreateRequest : BaseDingTalkRequest
{
///
/// 开启后,加入该部门的申请将默认同意
///
public Nullable AutoApproveApply { get; set; }
///
/// 部门简介
///
public string Brief { get; set; }
///
/// 部门编码
///
public string Code { get; set; }
///
/// 是否创建一个关联此部门的企业群,默认为false
///
public Nullable CreateDeptGroup { get; set; }
///
/// 可以查看指定隐藏部门的其他部门列表,如果部门隐藏,则此值生效。总数不能超过200。
///
public string DeptPermits { get; set; }
///
/// 开启后,允许员工加入部门
///
public Nullable EmpApplyJoinDept { get; set; }
///
/// 扩展字段,JSON格式
///
public string Extension { get; set; }
///
/// 是否隐藏部门, true表示隐藏 false表示显示
///
public Nullable HideDept { get; set; }
///
/// 部门隐藏的生效场景配置
///
public string HideSceneConfig { get; set; }
public SceneConfigDomain HideSceneConfig_ { set { this.HideSceneConfig = TopUtils.ObjectToJson(value); } }
///
/// 部门名称,长度限制为1~100个字符,不允许包含字符‘-’‘,’以及‘,’
///
public string Name { get; set; }
///
/// 在父部门中的排序值,order值小的排序靠前
///
public Nullable Order { get; set; }
///
/// 限制本部门成员查看通讯录,限制开启后,本部门成员只能看到限定范围内的通讯录。true表示限制开启
///
public Nullable OuterDept { get; set; }
///
/// 是否只能看到所在部门及下级部门通讯录
///
public Nullable OuterDeptOnlySelf { get; set; }
///
/// 本部门的员工仅可见员工自己为true时,可以配置额外可见部门,departmentId列表,总数不能超过200。
///
public string OuterPermitDepts { get; set; }
///
/// 本部门的员工仅可见员工自己为true时,可以配置额外可见人员,userid列表,总数不能超过200。
///
public string OuterPermitUsers { get; set; }
///
/// 部门限制可见的生效场景配置
///
public string OuterSceneConfig { get; set; }
public SceneConfigDomain OuterSceneConfig_ { set { this.OuterSceneConfig = TopUtils.ObjectToJson(value); } }
///
/// 父部门id,根部门id为1
///
public Nullable ParentId { get; set; }
///
/// 部门标识字段,开发者可用该字段来唯一标识一个部门,并与钉钉外部通讯录里的部门做映射
///
public string SourceIdentifier { get; set; }
///
/// 部门联系方式
///
public string Telephone { get; set; }
///
/// 可以查看指定隐藏部门的其他人员列表,如果部门隐藏,则此值生效,总数不能超过200。
///
public string UserPermits { get; set; }
#region IDingTalkRequest Members
public override string GetApiName()
{
return "dingtalk.oapi.v2.department.create";
}
public override string GetApiCallType()
{
return DingTalkConstants.CALL_TYPE_OAPI;
}
public override IDictionary GetParameters()
{
TopDictionary parameters = new TopDictionary();
parameters.Add("auto_approve_apply", this.AutoApproveApply);
parameters.Add("brief", this.Brief);
parameters.Add("code", this.Code);
parameters.Add("create_dept_group", this.CreateDeptGroup);
parameters.Add("dept_permits", this.DeptPermits);
parameters.Add("emp_apply_join_dept", this.EmpApplyJoinDept);
parameters.Add("extension", this.Extension);
parameters.Add("hide_dept", this.HideDept);
parameters.Add("hide_scene_config", this.HideSceneConfig);
parameters.Add("name", this.Name);
parameters.Add("order", this.Order);
parameters.Add("outer_dept", this.OuterDept);
parameters.Add("outer_dept_only_self", this.OuterDeptOnlySelf);
parameters.Add("outer_permit_depts", this.OuterPermitDepts);
parameters.Add("outer_permit_users", this.OuterPermitUsers);
parameters.Add("outer_scene_config", this.OuterSceneConfig);
parameters.Add("parent_id", this.ParentId);
parameters.Add("source_identifier", this.SourceIdentifier);
parameters.Add("telephone", this.Telephone);
parameters.Add("user_permits", this.UserPermits);
if (this.otherParams != null)
{
parameters.AddAll(this.otherParams);
}
return parameters;
}
public override void Validate()
{
RequestValidator.ValidateMaxLength("brief", this.Brief, 255);
RequestValidator.ValidateMaxLength("code", this.Code, 255);
RequestValidator.ValidateMaxListSize("dept_permits", this.DeptPermits, 200);
RequestValidator.ValidateRequired("name", this.Name);
RequestValidator.ValidateMaxLength("name", this.Name, 100);
RequestValidator.ValidateMaxListSize("outer_permit_depts", this.OuterPermitDepts, 200);
RequestValidator.ValidateMaxListSize("outer_permit_users", this.OuterPermitUsers, 200);
RequestValidator.ValidateRequired("parent_id", this.ParentId);
RequestValidator.ValidateMaxLength("telephone", this.Telephone, 50);
RequestValidator.ValidateMaxListSize("user_permits", this.UserPermits, 200);
}
///
/// SceneConfigDomain Data Structure.
///
[Serializable]
public class SceneConfigDomain : TopObject
{
///
/// 当前部门是否采用单独的配置。如果设置了false,则采用组织维度的配置
///
[XmlElement("active")]
public Nullable Active { get; set; }
///
/// 是否在单聊框生效
///
[XmlElement("chatbox_subtitle")]
public Nullable ChatboxSubtitle { get; set; }
///
/// 是否在查看组织架构生效
///
[XmlElement("node_list")]
public Nullable NodeList { get; set; }
///
/// 是否在个人资料页生效
///
[XmlElement("profile")]
public Nullable Profile { get; set; }
///
/// 是否在搜索生效
///
[XmlElement("search")]
public Nullable Search { get; set; }
}
#endregion
}
}