diff --git a/.gitignore b/.gitignore index 8b446d9..1fda11f 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ out/ .DS_Store **/.DS_Store /keys/ +/docs/ diff --git a/src/main/java/KUSITMS/WITHUS/domain/application/application/dto/ApplicationResponseDTO.java b/src/main/java/KUSITMS/WITHUS/domain/application/application/dto/ApplicationResponseDTO.java index f480aaa..ff25970 100644 --- a/src/main/java/KUSITMS/WITHUS/domain/application/application/dto/ApplicationResponseDTO.java +++ b/src/main/java/KUSITMS/WITHUS/domain/application/application/dto/ApplicationResponseDTO.java @@ -17,6 +17,7 @@ import KUSITMS.WITHUS.domain.evaluation.evaluationCriteria.enumerate.EvaluationType; import KUSITMS.WITHUS.domain.interview.interviewQuestion.dto.InterviewQuestionResponseDTO; import KUSITMS.WITHUS.domain.interview.timeslot.entity.TimeSlot; +import KUSITMS.WITHUS.domain.organization.organizationRole.entity.OrganizationRole; import KUSITMS.WITHUS.domain.recruitment.availableTimeRange.entity.AvailableTimeRange; import KUSITMS.WITHUS.domain.recruitment.recruitment.entity.Recruitment; import KUSITMS.WITHUS.domain.user.user.dto.UserResponseDTO; @@ -289,17 +290,20 @@ public record SummaryForUser( ) { public static SummaryForUser from(Application application, Long currentUserId) { Recruitment recruitment = application.getRecruitment(); + OrganizationRole appRole = application.getOrganizationRole(); int documentCriteriaCount = (int) recruitment .getEvaluationCriteriaList() .stream() .filter(c -> c.getEvaluationType() == EvaluationType.DOCUMENT) + .filter(c -> matchesOrganizationRole(c, appRole)) .count(); int documentMaxScore = documentCriteriaCount * 10; List userDocsEvaluations = application.getEvaluations().stream() .filter(e -> e.getUser().getId().equals(currentUserId)) .filter(e -> e.getCriteria().getEvaluationType() == EvaluationType.DOCUMENT) + .filter(e -> matchesOrganizationRole(e.getCriteria(), appRole)) .toList(); boolean evaluated = !(documentCriteriaCount > userDocsEvaluations.size() || userDocsEvaluations.isEmpty()); @@ -336,6 +340,17 @@ public static SummaryForUser from(Application application, Long currentUserId) { interviewSchedule ); } + + private static boolean matchesOrganizationRole(EvaluationCriteria criteria, OrganizationRole appRole) { + OrganizationRole criteriaRole = criteria.getOrganizationRole(); + if (criteriaRole == null) { + return true; + } + if (appRole == null) { + return false; + } + return criteriaRole.getId().equals(appRole.getId()); + } } @Schema(description = "단계별 count 포함 관리자용 지원서 리스트 요약 응답 DTO")