package others_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 CustomConfigUpdateRequest struct {
	CustomParamSelectRequest *common.CustomParamSelectRequest `json:"customParamSelectRequest"`
	// <ext>core:true</ext> 【新字段名称】新字段名称 【作用】 修改自定义字段名称 【传参】 1、不传值则不做修改； 2、最大长度：100（包含）。
	Name string `json:"name,omitempty"`
	// <ext>core:true</ext> 【key值】key值  【作用】  1、设置或修改key值； 2、不传值则不做修改。
	Key string `json:"key,omitempty"`
	// <ext>core:true</ext> 【移动至新分组】移动至新分组 【作用】 指定自定义字段所属新分组，可在电子签署前台-【设置】【印章管理设置】【印章自定义字段】-【基础字段】维护分组。 【传参】 1、传入分组名称，分组名称不存在时将报错； 2、不传值则不做修改。
	GroupName string `json:"groupName,omitempty"`
	// <ext>core:true</ext> 【状态】状态 【作用】 修改自定义字段状态 【传参】 取值范围：NORMAL(正常)，DISABLE(停用)；不传值则不做修改。
	Status string `json:"status,omitempty"`
	// <ext>core:true</ext> 【是否必填】是否必填  【作用】  指定该字段在创建编辑印章时是否必填  【传参】  取值范围：true（必填），false（非必填）；不传值则不做修改。
	Necessary *bool `json:"necessary,omitempty"`
	// <ext>core:true</ext> 【更新生效印章形式】更新生效印章形式 【作用】 修改该字段在指定形式印章生效 【传参】 取值范围：ELECTRONIC（电子印章），PHYSICS（物理印章），UKEY（Ukey印章），MOBILE（移动印章）；不传值则不做修改。
	SealTypes []string `json:"sealTypes,omitempty"`
	// <ext>core:true</ext> 【更新生效印章类型】更新生效印章类型 【作用】 指定当前字段在指定印章类型生效，配置生效印章类型后，制作与管理指定类型的印章时，可维护当前自定义字段内容；其余类型印章将不显示该字段。 【传参】 1、传入印章所属单位在电子签章前台【设置-印章类型设置】中启用的类型名称，多个用“,”分隔。 2、不传值则不做修改。
	SealCategoryResponses string `json:"sealCategoryResponses,omitempty"`
	// <ext>core:true</ext> 【编辑属性】 编辑属性 【作用】 用于指定该自定义字段是否允许在电子签约平台编辑 只读：无法通过电子签约平台设置字段值，仅可通过接口设置与修改； 编辑：允许通过电子签约平台以及接口进行设置与修改 【传参】 取值范围：READ（只读），EDIT（编辑）；不传值则不做修改。
	CustomParamAttribute string `json:"customParamAttribute,omitempty"`
	// <ext>core:true</ext> 【是否多选】是否多选 【作用】 若类型为 选择、内部数据源类型时，修改该字段是否多选 【传参】 1、仅类型传入选择或内部数据源类型时生效，非以上类型将忽略该参数值。 2、取值范围：true（多选），false（单选）；不传值则不做修改。
	Choices *bool `json:"choices,omitempty"`
	// <ext>core:true</ext> 【选项值】选项值 【作用】 若类型为选择类型时，定义选项值
	SelectConfig []string `json:"selectConfig,omitempty"`
	// <ext>core:true</ext> 【文本长度】文本长度 【作用】 1、仅类型传入文本时生效，非文本类型将忽略该参数值； 2、取值范围：正整数；不传值则不做修改。
	Length *int64 `json:"length,omitempty"`
}

func (obj CustomConfigUpdateRequest) GetUrl() string {
	return "/custom/config/update"
}

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