package contract_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 ContractAgentAuthRequest struct {
	// <ext>core:true</ext> 【签署节点集合】签署节点集合 【作用】 查询需设置文件代理签批的签署节点集合 【传参】 1、根据电子签约文件集合、签署方集合、签署节点类型，取交集获取需代理的签署节点集合 2、未传入签署方集合时，则对电子签约内动态添加的签署方也会设置代理签批
	ActionFindRequests []*common.ContractAgentAuthActionFindRequestsRequest `json:"actionFindRequests"`
	PrincipalUser      *common.UserInfoRequest                              `json:"principalUser"`
	AgentUser          *common.UserInfoRequest                              `json:"agentUser"`
	// <ext>core:true;format:date</ext> 【代理开始日期】代理开始日期 【作用】 超过该日期，代理关系才会生效，代理人才能对设置文件代理签批的节点进行代理签批操作 【传参】 1、日期格式：yyyy-MM-dd。 2、若传入2022-03-09，在2022年3月9日的00时00分00秒后，代理关系生效 3、不传入时默认取当前日期
	AgentStartDateStr string `json:"agentStartDateStr,omitempty"`
	// <ext>format:date;core:true</ext> 【代理结束日期】代理结束日期 【作用】 超过该日期，代理关系失效，代理人将不能进行代理签批操作 【传参】 1、日期格式：yyyy-MM-dd。 2、若传入2022-03-09，在2022年3月9日的23时59分59秒后，代理关系失效 3、不得晚于代理开始日期
	AgentEndDateStr string `json:"agentEndDateStr"`
	// <ext>core:true</ext> 【第三方业务系统代理授权id】第三方业务系统代理授权id 【作用】 第三方业务系统进行代理签批设置时，可以传入1个唯一id，后续可通过<docs>/contract/agent/cancel</docs>取消代理签批
	AgentBizId string `json:"agentBizId,omitempty"`
}

func (obj ContractAgentAuthRequest) GetUrl() string {
	return "/contract/agent/auth"
}

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