Skip to content

Commit 7b5ac6e

Browse files
authored
Merge pull request #48 from Block-Guard/fix/#47/report-records-update-error
[Fix] 긴급신고 권장 체크 박스 수정 오류
2 parents 6e4e1e7 + ff97b82 commit 7b5ac6e

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

src/main/java/com/blockguard/server/domain/report/application/ReportRecordService.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,20 @@ public ReportRecordStepResponse updateStepInfo(User user, Long reportId, int ste
9797

9898
private void validateUpdateStepInfo(UpdateReportStepRequest updateReportStepRequest, ReportStepProgress progress, ReportStep step) {
9999
// 이미 완료된 step 인지 검증
100-
validateProgressIsCompleted(progress);
100+
validateProgressIsCompleted(updateReportStepRequest, progress);
101101
// 체스박스 수 검증
102102
validateCheckboxCounts(updateReportStepRequest, step);
103103
validateCompletionConsistency(updateReportStepRequest);
104104
}
105105

106-
private void validateProgressIsCompleted(ReportStepProgress progress) {
106+
// 완료된 단계의 필수 체크박스는 수정이 불가능
107+
// 요청된 필수 체크박스(request.getCheckBoxes())가 저장된 필수 체크박스 상태와 다를 경우에만 에러를 던진다
108+
private void validateProgressIsCompleted(UpdateReportStepRequest request, ReportStepProgress progress) {
107109
if (progress.isCompleted()) {
108-
throw new BusinessExceptionHandler(ErrorCode.REPORT_STEP_ALREADY_COMPLETED);
110+
List<Boolean> currentRequired = getCheckboxes(progress, CheckboxType.REQUIRED);
111+
if (!currentRequired.equals(request.getCheckBoxes())){
112+
throw new BusinessExceptionHandler(ErrorCode.REPORT_STEP_ALREADY_COMPLETED);
113+
}
109114
}
110115
}
111116

@@ -179,8 +184,8 @@ private void validateCompletionConsistency(UpdateReportStepRequest request) {
179184
}
180185

181186
private ReportRecordStepResponse buildReportRecordStepResponse(Long reportId, int stepNumber, ReportStepProgress progress, UserReportRecord record) {
182-
List<Boolean> resultRequiredCheckboxes = getRequiredCheckboxes(progress, CheckboxType.REQUIRED);
183-
List<Boolean> resultRecommendedCheckboxes = getRequiredCheckboxes(progress, CheckboxType.RECOMMENDED);
187+
List<Boolean> resultRequiredCheckboxes = getCheckboxes(progress, CheckboxType.REQUIRED);
188+
List<Boolean> resultRecommendedCheckboxes = getCheckboxes(progress, CheckboxType.RECOMMENDED);
184189

185190
resultRecommendedCheckboxes = resultRecommendedCheckboxes.isEmpty() ? null : resultRecommendedCheckboxes;
186191

@@ -194,7 +199,7 @@ private ReportRecordStepResponse buildReportRecordStepResponse(Long reportId, in
194199
.build();
195200
}
196201

197-
private List<Boolean> getRequiredCheckboxes(ReportStepProgress progress, CheckboxType type) {
202+
private List<Boolean> getCheckboxes(ReportStepProgress progress, CheckboxType type) {
198203
return progress.getCheckboxes().stream()
199204
.filter(cb -> cb.getType() == type)
200205
.sorted(Comparator.comparingInt(ReportStepCheckbox::getBoxIndex))

src/main/java/com/blockguard/server/global/common/codes/ErrorCode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public enum ErrorCode {
3434
REPORT_NOT_FOUND(HttpStatus.BAD_REQUEST, 4031, "존재하지 않는 신고입니다."),
3535
INVALID_CHECKBOX_COUNT(HttpStatus.BAD_REQUEST, 4032, "해당 단계에 유효하지 않은 체크박스 형식입니다."),
3636
INVALID_STEP_COMPLETION(HttpStatus.BAD_REQUEST, 4033, "해당 단계가 완료되려면 필수 체크박스가 모두 완료되어야 합니다."),
37-
REPORT_STEP_ALREADY_COMPLETED(HttpStatus.BAD_REQUEST, 4034, "이미 완료된 단계의 체크박스는 수정할 수 없습니다."),
37+
REPORT_STEP_ALREADY_COMPLETED(HttpStatus.BAD_REQUEST, 4034, "완료된 단계의 필수 조치 체크박스는 수정할 수 없습니다."),
3838
FAIL_TO_CRAWLING_NEWS(HttpStatus.BAD_REQUEST, 4035, "뉴스 크롤링에 실패하였습니다."),
3939
MUST_BE_POSITIVE_NUMBER(HttpStatus.BAD_REQUEST, 4036, "페이지와 사이즈는 1이상의 값을 입력해야합니다."),
4040

0 commit comments

Comments
 (0)