Skip to content

Commit f2ae714

Browse files
authored
Merge pull request #174 from topcoder-platform/mm_fixes
Add support for pulling specific review summations, not all review su…
2 parents f72841c + 737c8be commit f2ae714

File tree

2 files changed

+56
-12
lines changed

2 files changed

+56
-12
lines changed

src/api/review-summation/review-summation.service.ts

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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> = {};

src/dto/reviewSummation.dto.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,33 @@ export class ReviewSummationQueryDto {
7070
@IsBooleanString()
7171
isExample?: string;
7272

73+
@ApiProperty({
74+
description:
75+
'When true, only include review summations flagged as examples (isExample = true)',
76+
required: false,
77+
})
78+
@IsOptional()
79+
@IsBooleanString()
80+
example?: string;
81+
82+
@ApiProperty({
83+
description:
84+
'When true, only include provisional review summations (isProvisional = true)',
85+
required: false,
86+
})
87+
@IsOptional()
88+
@IsBooleanString()
89+
provisional?: string;
90+
91+
@ApiProperty({
92+
description:
93+
'When true, only include system (final) review summations (isFinal = true)',
94+
required: false,
95+
})
96+
@IsOptional()
97+
@IsBooleanString()
98+
system?: string;
99+
73100
@ApiProperty({
74101
description: 'The challenge id tied to the submission',
75102
required: false,

0 commit comments

Comments
 (0)