Files
svc-api-x/v1/resources/instance_operation_cfs_subparam_ls.cfc
T
2025-05-23 14:53:02 +03:00

84 lines
4.4 KiB
Plaintext

<cfcomponent extends="taffy.core.resource" taffy:uri="/instanceOperationCfsParams/{instanceOperationCfsParamUid}/subparams">
<!--- забавно, что мы организуем эндпойнт коллекции только ради операции создания. Список (коллекция) отдельно не используется, а выгружается в составе более высокоуровневых сущностей --->
<cfsilent>
<cfimport prefix="m" taglib="../lib"/>
<cfset this.helper=CreateObject("component","lib.rest_api_helper")/>
</cfsilent>
<cffunction name="post" hint="создание метаданных субпараметра CFS параметра операции инстанса">
<cfargument name="instanceOperationCfsParamUid" type="string" required=true hint="type:guid"/>
<cfargument name="subparam" type="string" required=true hint="type:string"/>
<cfargument name="isSensitive" type="boolean" required=false default=false hint="type:boolean"/>
<cfargument name="note" type="string" required=false default="" hint="type:string"/>
<!--- arguments.specificationId injected implicitly --->
<!--- <cfargument name="instanceOperationCfsParamUid" type="string" required=true hint="type:guid"/>
<cfargument name="subparam" type="string" required=true hint="type:string"/>
<cfargument name="isSensitive" type="boolean" required=true/>
<cfargument name="note" type="string" required=false default=""/> --->
<cftry>
<cfset this.helper.validateField(arguments, "instanceOperationCfsParamUid", "guid")/>
<cfset this.helper.validateField(arguments, "isSensitive", "boolean")/>
<cfcatch type="invalidParamValue">
<cfreturn representationOf(this.helper.formatBadRequestError(cfcatch)).withStatus(400)/>
</cfcatch>
</cftry>
<cfset local={}/>
<cfquery name="local.qCheckAccess" result="local.result">
select count(*) as cnt
from instance_operation_cfs_param iop
join instance_operation io on (iop.instance_operation_uid=io.instance_operation_uid)
join instance e on (io.instance_uid=e.instance_uid)
join specification_item si on (e.specification_item_id=si.specification_item_id)
where iop.instance_operation_cfs_param_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceOperationCfsParamUid#" null=#!isValid('guid',arguments.instanceOperationCfsParamUid)#/>
AND si.specification_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#arguments.specificationId#/>
</cfquery>
<cfif local.qCheckAccess.cnt EQ 0>
<cfreturn representationOf(this.helper.formatMessage("Instance CFS parameter not found or access denied")).withStatus(404)/>
</cfif>
<cfquery name="local.qCheckDuplicates" result="local.result">
select count(*) as cnt
from instance_operation_cfs_subparam ios
where ios.instance_operation_cfs_param_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceOperationCfsParamUid#" null=#!isValid('guid',arguments.instanceOperationCfsParamUid)#/>
AND ios.instance_operation_cfs_subparam=<cfqueryparam cfsqltype="cf_sql_varchar" value=#arguments.subparam#/>
</cfquery>
<cfif local.qCheckDuplicates.cnt GT 0>
<cfreturn representationOf(this.helper.formatMessage("Subparameter already exists")).withStatus(400)/>
</cfif>
<cfquery name="local.qSave" result="local.result">
insert into instance_operation_cfs_subparam
(instance_operation_cfs_param_uid, instance_operation_cfs_subparam, is_sensitive, note, dt_created, creator_id, dt_updated, updater_id)
values
(
<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceOperationCfsParamUid#" />
,<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.subparam#" />
,<cfqueryparam cfsqltype="cf_sql_bit" value="#arguments.isSensitive#" />
,<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.note#" />
,<cfqueryparam cfsqltype="cf_sql_timestamp" value="#Now()#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.usrId#" />
,<cfqueryparam cfsqltype="cf_sql_timestamp" value="#Now()#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.usrId#" />
);
</cfquery>
<!--- <cfif local.qCfsParam.data_type EQ "map">
<cfset processMap(local.qCfsParam)/><!--- query passed by reference --->
</cfif> --->
<cfreturn noData()
.withStatus(201, "Created")
/>
</cffunction><!--- get --->
</cfcomponent>