@@ -522,17 +522,56 @@ export class ListingService implements OnModuleInit {
522522 return builtFilter . map ( ( filt ) => ( {
523523 marketingType : filt ,
524524 } ) ) ;
525- } else if (
526- availability === FilterAvailabilityEnum . openWaitlist ||
527- availability === FilterAvailabilityEnum . waitlistOpen
528- ) {
525+ } else if ( availability === FilterAvailabilityEnum . openWaitlist ) {
529526 const builtFilter = buildFilter ( {
530- $comparison : Compare . IN ,
527+ $comparison : Compare [ '=' ] ,
531528 $include_nulls : false ,
532- value : [
533- ReviewOrderTypeEnum . waitlist ,
534- ReviewOrderTypeEnum . waitlistLottery ,
529+ value : true ,
530+ key : ListingFilterKeys . availabilities ,
531+ caseSensitive : true ,
532+ } ) ;
533+ const reviewOrderFilter = buildFilter ( {
534+ $comparison : Compare [ '=' ] ,
535+ $include_nulls : false ,
536+ value : ReviewOrderTypeEnum . waitlistLottery ,
537+ key : ListingFilterKeys . availabilities ,
538+ caseSensitive : true ,
539+ } ) ;
540+ return {
541+ OR : [
542+ {
543+ AND : builtFilter
544+ . map ( ( filt ) => ( {
545+ unitGroups : {
546+ some : {
547+ [ FilterAvailabilityEnum . openWaitlist ] : filt ,
548+ } ,
549+ } ,
550+ } ) )
551+ . concat (
552+ notUnderConstruction . map ( ( filt ) => ( {
553+ marketingType : filt ,
554+ } ) ) ,
555+ ) ,
556+ } ,
557+ {
558+ AND : reviewOrderFilter
559+ . map ( ( filt ) => ( {
560+ reviewOrderType : filt ,
561+ } ) )
562+ . concat (
563+ notUnderConstruction . map ( ( filt ) => ( {
564+ marketingType : filt ,
565+ } ) ) ,
566+ ) ,
567+ } ,
535568 ] ,
569+ } ;
570+ } else if ( availability === FilterAvailabilityEnum . waitlistOpen ) {
571+ const builtFilter = buildFilter ( {
572+ $comparison : Compare [ '=' ] ,
573+ $include_nulls : false ,
574+ value : ReviewOrderTypeEnum . waitlist ,
536575 key : ListingFilterKeys . availabilities ,
537576 caseSensitive : true ,
538577 } ) ;
@@ -624,6 +663,13 @@ export class ListingService implements OnModuleInit {
624663 key : ListingFilterKeys . availability ,
625664 caseSensitive : true ,
626665 } ) ;
666+ const reviewOrderFilter = buildFilter ( {
667+ $comparison : filter . $comparison ,
668+ $include_nulls : false ,
669+ value : ReviewOrderTypeEnum . waitlistLottery ,
670+ key : ListingFilterKeys . availability ,
671+ caseSensitive : true ,
672+ } ) ;
627673 filters . push ( {
628674 OR : [
629675 {
@@ -639,6 +685,17 @@ export class ListingService implements OnModuleInit {
639685 } ) ) ,
640686 ) ,
641687 } ,
688+ {
689+ AND : reviewOrderFilter
690+ . map ( ( filt ) => ( {
691+ reviewOrderType : filt ,
692+ } ) )
693+ . concat (
694+ notUnderConstruction . map ( ( filt ) => ( {
695+ marketingType : filt ,
696+ } ) ) ,
697+ ) ,
698+ } ,
642699 ] ,
643700 } ) ;
644701 } else if (
0 commit comments