@@ -520,6 +520,15 @@ async function searchJobs (currentUser, criteria, options = { returnAll: false }
520
520
}
521
521
} )
522
522
}
523
+ console . log ( criteria . bodySkills )
524
+ // if critera contains bodySkills, filter skills with this value
525
+ if ( criteria . bodySkills && criteria . bodySkills . length > 0 ) {
526
+ esQuery . body . query . bool . filter . push ( {
527
+ terms : {
528
+ skills : criteria . bodySkills
529
+ }
530
+ } )
531
+ }
523
532
logger . debug ( { component : 'JobService' , context : 'searchJobs' , message : `Query: ${ JSON . stringify ( esQuery ) } ` } )
524
533
525
534
const { body } = await esClient . search ( esQuery )
@@ -566,9 +575,32 @@ async function searchJobs (currentUser, criteria, options = { returnAll: false }
566
575
[ Op . like ] : `%${ criteria . title } %`
567
576
}
568
577
}
569
- if ( criteria . skill ) {
570
- filter . skills = {
571
- [ Op . contains ] : [ criteria . skill ]
578
+ if ( criteria . skill || ( criteria . bodySkills && criteria . bodySkills . length > 0 ) ) {
579
+ const skill = criteria . skill
580
+ const bodySkills = criteria . bodySkills
581
+ if ( skill && bodySkills && bodySkills . length > 0 ) {
582
+ filter . skills = {
583
+ [ Op . and ] : [
584
+ {
585
+ [ Op . contains ] : [ criteria . skill ]
586
+ } ,
587
+ {
588
+ [ Op . or ] : _ . map ( bodySkills , ( item ) => {
589
+ return { [ Op . contains ] : [ item ] }
590
+ } )
591
+ }
592
+ ]
593
+ }
594
+ } else if ( skill ) {
595
+ filter . skills = {
596
+ [ Op . contains ] : [ criteria . skill ]
597
+ }
598
+ } else if ( bodySkills && bodySkills > 0 ) {
599
+ filter . skills = {
600
+ [ Op . or ] : _ . map ( bodySkills , ( item ) => {
601
+ return { [ Op . contains ] : [ item ] }
602
+ } )
603
+ }
572
604
}
573
605
}
574
606
if ( criteria . role ) {
@@ -631,6 +663,7 @@ searchJobs.schema = Joi.object().keys({
631
663
status : Joi . jobStatus ( ) ,
632
664
projectIds : Joi . array ( ) . items ( Joi . number ( ) . integer ( ) ) . single ( ) ,
633
665
jobIds : Joi . array ( ) . items ( Joi . string ( ) . uuid ( ) ) ,
666
+ bodySkills : Joi . array ( ) . items ( Joi . string ( ) . uuid ( ) ) ,
634
667
minSalary : Joi . number ( ) . integer ( ) ,
635
668
maxSalary : Joi . number ( ) . integer ( )
636
669
} ) . required ( ) ,
0 commit comments