@@ -32,9 +32,14 @@ $C('$data.storageProviders.oData.oDataCompiler', $data.Expressions.EntityExpress
3232
3333 var queryText = queryFragments . urlText ;
3434 var addAmp = false ;
35+
36+ if ( queryFragments . $funcParams ) {
37+ queryText += "(" + queryFragments . $funcParams + ")"
38+ }
39+
3540 for ( var name in queryFragments ) {
3641 if ( name != "urlText" && name != "actionPack" && name != "data" && name != "lambda" && name != "method" && name != "postData" &&
37- name != "_isBatchExecuteQuery" && name != "_subQueries" && queryFragments [ name ] != "" ) {
42+ name != "_isBatchExecuteQuery" && name != "_subQueries" && name != "$funcParams" && queryFragments [ name ] != "" ) {
3843
3944 if ( addAmp ) { queryText += "&" ; } else { queryText += "?" ; }
4045 addAmp = true ;
@@ -166,9 +171,11 @@ $C('$data.storageProviders.oData.oDataCompiler', $data.Expressions.EntityExpress
166171
167172 //this.logicalType = expression.returnType;
168173 if ( expression . params ) {
174+ context . serviceConfig = expression . cfg
169175 for ( var i = 0 ; i < expression . params . length ; i ++ ) {
170176 this . Visit ( expression . params [ i ] , context ) ;
171177 }
178+ delete context . serviceConfig ;
172179 }
173180 } ,
174181 VisitBatchDeleteExpression : function ( expression , context ) {
@@ -183,16 +190,34 @@ $C('$data.storageProviders.oData.oDataCompiler', $data.Expressions.EntityExpress
183190 typeName = $data . Entity . fullName ;
184191
185192 var converter = this . provider . fieldConverter . toDb [ typeName ] ;
186- var value = converter ? converter ( expression . value ) : expression . value ;
193+ var value = converter ? converter ( expression . value , expression ) : expression . value ;
187194
188195
189196 if ( context . method === 'GET' || ! context . method ) {
190197 converter = this . provider . fieldConverter . escape [ typeName ] ;
191- value = converter ? converter ( value ) : value ;
192-
198+ value = converter ? converter ( value , expression ) : value ;
193199 if ( value !== undefined ) {
194- if ( context [ '$urlParams' ] ) { context [ '$urlParams' ] += '&' ; } else { context [ '$urlParams' ] = '' ; }
195- context [ '$urlParams' ] += expression . name + '=' + value ;
200+ var serviceConfig = context . serviceConfig || { } ;
201+ var paramConfig = ( serviceConfig && serviceConfig . params . filter ( p => p . name == expression . name ) [ 0 ] ) || { }
202+
203+ var useAlias = serviceConfig . namespace &&
204+ ( paramConfig . useAlias ||
205+ serviceConfig . useAlias ||
206+ this . provider . providerConfiguration . useParameterAlias ||
207+ $data . defaults . OData . useParameterAlias ) ;
208+
209+ var paramValue = useAlias ? "@" + expression . name : value ;
210+ var paramName = ( useAlias ? "@" : "" ) + expression . name ;
211+
212+ if ( serviceConfig . namespace ) {
213+ if ( context [ '$funcParams' ] ) { context [ '$funcParams' ] += ',' ; } else { context [ '$funcParams' ] = '' ; }
214+ context [ '$funcParams' ] += expression . name + '=' + paramValue ;
215+ }
216+
217+ if ( ! serviceConfig . namespace || useAlias ) {
218+ if ( context [ '$urlParams' ] ) { context [ '$urlParams' ] += '&' ; } else { context [ '$urlParams' ] = '' ; }
219+ context [ '$urlParams' ] += paramName + '=' + value ;
220+ }
196221 }
197222 } else {
198223 context . postData = context . postData || { } ;
0 commit comments