@@ -51,10 +51,11 @@ component {
5151 , struct filters = {}
5252 ) {
5353 var args = {
54- maxRows = pageSize
55- , startRow = ( ( arguments .page - 1 ) * arguments .pageSize ) + 1
56- , orderby = " datemodified"
57- , filter = {}
54+ maxRows = pageSize
55+ , startRow = ( ( arguments .page - 1 ) * arguments .pageSize ) + 1
56+ , orderby = " datemodified"
57+ , filter = {}
58+ , extraFilters = []
5859 };
5960 if ( args .maxRows < 1 ) {
6061 args .maxRows = 100 ;
@@ -63,17 +64,7 @@ component {
6364 args .startRow = 1 ;
6465 }
6566
66- if ( arguments .filters .count () ) {
67- var configService = _getConfigService ();
68- var filterFields = configService .getFilterFields ( arguments .entity );
69-
70- for ( var field in filterFields ) {
71- var propName = configService .getPropertyNameFromFieldAlias ( arguments .entity , field );
72- if ( StructKeyExists ( arguments .filters , field ) || StructKeyExists ( arguments .filters , propName ) ) {
73- args .filter [ propName ] = arguments .filters [ field ] ?: arguments .filters [ propName ];
74- }
75- }
76- }
67+ _prepareFilters ( arguments .entity , arguments .filters , args );
7768
7869 var result = {
7970 records = _selectData ( arguments .entity , args , arguments .fields )
@@ -506,6 +497,47 @@ component {
506497 return translated ;
507498 }
508499
500+ private function _prepareFilters ( entity , filters , args ) {
501+ if ( StructCount ( arguments .filters ) ) {
502+ var configService = _getConfigService ();
503+ var objectName = configService .getEntityObject ( arguments .entity );
504+ var dbAdapter = $getPresideObjectService ().getDbAdapterForObject ( objectName );
505+ var filterFields = configService .getFilterFields ( arguments .entity );
506+
507+ for ( var field in filterFields ) {
508+ var propName = configService .getPropertyNameFromFieldAlias ( arguments .entity , field );
509+ var fieldType = $getPresideObjectService ().getObjectPropertyAttribute ( objectName , propName , " dbtype" );
510+
511+ if ( StructKeyExists ( arguments .filters , field ) || StructKeyExists ( arguments .filters , propName ) ) {
512+ args .filter [ propName ] = arguments .filters [ field ] ?: arguments .filters [ propName ];
513+ }
514+
515+ if ( ReFindNoCase ( " ^date" , fieldType ) ) {
516+ if ( StructKeyExists ( arguments .filters , field & " .min" ) || StructKeyExists ( arguments .filters , propName & " .min" ) ) {
517+ var value = arguments .filters [ field & " .min" ] ?: arguments .filters [ propName & " .min" ];
518+ ArrayAppend ( args .extraFilters , {
519+ filter = " #dbAdapter .escapeEntity ( ' #objectName #.#propName #' ) # >= :#propName #__min"
520+ , filterParams = { " #propName #__min" = {
521+ type = dbAdapter .sqlDataTypeToCfSqlDatatype ( fieldType )
522+ , value = value
523+ } }
524+ } );
525+ }
526+ if ( StructKeyExists ( arguments .filters , field & " .max" ) || StructKeyExists ( arguments .filters , propName & " .max" ) ) {
527+ var value = arguments .filters [ field & " .max" ] ?: arguments .filters [ propName & " .max" ];
528+ ArrayAppend ( args .extraFilters , {
529+ filter = " #dbAdapter .escapeEntity ( ' #objectName #.#propName #' ) # <= :#propName #__max"
530+ , filterParams = { " #propName #__max" = {
531+ type = dbAdapter .sqlDataTypeToCfSqlDatatype ( fieldType )
532+ , value = value
533+ } }
534+ } );
535+ }
536+ }
537+ }
538+ }
539+ }
540+
509541// GETTERS AND SETTERS
510542 private any function _getPresideRestService () {
511543 return _presideRestService ;
0 commit comments