svc_default
This commit is contained in:
@@ -182,17 +182,18 @@
|
||||
<cfargument name="descr" type="string" required=false default="" hint="type:varchar (no cleanup here!)"/>
|
||||
|
||||
<!--- ****** проверка уникальности --->
|
||||
<cftry>
|
||||
<cftry>
|
||||
<cfset checkDisplayName(arguments.displayName, arguments.usrId, arguments.instanceUid)/><!--- как идея - офорить как обертку, возвращающую то же значение. Но будет соблазн еще оттримить иначе пофиксить, а это уже избыточная функция и должно усложнить название --->
|
||||
<cfset this.helper.keyExistsAndValid(arguments, "instanceUid", "guid")/>
|
||||
<cfquery name="local.qSave">
|
||||
update instance set
|
||||
dt_updated=<cfqueryparam cfsqltype="cf_sql_timestamp" value="#Now()#" />
|
||||
,updater_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.usrId#" />
|
||||
<cfif structKeyExists(arguments,"displayName")>
|
||||
,display_name=<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.displayName#" />
|
||||
,display_name=<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.displayName#" />
|
||||
</cfif>
|
||||
<cfif structKeyExists(arguments,"descr")>
|
||||
,descr=<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.descr#" />
|
||||
,descr=<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.descr#" />
|
||||
</cfif>
|
||||
where instance_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceUid#" />;
|
||||
--select @@rowcount as cnt;
|
||||
@@ -209,5 +210,52 @@
|
||||
|
||||
<cfreturn noData().withStatus(204, "No Content") />
|
||||
</cffunction>
|
||||
|
||||
<!--- <cffunction name="checkDisplayName" access="public" hint="возвращает пустую строку при успешной проверке, иначе описание ошибки">
|
||||
<cfargument name="display_name"/>
|
||||
<cfargument name="usr_id"/>
|
||||
<cfargument name="instance_uid"/>
|
||||
|
||||
<cfif len(arguments.display_name) LT 3>
|
||||
<cfthrow type="invalidParamValue" message="Имя должно быть не короче 3 символов"/>/>
|
||||
<cfelseif len(arguments.display_name) GT 80>
|
||||
<cfthrow type="invalidParamValue" message="Имя должно быть не длиннее 80 символов"/>/>
|
||||
<cfelse>
|
||||
<cfquery name="qUniqueDisplayName">
|
||||
select count(*) as cnt from instance e
|
||||
join specification_item i on (e.specification_item_id=i.specification_item_id)
|
||||
join specification s on (i.specification_id=s.specification_id)
|
||||
join contract d on (s.contract_id=d.contract_id)
|
||||
join contragent k on (d.contragent_id=k.contragent_id)
|
||||
join usr u on (k.contragent_id=u.contragent_id)
|
||||
where u.usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#arguments.usr_id#/>
|
||||
AND lower(e.display_name)=lower(<cfqueryparam cfsqltype="cf_sql_varchar" value=#arguments.display_name#/>)
|
||||
AND e.instance_uid <> <cfqueryparam cfsqltype="cf_sql_other" value=#arguments.instance_uid#/>
|
||||
</cfquery>
|
||||
<cfif qUniqueDisplayName.cnt GT 0>
|
||||
<cfthrow type="invalidParamValue" message="Имя должно быть уникальным"/><!--- *** в пределах контракта/спецификации --->
|
||||
</cfif>
|
||||
</cfif>
|
||||
</cffunction> ---><!--- *** оказывается, я независимо реализовал почти точно такую же функцию для POST, и забыл --->
|
||||
|
||||
<!--- неудобно бегать из одного компонента в соседний при том, что разделение ответственности между ними получается довольно странное
|
||||
Решил, что логичнее повесить проверки уникальности и генерацию дефолтов на коллекцию, тем более и связей так меньше --->
|
||||
|
||||
<cffunction name="checkDisplayName">
|
||||
<cfargument name="displayName" required=true/>
|
||||
<cfargument name="usrId" type="numeric" required=true/>
|
||||
<cfargument name="instanceUid" type="guid" required=true/>
|
||||
|
||||
<cfset CreateObject("component", "instance_ls").checkDisplayName(arguments.displayName, arguments.usrId, arguments.instanceUid)/>
|
||||
</cffunction>
|
||||
|
||||
|
||||
<!--- <cffunction name="generateDefaultName">
|
||||
<cfargument name="service_id" type="numeric"/>
|
||||
|
||||
<cfreturn CreateObject("component", "instance_ls").generateDefaultName(arguments.service_id)/>
|
||||
</cffunction> --->
|
||||
|
||||
|
||||
|
||||
</cfcomponent>
|
||||
Reference in New Issue
Block a user