package template_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 TemplateListRequest struct {
	// <ext>inner-type:Json<ListTemplateGroup>;core:true</ext> 【模板所在分组】模板所在分组 【作用】 传入模板分组，查询该分组下的文件模板。 【传参】 1、模板所在分组id、模板所在分组名称与模板所在分组全路径参数至少传一个，传入多个时只按最高优先级查询，优先级为：模板所在分组id>模板所在分组全路径>模板所在分组名称。 2、不传值时默认为查询所有分组下的文件模板
	TemplateGroup string `json:"templateGroup,omitempty"`
	// <ext>core:true</ext> 【法人单位名称】法人单位名称 【作用】 支持查询文件模板中设置的应用范围的组织所对应的法人单位为传入的法人单位的模板。不传值默认为：查询使用范围中包含平台方组织的文件模板 【传参】 法人单位id与法人单位名称必传其一，均传入以法人单位id为准。
	TenantName string `json:"tenantName,omitempty"`
	// <ext>core:true</ext> 【模板属性】模板属性 【作用】 1、ALL：即查询所有文件模板 2、FORM：即查询含有参数的模板 3、NORMAL：即查询不含有参数的模板 4、不传值默认为：即查询所有文件模板 【传参】 取值范围：ALL（所有），FORM（参数模板），NORMAL（普通模板）。不传值默认为：ALL。
	Property string `json:"property,omitempty"`
	// <ext>core:true;format:string</ext> 【归属单位id】归属单位id 【作用】 支持查询文件模板中设置的应用范围的组织所对应的法人单位为传入的法人单位的模板。不传值默认为：查询使用范围中包含平台方组织的文件模板 【传参】 法人单位id与法人单位名称必传其一，均传入以法人单位id为准。
	TenantId            *int64                    `json:"tenantId,omitempty"`
	TemplateGroupObject *common.ListTemplateGroup `json:"templateGroupObject,omitempty"`
	// <ext>core:true</ext> 【模板类型】模板类型 【作用】 1、ALL：即查询所有类型的文件模板 2、Word：即查询Word类型模板 3、HTML：即查询HTML类型模板 4、PDF：即查询PDF类型模板 5、不传值默认为：查询所有类型的文件模板 【传参】 取值范围：ALL（所有），WORD（WORD类型模板），HTML（HTML类型模板），PDF（PDF类型模板）。不传值默认为：ALL。
	Type_ string `json:"type,omitempty"`
	// <ext>core:true</ext> 【按模板标题拼音排序】按模板标题拼音排序 【作用】 1、ASC（拼音升序）：即按照模板标题拼音升序排序 2、DESC（拼音降序）：即按照模板标题拼音降序排序 【传参】 取值范围：ASC（拼音升序），DESC（拼音降序）。不传值默认为：DESC 。
	TitleOrder string `json:"titleOrder,omitempty"`
	// <ext>core:true</ext> 【按模板创建时间排序】按模板创建时间排序 【作用】 1、ASC（创建时间升序）：即按照模板创建时间升序排序 2、DESC（创建时间降序）：即按照模板创建时间降序排序 【传参】 取值范围：ASC（创建时间升序），DESC（创建时间降序）。不传值默认为：DESC 。
	CreateTimeOrder string `json:"createTimeOrder,omitempty"`
	// <ext>core:true</ext> 【模板状态】模板状态 【作用】 0：停用，即查询所有停用状态的模板 1：启用，即查询所有启用状态的模板 2：全部，即查询所有状态的模板，包括启用状态与停用状态 不传值默认为查询所有启用状态的模板 【传参】 取值范围：0（停用），1（启用），2 （全部）。不传值默认为：1（启用）。
	Status string `json:"status,omitempty"`
}

func (obj TemplateListRequest) GetUrl() string {
	return "/template/list"
}

func (obj TemplateListRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewGetHttpParameter()
	parameter.AddParam("tenantName", obj.TenantName)
	parameter.AddParam("property", obj.Property)
	parameter.AddParam("tenantId", obj.TenantId)
	parameter.AddParam("type", obj.Type_)
	parameter.AddParam("titleOrder", obj.TitleOrder)
	parameter.AddParam("createTimeOrder", obj.CreateTimeOrder)
	parameter.AddParam("status", obj.Status)
	if obj.TemplateGroupObject != nil {
		jsonBytes, _ := json.Marshal(obj.TemplateGroupObject)
		parameter.AddParam("templateGroup", string(jsonBytes))
	} else {
		parameter.AddParam("templateGroup", obj.TemplateGroup)
	}
	return parameter
}
