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

func (obj CustomConfigCreateRequest) GetUrl() string {
	return "/custom/config/create"
}

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