package contract_request

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

type ContractEfprinturlRequest struct {
	// 【移动端页面导航头部】移动端页面导航头部 【作用】 1、移动端内嵌页面默认带有头部导航区域，且区域内提供返回按钮，嵌入其他app时会与app自带的导航头部区域航重复 2、可通过本参数控制签入移动端页面时是否提供头部导航区域 【传参】 取值范围：true（隐藏导航头部），false（显示导航头部）；不传值默认为：false（显示导航头部）。
	HideHeader string                                     `json:"hideHeader,omitempty"`
	PageStyle  *common.ContractEfprinturlPageStyleRequest `json:"pageStyle,omitempty"`
	// <ext>core:true</ext> 【打印人姓名】打印人姓名 【作用】 1、当使用printerContact（打印人联系方式）未查询到系统用户时，将创建对应的用户，可传入姓名初始化用户账号信息。 2、若printerContact（打印人联系方式）已有对应的用户，该参数传值无效。
	PrinterName string `json:"printerName,omitempty"`
	// 【链接访问次数】链接访问次数 【作用】 1、限制链接访问次数，若超过次数则链接失效 2、若不传值，则访问次数无限制；若传入具体数值，则链接在访问所传具体值次数后失效，无法继续访问 【传参】 最小值：1。单位：次。
	VisitNum *int64 `json:"visitNum,omitempty"`
	// 【页面语言】页面语言 【作用】 1、用于指定链接页面使用的语言。 2、英文和日文页面为付费功能，请确认开通英文版系统和日文版系统后使用。 【传参】 取值范围：ZH_CN(中文)，EN_US(英文)，JP(日文)；不传值默认为：ZH_CN（中文）。
	Language string `json:"language,omitempty"`
	// <ext>core:true</ext> 【指定部分文档进行打印】指定部分文档进行打印 【作用】 可指定部分文档进行打印，不传将展示电子签约文件中的所有文档 【传参】 格式为JSON字符串，传入多个时使用逗号隔开。
	DocumentIds []string `json:"documentIds,omitempty"`
	// <ext>core:true</ext> 【是否校验当前用户的打印权限】是否校验当前用户的打印权限 【作用】 若校验权限，则传入的打印人必须拥有电子签约文件的打印权限才可打印，否则报错 【传参】 取值范围：true（校验），false（不校验 ）；不传值默认为：false（不校验）。
	UseCurrentUser string `json:"useCurrentUser,omitempty"`
	// 【链接失效后跳转地址】链接失效后跳转地址 【作用】 当链接页面失效后页面自动跳转至指定地址（如：超过访问次数、链接已超过有效期）。
	InvalidToPage string `json:"invalidToPage,omitempty"`
	// 【链接过期时间】链接过期时间 【作用】 用于设置获取到的链接在多长时间后过期 【传参】 1、最小值：1。单位：秒。 2、不传值默认为：1800秒（30分钟）。
	ExpireTime *int64 `json:"expireTime,omitempty"`
	// <ext>core:true</ext> 【电子签约文件id】电子签约文件id 【作用】 查询需要打印的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	ContractId *int64 `json:"contractId,omitempty"`
	// <ext>core:true</ext> 【第三方业务系统文件id】第三方业务系统文件id 【作用】 查询需要打印的电子签约文件 【传参】 电子签约文件id和第三方业务系统文件id必传其一，均传入以电子签约文件id为准。
	BizId string `json:"bizId,omitempty"`
	// <ext>core:true;format:phone</ext> 【打印人联系方式】打印人联系方式 【作用】 指定传入的联系方式作为文件打印的打印人 【传参】 1、可传入用户手机号或者邮箱，用户手机号和邮箱对应用户存在，则将对应用户作为打印人。 2、手机号允许使用大陆、港澳台、国际手机号，手机号格式为：区号+空格+手机号，例：852 9xxxxxxx ，大陆手机号可以不传区号。 3、邮箱需传入符合格式的字符串，例：xxxxxxxx@163.com。 4、若用户不存在时，则使用该字段创建用户。 5、当是否校验用户打印权限（useCurrentUser）为true时，该参数必填。
	PrinterContact string `json:"printerContact,omitempty"`
	// <ext>format:string</ext> 【页面默认展示的文档id】页面默认展示的文档id 【作用】 可指定文档作为访问链接页面时默认展示的文档
	DocumentId *int64 `json:"documentId,omitempty"`
}

func (obj ContractEfprinturlRequest) GetUrl() string {
	return "/contract/efprinturl"
}

func (obj ContractEfprinturlRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewGetHttpParameter()
	parameter.AddParam("hideHeader", obj.HideHeader)
	parameter.AddParam("printerName", obj.PrinterName)
	parameter.AddParam("visitNum", obj.VisitNum)
	parameter.AddParam("language", obj.Language)
	parameter.AddParam("documentIds", obj.DocumentIds)
	parameter.AddParam("useCurrentUser", obj.UseCurrentUser)
	parameter.AddParam("invalidToPage", obj.InvalidToPage)
	parameter.AddParam("expireTime", obj.ExpireTime)
	parameter.AddParam("contractId", obj.ContractId)
	parameter.AddParam("bizId", obj.BizId)
	parameter.AddParam("printerContact", obj.PrinterContact)
	parameter.AddParam("documentId", obj.DocumentId)
	if obj.PageStyle != nil {
		parameter.AddParam("pageStyle.themeColor", obj.PageStyle.ThemeColor)
	}
	return parameter
}
