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.attendance.vacation.type.update /// public class OapiAttendanceVacationTypeUpdateRequest : BaseDingTalkRequest { /// /// 假期类型,普通假期或者加班转调休假期。(general_leave、lieu_leave其中一种) /// public string BizType { get; set; } /// /// 调休假有效期规则(validity_type:有效类型 absolute_time(绝对时间)、relative_time(相对时间)其中一种 validity_value:延长日期(当validity_type为absolute_time该值该值不为空且满足yy-mm格式 validity_type为relative_time该值为大于1的整数)) /// public string Extras { get; set; } /// /// 每天折算的工作时长(百分之一 例如1天=10小时=1000) /// public Nullable HoursInPerDay { get; set; } /// /// 请假证明类 /// public string LeaveCertificate { get; set; } public LeaveCertificateVoDomain LeaveCertificate_ { set { this.LeaveCertificate = TopUtils.ObjectToJson(value); } } /// /// 假期类型唯一标识 /// public string LeaveCode { get; set; } /// /// 取整,up或者down /// public string LeaveHourCeil { get; set; } /// /// 假期名称 /// public string LeaveName { get; set; } /// /// 是否开启请假时长是否向上取整 /// public Nullable LeaveTimeCeil { get; set; } /// /// 请假时长向上取整时的最小时长单位:hour-不足1小时按照1小时计算;halfHour-不足半小时按照半小时计算 /// public string LeaveTimeCeilMinUnit { get; set; } /// /// 请假单位,可以按照天半天或者小时请假。(day、halfDay、hour其中一种) /// public string LeaveViewUnit { get; set; } /// /// 最大请假时间 /// public Nullable MaxLeaveTime { get; set; } /// /// 请假时,最小请假时长(请假单位为hour时生效),请假时长小于该值时自动取该值,有效值:[0, 23] /// public Nullable MinLeaveHour { get; set; } /// /// 是否按照自然日统计请假时长,当为false的时候,用户发起请假时候会根据用户在请假时间段内的排班情况来计算请假时长。 /// public Nullable NaturalDayLeave { get; set; } /// /// 操作者ID /// public string OpUserid { get; set; } /// /// 是否带薪假期 /// public Nullable PaidLeave { get; set; } /// /// 限时提交规则 /// public string SubmitTimeRule { get; set; } public SubmitTimeRuleVoDomain SubmitTimeRule_ { set { this.SubmitTimeRule = TopUtils.ObjectToJson(value); } } /// /// 适用范围规则列表:哪些部门/员工可以使用该假期类型,不传默认为全公司 /// public string VisibilityRules { get; set; } public List VisibilityRules_ { set { this.VisibilityRules = TopUtils.ObjectToJson(value); } } /// /// 新员工请假:何时可以请假(entry-入职开始 、formal-转正后) /// public string WhenCanLeave { get; set; } #region IDingTalkRequest Members public override string GetApiName() { return "dingtalk.oapi.attendance.vacation.type.update"; } public override string GetApiCallType() { return DingTalkConstants.CALL_TYPE_OAPI; } public override IDictionary GetParameters() { TopDictionary parameters = new TopDictionary(); parameters.Add("biz_type", this.BizType); parameters.Add("extras", this.Extras); parameters.Add("hours_in_per_day", this.HoursInPerDay); parameters.Add("leave_certificate", this.LeaveCertificate); parameters.Add("leave_code", this.LeaveCode); parameters.Add("leave_hour_ceil", this.LeaveHourCeil); parameters.Add("leave_name", this.LeaveName); parameters.Add("leave_time_ceil", this.LeaveTimeCeil); parameters.Add("leave_time_ceil_min_unit", this.LeaveTimeCeilMinUnit); parameters.Add("leave_view_unit", this.LeaveViewUnit); parameters.Add("max_leave_time", this.MaxLeaveTime); parameters.Add("min_leave_hour", this.MinLeaveHour); parameters.Add("natural_day_leave", this.NaturalDayLeave); parameters.Add("op_userid", this.OpUserid); parameters.Add("paid_leave", this.PaidLeave); parameters.Add("submit_time_rule", this.SubmitTimeRule); parameters.Add("visibility_rules", this.VisibilityRules); parameters.Add("when_can_leave", this.WhenCanLeave); if (this.otherParams != null) { parameters.AddAll(this.otherParams); } return parameters; } public override void Validate() { RequestValidator.ValidateRequired("leave_code", this.LeaveCode); RequestValidator.ValidateRequired("op_userid", this.OpUserid); RequestValidator.ValidateObjectMaxListSize("visibility_rules", this.VisibilityRules, 999); } /// /// LeaveVisibilityRuleVoDomain Data Structure. /// [Serializable] public class LeaveVisibilityRuleVoDomain : TopObject { /// /// 规则类型:dept-部门;staff-员工;label-角色 /// [XmlElement("type")] public string Type { get; set; } /// /// 规则数据:当type=staff时,传员工userId列表;当type=dept时,传部门id列表;当type=label时,传角色id列表 /// [XmlArray("visible")] [XmlArrayItem("string")] public List Visible { get; set; } } /// /// SubmitTimeRuleVoDomain Data Structure. /// [Serializable] public class SubmitTimeRuleVoDomain : TopObject { /// /// 是否开启限时提交功能:仅且为true时开启 /// [XmlElement("enable_time_limit")] public Nullable EnableTimeLimit { get; set; } /// /// 限制类型:before-提前;after-补交 /// [XmlElement("time_type")] public string TimeType { get; set; } /// /// 时间单位:day-天;hour-小时 /// [XmlElement("time_unit")] public string TimeUnit { get; set; } /// /// 限制值:timeUnit=day时,有效值范围[0~30] 天;timeUnit=hour时,有效值范围[0~24] 小时 /// [XmlElement("time_value")] public Nullable TimeValue { get; set; } } /// /// LeaveCertificateVoDomain Data Structure. /// [Serializable] public class LeaveCertificateVoDomain : TopObject { /// /// 超过多长时间需提供请假证明 /// [XmlElement("duration")] public Nullable Duration { get; set; } /// /// 是否开启请假证明 /// [XmlElement("enable")] public Nullable Enable { get; set; } /// /// 请假提示文案 /// [XmlElement("prompt_information")] public string PromptInformation { get; set; } /// /// 请假证明单位hour,day /// [XmlElement("unit")] public string Unit { get; set; } } #endregion } }