Files
svc-api-x/v1/resources/user.cfc

50 lines
2.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<cfcomponent extends="taffy.core.resource" taffy:uri="/user">
<cfsilent>
<cfimport prefix="m" taglib="../lib"/>
<cfset this.helper=CreateObject("component","lib.rest_api_helper")/><!---*** странно, почему мы его видим?---><!---вынести в апп?--->
</cfsilent>
<!--- *** Внимание! Особая обработка в Application.cfc по имени user.cfc --->
<cffunction name="get" hint="Контрольная информация по текущему пользователю для проверки контекста. Предполагается использовать только для интеграционной отладки. Исключения перехватываются, всегда возвращается код 200, структура ответа при этом не предназначена для разбора">
<cftry>
<cfset var local={}/><!--- *** а точно нужно var? --->
<cfset var out=structNew("linked")/>
<cfset "out.usrId"=#ARGUMENTS.usrId#/>
<cfset "out.serviceLocationDurationMs"=getTickCount() - request.startTickCount/>
<cfquery name="local.qSpec">
select
<m:field_set titleMapOut="local.specTitleMap" lengthOut="local.fieldCount">
<m:field cfSqlType="CF_SQL_INTEGER">s.specification_id</m:field>
<m:field>c.contract_id</m:field>
<m:field>c.contragent_id</m:field>
</m:field_set>
from specification s
join contract c on (s.contract_id=c.contract_id)
join usr u on (c.contragent_id=u.contragent_id)
where u.usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#ARGUMENTS.usrId#/><!--- *** undeclared --->
order by specification_id desc
limit 1;
</cfquery>
<cfquery name="local.qRead" result="local.result">
select
<m:field_set titleMapOut="local.titleMap" lengthOut="local.fieldCount">
<m:field cfSqlType="CF_SQL_INTEGER">u.usr_id</m:field>
<m:field>k.contragent_id</m:field>
</m:field_set>
from usr u
left outer join contragent k on u.contragent_id=k.contragent_id
where u.usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#ARGUMENTS.usrId#/>
</cfquery>
<cfset "out.queryDurationMs"=getTickCount() - request.startTickCount- out.serviceLocationDurationMs/>
<cfset var resultCollection=[]/>
<cfset "out.usr" = (local.qRead.recordCount GT 0) ? this.helper.appendRecord(structNew("linked"), "", local.titleMap, local.qRead, this.helper.snake2camel) : {}/>
<cfset "out.arguments" = #arguments#/>
<cfset "out.defaultSpecification" = (local.qSpec.recordCount GT 0) ? this.helper.appendRecord(structNew("linked"), "", local.specTitleMap, local.qSpec, this.helper.snake2camel) : {}/>
<cfset "out.runDurationMs"=getTickCount()-request.startTickCount/>
<cfreturn representationOf(out)/>
<cfcatch type="any">
<cfreturn representationOf(cfcatch)/>
</cfcatch>
</cftry>
</cffunction>
</cfcomponent>