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.group.modify
    /// 
    public class OapiAttendanceGroupModifyRequest : BaseDingTalkRequest
    {
        /// 
        /// 操作人id
        /// 
        public string OpUserId { get; set; }
        /// 
        /// 考勤组信息
        /// 
        public string TopGroup { get; set; }
        public TopGroupVoDomain TopGroup_ { set { this.TopGroup = TopUtils.ObjectToJson(value); } } 
        #region IDingTalkRequest Members
        public override string GetApiName()
        {
            return "dingtalk.oapi.attendance.group.modify";
        }
        public override string GetApiCallType()
        {
            return DingTalkConstants.CALL_TYPE_OAPI;
        }
        public override IDictionary GetParameters()
        {
            TopDictionary parameters = new TopDictionary();
            parameters.Add("op_user_id", this.OpUserId);
            parameters.Add("top_group", this.TopGroup);
            if (this.otherParams != null)
            {
                parameters.AddAll(this.otherParams);
            }
            return parameters;
        }
        public override void Validate()
        {
            RequestValidator.ValidateRequired("op_user_id", this.OpUserId);
            RequestValidator.ValidateRequired("top_group", this.TopGroup);
        }
	/// 
/// TopShiftVoDomain Data Structure.
/// 
[Serializable]
public class TopShiftVoDomain : TopObject
{
	        /// 
	        /// 班次id
	        /// 
	        [XmlElement("id")]
	        public Nullable Id { get; set; }
}
	/// 
/// TopPositionVoDomain Data Structure.
/// 
[Serializable]
public class TopPositionVoDomain : TopObject
{
	        /// 
	        /// 精度
	        /// 
	        [XmlElement("accuracy")]
	        public string Accuracy { get; set; }
	
	        /// 
	        /// 地址
	        /// 
	        [XmlElement("address")]
	        public string Address { get; set; }
	
	        /// 
	        /// corpid
	        /// 
	        [XmlElement("corp_id")]
	        public string CorpId { get; set; }
	
	        /// 
	        /// 纬度
	        /// 
	        [XmlElement("latitude")]
	        public string Latitude { get; set; }
	
	        /// 
	        /// 经度
	        /// 
	        [XmlElement("longitude")]
	        public string Longitude { get; set; }
	
	        /// 
	        /// 标题
	        /// 
	        [XmlElement("title")]
	        public string Title { get; set; }
}
	/// 
/// ResourcepermissionmapDomain Data Structure.
/// 
[Serializable]
public class ResourcepermissionmapDomain : TopObject
{
	        /// 
	        /// 设置拍照打卡规则
	        /// 
	        [XmlElement("camera_check")]
	        public string CameraCheck { get; set; }
	
	        /// 
	        /// 设置打卡方式
	        /// 
	        [XmlElement("check_position_type")]
	        public string CheckPositionType { get; set; }
	
	        /// 
	        /// 设置考勤时间
	        /// 
	        [XmlElement("check_time")]
	        public string CheckTime { get; set; }
	
	        /// 
	        /// 设置参与考勤人员
	        /// 
	        [XmlElement("group_member")]
	        public string GroupMember { get; set; }
	
	        /// 
	        /// 设置考勤类型
	        /// 
	        [XmlElement("group_type")]
	        public string GroupType { get; set; }
	
	        /// 
	        /// 设置外勤打卡
	        /// 
	        [XmlElement("out_side_check")]
	        public string OutSideCheck { get; set; }
	
	        /// 
	        /// 设置加班规则
	        /// 
	        [XmlElement("over_time_rule")]
	        public string OverTimeRule { get; set; }
	
	        /// 
	        /// 员工排班
	        /// 
	        [XmlElement("schedule")]
	        public string Schedule { get; set; }
}
	/// 
/// TopGroupVoDomain Data Structure.
/// 
[Serializable]
public class TopGroupVoDomain : TopObject
{
	        /// 
	        /// 休息日打卡需审批(true表示必须审批)
	        /// 
	        [XmlElement("disable_check_when_rest")]
	        public Nullable DisableCheckWhenRest { get; set; }
	
	        /// 
	        /// 未排班时是否禁止员工打卡
	        /// 
	        [XmlElement("disable_check_without_schedule")]
	        public Nullable DisableCheckWithoutSchedule { get; set; }
	
	        /// 
	        /// 是否开启拍照打卡,已废弃
	        /// 
	        [XmlElement("enable_camera_check")]
	        public Nullable EnableCameraCheck { get; set; }
	
	        /// 
	        /// 未排班时允许员工选择班次打卡
	        /// 
	        [XmlElement("enable_emp_select_class")]
	        public Nullable EnableEmpSelectClass { get; set; }
	
	        /// 
	        /// 是否开启人脸检测,已废弃
	        /// 
	        [XmlElement("enable_face_check")]
	        public Nullable EnableFaceCheck { get; set; }
	
	        /// 
	        /// 是否可以外勤打卡
	        /// 
	        [XmlElement("enable_outside_check")]
	        public Nullable EnableOutsideCheck { get; set; }
	
	        /// 
	        /// 考勤组id
	        /// 
	        [XmlElement("id")]
	        public Nullable Id { get; set; }
	
	        /// 
	        /// 考勤组子管理员userid列表
	        /// 
	        [XmlArray("manager_list")]
	        [XmlArrayItem("string")]
	        public List ManagerList { get; set; }
	
	        /// 
	        /// 考勤组名
	        /// 
	        [XmlElement("name")]
	        public string Name { get; set; }
	
	        /// 
	        /// 考勤范围
	        /// 
	        [XmlElement("offset")]
	        public Nullable Offset { get; set; }
	
	        /// 
	        /// 是否开启拍照打卡
	        /// 
	        [XmlElement("open_camera_check")]
	        public Nullable OpenCameraCheck { get; set; }
	
	        /// 
	        /// 是否开启人脸检测
	        /// 
	        [XmlElement("open_face_check")]
	        public Nullable OpenFaceCheck { get; set; }
	
	        /// 
	        /// 考勤组主管理员
	        /// 
	        [XmlElement("owner")]
	        public string Owner { get; set; }
	
	        /// 
	        /// 考勤地址
	        /// 
	        [XmlArray("positions")]
	        [XmlArrayItem("top_position_vo")]
	        public List Positions { get; set; }
	
	        /// 
	        /// 子管理员权限范围(w表示可管理,r表示可读)
	        /// 
	        [XmlElement("resource_permission_map")]
	        public ResourcepermissionmapDomain ResourcePermissionMap { get; set; }
	
	        /// 
	        /// 班次信息
	        /// 
	        [XmlArray("shift_vo_list")]
	        [XmlArrayItem("top_shift_vo")]
	        public List ShiftVoList { get; set; }
	
	        /// 
	        /// 休息日自动排休
	        /// 
	        [XmlElement("skip_holidays")]
	        public Nullable SkipHolidays { get; set; }
	
	        /// 
	        /// 周班次列表
	        /// 
	        [XmlArray("workday_class_list")]
	        [XmlArrayItem("number")]
	        public List WorkdayClassList { get; set; }
}
        #endregion
    }
}