@@ -544,6 +544,13 @@ export class ReviewSummationService {
544544 const skip = ( page - 1 ) * perPage ;
545545 let orderBy ;
546546
547+ const parseBooleanString = ( value ?: string ) : boolean | undefined => {
548+ if ( typeof value !== 'string' ) {
549+ return undefined ;
550+ }
551+ return value . toLowerCase ( ) === 'true' ;
552+ } ;
553+
547554 if ( sortDto && sortDto . orderBy && sortDto . sortBy ) {
548555 orderBy = {
549556 [ sortDto . sortBy ] : sortDto . orderBy . toLowerCase ( ) ,
@@ -700,6 +707,14 @@ export class ReviewSummationService {
700707
701708 // Build the where clause for review summations based on available filter parameters
702709 const reviewSummationWhereClause : any = { } ;
710+ const isPassingFilter = parseBooleanString ( queryDto . isPassing ) ;
711+ const isFinalFilter = parseBooleanString ( queryDto . isFinal ) ;
712+ const isProvisionalFilter = parseBooleanString ( queryDto . isProvisional ) ;
713+ const isExampleFilter = parseBooleanString ( queryDto . isExample ) ;
714+ const exampleOnly = parseBooleanString ( queryDto . example ) === true ;
715+ const provisionalOnly = parseBooleanString ( queryDto . provisional ) === true ;
716+ const systemOnly = parseBooleanString ( queryDto . system ) === true ;
717+
703718 if ( queryDto . submissionId ) {
704719 reviewSummationWhereClause . submissionId = queryDto . submissionId ;
705720 }
@@ -711,21 +726,23 @@ export class ReviewSummationService {
711726 if ( queryDto . scorecardId ) {
712727 reviewSummationWhereClause . scorecardId = queryDto . scorecardId ;
713728 }
714- if ( queryDto . isPassing !== undefined ) {
715- reviewSummationWhereClause . isPassing =
716- queryDto . isPassing . toLowerCase ( ) === 'true' ;
729+ if ( isPassingFilter !== undefined ) {
730+ reviewSummationWhereClause . isPassing = isPassingFilter ;
717731 }
718- if ( queryDto . isFinal !== undefined ) {
719- reviewSummationWhereClause . isFinal =
720- queryDto . isFinal . toLowerCase ( ) === 'true' ;
732+ if ( isFinalFilter !== undefined ) {
733+ reviewSummationWhereClause . isFinal = isFinalFilter ;
734+ } else if ( systemOnly ) {
735+ reviewSummationWhereClause . isFinal = true ;
721736 }
722- if ( queryDto . isProvisional !== undefined ) {
723- reviewSummationWhereClause . isProvisional =
724- queryDto . isProvisional . toLowerCase ( ) === 'true' ;
737+ if ( isProvisionalFilter !== undefined ) {
738+ reviewSummationWhereClause . isProvisional = isProvisionalFilter ;
739+ } else if ( provisionalOnly ) {
740+ reviewSummationWhereClause . isProvisional = true ;
725741 }
726- if ( queryDto . isExample !== undefined ) {
727- reviewSummationWhereClause . isExample =
728- queryDto . isExample . toLowerCase ( ) === 'true' ;
742+ if ( isExampleFilter !== undefined ) {
743+ reviewSummationWhereClause . isExample = isExampleFilter ;
744+ } else if ( exampleOnly ) {
745+ reviewSummationWhereClause . isExample = true ;
729746 }
730747
731748 const submissionWhereClause : Record < string , unknown > = { } ;
0 commit comments