@@ -465,7 +465,9 @@ async function searchJobs (currentUser, criteria, options = { returnAll: false }
465
465
'rateType' ,
466
466
'workload' ,
467
467
'title' ,
468
- 'status'
468
+ 'status' ,
469
+ 'minSalary' ,
470
+ 'maxSalary'
469
471
] ) , ( value , key ) => {
470
472
let must
471
473
if ( key === 'description' || key === 'title' ) {
@@ -482,6 +484,15 @@ async function searchJobs (currentUser, criteria, options = { returnAll: false }
482
484
[ `${ key } s` ] : [ value ]
483
485
}
484
486
}
487
+ } else if ( key === 'minSalary' || key === 'maxSalary' ) {
488
+ const salaryOp = key === 'minSalary' ? 'gte' : 'lte'
489
+ must = {
490
+ range : {
491
+ [ key ] : {
492
+ [ salaryOp ] : value
493
+ }
494
+ }
495
+ }
485
496
} else {
486
497
must = {
487
498
term : {
@@ -568,6 +579,16 @@ async function searchJobs (currentUser, criteria, options = { returnAll: false }
568
579
if ( criteria . jobIds && criteria . jobIds . length > 0 ) {
569
580
filter [ Op . and ] . push ( { id : criteria . jobIds } )
570
581
}
582
+ if ( criteria . minSalary !== undefined ) {
583
+ filter . minSalary = {
584
+ [ Op . gte ] : criteria . minSalary
585
+ }
586
+ }
587
+ if ( criteria . maxSalary !== undefined ) {
588
+ filter . maxSalary = {
589
+ [ Op . lte ] : criteria . maxSalary
590
+ }
591
+ }
571
592
const jobs = await Job . findAll ( {
572
593
where : filter ,
573
594
offset : ( ( page - 1 ) * perPage ) ,
@@ -609,7 +630,9 @@ searchJobs.schema = Joi.object().keys({
609
630
workload : Joi . workload ( ) ,
610
631
status : Joi . jobStatus ( ) ,
611
632
projectIds : Joi . array ( ) . items ( Joi . number ( ) . integer ( ) ) . single ( ) ,
612
- jobIds : Joi . array ( ) . items ( Joi . string ( ) . uuid ( ) )
633
+ jobIds : Joi . array ( ) . items ( Joi . string ( ) . uuid ( ) ) ,
634
+ minSalary : Joi . number ( ) . integer ( ) ,
635
+ maxSalary : Joi . number ( ) . integer ( )
613
636
} ) . required ( ) ,
614
637
options : Joi . object ( )
615
638
} ) . required ( )
0 commit comments