package employee_request

import (
	"encoding/json"
	"git.sxidc.com/student-physical-examination/contract_lock_sdk/http"
	"git.sxidc.com/student-physical-examination/contract_lock_sdk/model/common"
)

type EmployeeCreateRequest struct {
	// <ext>core:true</ext> 【用户姓名】用户姓名
	Name string `json:"name,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统用户id】第三方业务系统用户id 【作用】 可传入第三方业务系统中唯一的用户id，方便后续的查询与管理 【特殊说明】 若当前id已被占用，则将报错无法创建
	OpenUserId string `json:"openUserId,omitempty"`
	// <ext>core:true</ext> 【用户证件类型】用户证件类型 【作用】 可传入用户认证时的默认证件类型，认证时可修改 【传参】 取值范围：IDCARD（二代身份证），PASSPORT（护照），HKMP（港澳通行证），MTPS（台胞证）。
	PaperType string `json:"paperType,omitempty"`
	// <ext>core:true</ext> 【证件号】证件号 【作用】 可传入用户认证时的默认证件号码，认证时可修改
	CardNo string `json:"cardNo,omitempty"`
	// <ext>core:true</ext> 【认证时可修改项】认证时可修改项  【作用】 控制接收人在实名认证时可以修改哪些信息 【传参】 1、取值范围：NAME（姓名），CARDNO（证件号），MOBILE（手机号），BANKNO（银行账号），BANKPHONE（银行预留手机号）。 2、不传参时，默认除了手机号以外所有参数都允许修改。
	ModifyFields []string `json:"modifyFields,omitempty"`
	// <ext>core:true</ext> 【联系方式】联系方式 【作用】 用于用户查询、账号登录、文件接收与发送通知 【传参】 1、可传入用户手机号或者邮箱。 2、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 3、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 4、联系方式、手机号、邮箱、自定义登录账号、成员编号至少传入一个，若邮箱已被其他用户绑定，则无法创建，手机号则以mobileBindingType（手机号被占用时处理方式）处理为准。
	Contact               string                        `json:"contact,omitempty"`
	UserInfoRequestConfig *common.UserInfoRequestConfig `json:"userInfoRequestConfig,omitempty"`
	// <ext>core:true</ext> 【登录账号】登录账号 【作用】 用于用户查询、账号登录 【传参】 1、支持传入字母、数字、符号 2、手机号、邮箱、自定义账号、成员编号至少传入一个，若登录账号已被其他用户绑定，则无法创建
	AccountNo string `json:"accountNo,omitempty"`
	// <ext>core:true</ext> 【用户初始密码】用户初始密码 【作用】 用于用户登录 【传参】 用户初始登录密码，登录后若【电子签章管理后台】-【设置】-【签署平台】开启【若登录密码为管理员创建时设置或重置密码，用户登录后必须更新密码】时，用户登录后会强制用户进行密码修改
	Password string `json:"password,omitempty"`
	// <ext>core:true</ext> 【要加入的法人单位名称】要加入的法人单位名称 【作用】 指定要加入的法人单位 【传参】 传入单位名称，不传参时加入顶级组织
	CompanyName       string                    `json:"companyName,omitempty"`
	DepartmentRequest *common.DepartmentRequest `json:"departmentRequest,omitempty"`
	// <ext>core:true</ext> 【成员自定义字段】成员自定义字段 【作用】 1、除个人姓名、联系方式等基础信息，需要补充填写的成员的额外信息，用于后续管理与筛选。例如岗位是销售、财务等 2、自定义字段可在电子签章管理后台统一定义或电子签章前台设置组织内成员的自定义属性，定义好后可通过该参数传入字段值
	EmployeeCustomFields []*common.EmployeeCustomField `json:"employeeCustomFields,omitempty"`
	Superior             *common.UserInfoRequest       `json:"superior,omitempty"`
	// <ext>core:true</ext> 【别名】别名 【作用】 用户使用英文样式的FDA签名时，“签署人姓名”需显示英文时，可在别名中进行维护 【特殊说明】 FDA签名为付费功能，请在功能开启后使用
	PrintSignature string `json:"printSignature,omitempty"`
	// <ext>core:true</ext> 【唯一标识码】唯一标识码 【作用】 用户的唯一标识码将展示在FDA签名中 【特殊说明】 FDA签名为付费功能，请在功能开启后使用
	UniqueSymbol string `json:"uniqueSymbol,omitempty"`
}

func (obj EmployeeCreateRequest) GetUrl() string {
	return "/employee/create"
}

func (obj EmployeeCreateRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	jsonBytes, _ := json.Marshal(obj)
	parameter.SetJsonParamer(string(jsonBytes))
	return parameter
}
