082 availableResourceRealms

This commit is contained in:
msyu
2025-04-07 22:29:03 +03:00
parent 498abdc060
commit 9692b6c101
7 changed files with 153 additions and 10 deletions
+28 -4
View File
@@ -32,6 +32,7 @@
"is_deleted"={prefix="inr", type="string"},<!--- not bool --->
"suspended"={prefix="inr", type="string"},<!--- not bool --->
"resourceRealm"={prefix="inr", type="string"},
"resourceRealmId"={prefix="inr", type="integer"},
"is_test"={prefix="inr", type="boolean"},
"is_auxiliary"={prefix="inr", type="boolean"},
"explained_status"={prefix="inr", type="string"},
@@ -134,6 +135,8 @@
<m:field>e.instance_uid::text as instance_uid</m:field>
<m:field>e.display_name</m:field>
<m:field>e.service_id</m:field>
<m:field>e.resource_realm_id</m:field>
<m:field>r.resource_realm</m:field>
<m:field>e.specification_item_id</m:field>
<m:field formatter=#request.castToBool#>e.is_auxiliary</m:field>
<m:field>d.contract_id</m:field>
@@ -159,7 +162,7 @@
<m:field formatter=#request.castToBool#>(select st.is_test from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as is_test</m:field>
<m:field formatter=#request.castToBool#>coalesce((select st.instance_data->>'isDeleted' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1),'false') as is_deleted</m:field><!--- attention it is not bool in state --->
<m:field formatter=#request.castToBool#>(select st.instance_data->>'suspended' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as suspended</m:field>
<m:field>(select cast(st.instance_data->>'params' as json)->>'resourceRealm' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as resourceRealm</m:field>
<!--- <m:field>(select cast(st.instance_data->>'params' as json)->>'resourceRealm' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as resourceRealm</m:field> --->
<m:field>(select to_char(st.dt_state, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as dt_state</m:field>
<m:field>
(case
@@ -290,6 +293,7 @@
<cfargument name="displayName" type="string" required=true hint="type:string"/>
<cfargument name="serviceId" type="string" required=true hint="type:integer"/>
<cfargument name="descr" type="string" required=false default="" hint="type:varchar (no cleanup here!)"/>
<cfargument name="resourceRealmId" type="string" required=false default="-1" hint="type:integer"/>
<!--- <cfargument name="instanceUid" type="string" required=false default="" hint="type:guid)"/> --->
<!--- <cfargument name="usrUid" type="string" required=true hint="type:guid"/>
@@ -303,9 +307,11 @@
<cfset local.instanceUid=#createGUID()#/>
<!--- </cfif> --->
<!--- ****** проверка доступности платформы ***** --->
<cftry>
<cfset this.helper.keyExistsAndValid(arguments, "serviceId", "integer")/>
<cfset checkDisplayName(arguments.displayName, arguments.usrId, local.instanceUid)/>
<cfset checkResourceRealmId(arguments.resourceRealmId, arguments.usrId, arguments.serviceId)/>
<!--- делаем вставку в спецификацию и таблицу экземпляров --->
<cfquery name="local.qSpecItem">
@@ -313,7 +319,7 @@
(specification_id, specification_item, svc_id, quantity, price, dt_created, creator_id, dt_updated, updater_id)
values
(
<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.specificationId#" />
<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.specificationId#" />
,<cfqueryparam cfsqltype="cf_sql_varchar" value=""/>
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.serviceId#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="1" /> <!--- это типично для всех PAYG --->
@@ -327,13 +333,14 @@
<cfquery name="local.qSave">
insert into instance
(instance_uid, display_name, service_id, specification_item_id, descr, dt_created, creator_id, dt_updated, updater_id)
(instance_uid, display_name, service_id, specification_item_id, resource_realm_id, descr, dt_created, creator_id, dt_updated, updater_id)
values
(
<cfqueryparam cfsqltype="cf_sql_other" value="#local.instanceUid#" />
,<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.displayName#"/>
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.serviceId#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="#local.qSpecItem.specification_item_id#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.resourceRealmId#" />
,<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.descr#" />
,<cfqueryparam cfsqltype="cf_sql_timestamp" value="#Now()#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.usrId#" />
@@ -351,10 +358,27 @@
.withHeaders({location: "./#local.instanceUid#"})
.withStatus(201, "Created")
/>
</cffunction>
<cffunction name="checkResourceRealmId">
<cfargument name="resourceRealmId" type="numeric" required=true/>
<cfargument name="usrId" type="numeric" required=true/>
<cfset var local={}/>
<cfif NOT resourceRealmId GT 0>
<cfthrow type="InvalidParamValue" message="resource realm undefined" detail="Не выбрана ресурсная платформа"/>
</cfif>
Проверить соответствие сервису
Проверить доступ (это предварительная проверка! настоящая проверка перед запуском операции)
<cfreturn/>
</cffunction>
<cffunction name="checkDisplayName">
<cfargument name="displayName" required=true/>
<cfargument name="usrId" type="numeric" required=true/>