@@ -125,7 +125,9 @@ var QUERY_PATH = './queries/';
125
125
*/
126
126
var TECHNOLOGY_FILTER = ' AND EXISTS (SELECT DISTINCT 1 FROM comp_technology ct WHERE ct.comp_vers_id = pi1.value ' +
127
127
'AND ct.technology_type_id IN (@filter@))' ;
128
-
128
+
129
+ var EXT_TECHNOLOGY_FILTER = ' AND (pn.value LIKE ("%@tech@%") OR EXISTS (SELECT DISTINCT 1 FROM comp_technology ct WHERE ct.comp_vers_id = pi1.value ' +
130
+ 'AND ct.technology_type_id IN (@filter@)))' ;
129
131
/**
130
132
* The platform filter for challenges api.
131
133
* @since 1.23
@@ -745,14 +747,15 @@ function transferResultV2(src, helper) {
745
747
* @param {String } content - the content that need in template.
746
748
* @since 1.23
747
749
*/
748
- var editSql = function ( sql , template , content ) {
750
+ var editSql = function ( sql , template , content , tech ) {
749
751
// For empty sql just return it.
750
752
if ( sql . length === 0 ) {
751
753
return sql ;
752
754
}
753
755
var index = sql . toLowerCase ( ) . indexOf ( 'order by' ) ;
754
756
if ( ! _ . isUndefined ( template ) ) {
755
757
template = template . replace ( '@filter@' , content ) ;
758
+ template = template . replace ( '@tech@' , tech ) ;
756
759
}
757
760
return sql . slice ( 0 , index ) + template + sql . slice ( index , sql . length ) ;
758
761
} ;
@@ -776,8 +779,13 @@ var addFilter = function (sql, filter, isMyChallenges, helper, caller) {
776
779
777
780
if ( _ . isDefined ( filter . technologies ) ) {
778
781
technology = filter . technologies . join ( ', ' ) ;
779
- sql . count = editSql ( sql . count , TECHNOLOGY_FILTER , technology ) ;
780
- sql . data = editSql ( sql . data , TECHNOLOGY_FILTER , technology ) ;
782
+ if ( filter . tech ) {
783
+ sql . count = editSql ( sql . count , EXT_TECHNOLOGY_FILTER , technology , filter . tech ) ;
784
+ sql . data = editSql ( sql . data , EXT_TECHNOLOGY_FILTER , technology , filter . tech ) ;
785
+ } else {
786
+ sql . count = editSql ( sql . count , TECHNOLOGY_FILTER , technology ) ;
787
+ sql . data = editSql ( sql . data , TECHNOLOGY_FILTER , technology ) ;
788
+ }
781
789
}
782
790
783
791
if ( _ . isDefined ( filter . challengeType ) ) {
@@ -3708,6 +3716,10 @@ var getChallenges = function (api, connection, listType, isMyChallenges, next) {
3708
3716
} ,
3709
3717
function ( cb ) {
3710
3718
validateInputParameterV2 ( helper , caller , type , query , filter , pageIndex , pageSize , sortColumn , sortOrder , listType , dbConnectionMap , cb ) ;
3719
+
3720
+ if ( filter . technologies ) {
3721
+ filter . tech = filter . technologies . split ( ',' ) [ 0 ] ;
3722
+ }
3711
3723
} , function ( cb ) {
3712
3724
if ( pageIndex === - 1 ) {
3713
3725
pageIndex = 1 ;
0 commit comments