@@ -289,7 +289,6 @@ async function updateWorkPeriod (currentUser, id, data) {
289289 }
290290 }
291291
292- // await helper.postEvent(config.TAAS_WORK_PERIOD_UPDATE_TOPIC, updated.toJSON(), { oldValue: oldValue })
293292 await helper . postEvent ( config . TAAS_WORK_PERIOD_UPDATE_TOPIC , updated . toJSON ( ) , { oldValue : oldValue , key : `resourceBooking.id:${ data . resourceBookingId } ` } )
294293 return updated . dataValues
295294}
@@ -401,6 +400,11 @@ async function searchWorkPeriods (currentUser, criteria, options = { returnAll:
401400 return resourceBookingId
402401 } )
403402 }
403+ // `criteria.paymentStatus` could be array of paymentStatus, or comma separated string of paymentStatus
404+ // in case it's comma separated string of paymentStatus we have to convert it to an array of paymentStatus
405+ if ( ( typeof criteria . paymentStatus ) === 'string' ) {
406+ criteria . paymentStatus = criteria . paymentStatus . trim ( ) . split ( ',' ) . map ( ps => Joi . attempt ( { paymentStatus : ps . trim ( ) } , Joi . object ( ) . keys ( { paymentStatus : Joi . paymentStatus ( ) } ) ) . paymentStatus )
407+ }
404408 const page = criteria . page
405409 const perPage = criteria . perPage
406410 if ( ! criteria . sortBy ) {
@@ -436,7 +440,7 @@ async function searchWorkPeriods (currentUser, criteria, options = { returnAll:
436440 criteria . endDate = moment ( criteria . endDate ) . format ( 'YYYY-MM-DD' )
437441 }
438442 // Apply filters
439- _ . each ( _ . pick ( criteria , [ 'resourceBookingId' , 'userHandle' , 'projectId' , 'startDate' , 'endDate' , 'paymentStatus' ] ) , ( value , key ) => {
443+ _ . each ( _ . pick ( criteria , [ 'resourceBookingId' , 'userHandle' , 'projectId' , 'startDate' , 'endDate' ] ) , ( value , key ) => {
440444 esQuery . body . query . nested . query . bool . must . push ( {
441445 term : {
442446 [ `workPeriods.${ key } ` ] : {
@@ -445,6 +449,13 @@ async function searchWorkPeriods (currentUser, criteria, options = { returnAll:
445449 }
446450 } )
447451 } )
452+ if ( criteria . paymentStatus ) {
453+ esQuery . body . query . nested . query . bool . must . push ( {
454+ terms : {
455+ 'workPeriods.paymentStatus' : criteria . paymentStatus
456+ }
457+ } )
458+ }
448459 // if criteria contains resourceBookingIds, filter resourceBookingId with this value
449460 if ( criteria . resourceBookingIds ) {
450461 esQuery . body . query . nested . query . bool . filter = [ {
@@ -459,9 +470,12 @@ async function searchWorkPeriods (currentUser, criteria, options = { returnAll:
459470 let workPeriods = _ . reduce ( body . hits . hits , ( acc , resourceBooking ) => _ . concat ( acc , resourceBooking . _source . workPeriods ) , [ ] )
460471 // ESClient will return ResourceBookings with it's all nested WorkPeriods
461472 // We re-apply WorkPeriod filters
462- _ . each ( _ . pick ( criteria , [ 'startDate' , 'endDate' , 'paymentStatus' ] ) , ( value , key ) => {
473+ _ . each ( _ . pick ( criteria , [ 'startDate' , 'endDate' ] ) , ( value , key ) => {
463474 workPeriods = _ . filter ( workPeriods , { [ key ] : value } )
464475 } )
476+ if ( criteria . paymentStatus ) {
477+ workPeriods = _ . filter ( workPeriods , wp => _ . includes ( criteria . paymentStatus , wp . paymentStatus ) )
478+ }
465479 workPeriods = _ . sortBy ( workPeriods , [ criteria . sortBy ] )
466480 if ( criteria . sortOrder === 'desc' ) {
467481 workPeriods = _ . reverse ( workPeriods )
@@ -522,7 +536,10 @@ searchWorkPeriods.schema = Joi.object().keys({
522536 perPage : Joi . number ( ) . integer ( ) . min ( 1 ) . max ( 10000 ) . default ( 20 ) ,
523537 sortBy : Joi . string ( ) . valid ( 'id' , 'resourceBookingId' , 'userHandle' , 'projectId' , 'startDate' , 'endDate' , 'daysWorked' , 'customerRate' , 'memberRate' , 'paymentStatus' ) ,
524538 sortOrder : Joi . string ( ) . valid ( 'desc' , 'asc' ) ,
525- paymentStatus : Joi . paymentStatus ( ) ,
539+ paymentStatus : Joi . alternatives (
540+ Joi . string ( ) ,
541+ Joi . array ( ) . items ( Joi . paymentStatus ( ) )
542+ ) ,
526543 startDate : Joi . date ( ) . format ( 'YYYY-MM-DD' ) ,
527544 endDate : Joi . date ( ) . format ( 'YYYY-MM-DD' ) ,
528545 userHandle : Joi . string ( ) ,
0 commit comments