diff --git a/src/main/java/hackerthon/likelion13th/canfly/grades/service/MockService.java b/src/main/java/hackerthon/likelion13th/canfly/grades/service/MockService.java index bad265a..67ec626 100644 --- a/src/main/java/hackerthon/likelion13th/canfly/grades/service/MockService.java +++ b/src/main/java/hackerthon/likelion13th/canfly/grades/service/MockService.java @@ -4,14 +4,10 @@ import hackerthon.likelion13th.canfly.domain.mock.Mock; import hackerthon.likelion13th.canfly.domain.mock.MockScore; import hackerthon.likelion13th.canfly.domain.user.User; -import hackerthon.likelion13th.canfly.global.api.ErrorCode; -import hackerthon.likelion13th.canfly.global.exception.GeneralException; import hackerthon.likelion13th.canfly.grades.dto.MockCreateRequest; import hackerthon.likelion13th.canfly.grades.dto.MockCreateResponse; -import hackerthon.likelion13th.canfly.grades.dto.MockRequestDto; import hackerthon.likelion13th.canfly.grades.dto.MockResponseDto; import hackerthon.likelion13th.canfly.grades.repository.MockRepository; -import hackerthon.likelion13th.canfly.grades.repository.MockScoreRepository; import hackerthon.likelion13th.canfly.login.repository.UserRepository; import hackerthon.likelion13th.canfly.score.ScoreExcelEngine; import hackerthon.likelion13th.canfly.score.SubjectCategoryMapper; @@ -25,8 +21,6 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.Optional; import java.util.stream.Collectors; @@ -35,78 +29,11 @@ @RequiredArgsConstructor public class MockService { private final MockRepository mockRepository; - private final MockScoreRepository mockScoreRepository; private final UserRepository userRepository; private final SubjectSelectionValidator selectionValidator; private final ScoreExcelEngine excelEngine; - @Transactional - public MockResponseDto createMock(String userId, MockRequestDto mockRequestDto) { - User user = userRepository.findById(userId) - .orElseThrow(() -> GeneralException.of(ErrorCode.USER_NOT_FOUND)); - - Optional existingMockOpt = mockRepository.findByUserUidAndExamYearAndExamMonthAndExamGrade( - user.getUid(), - mockRequestDto.getExamYear(), - mockRequestDto.getExamMonth(), - mockRequestDto.getExamGrade() - ); - - Mock updateMock = null; - if (existingMockOpt.isPresent()) { - // Mock 존재 시에는 수정 - updateMock = existingMockOpt.get(); - updateMock.getScoreLists().clear(); - - } else { - // Mock 없으면 생성 - updateMock = Mock.builder() - .user(user) - .examYear(mockRequestDto.getExamYear()) - .examMonth(mockRequestDto.getExamMonth()) - .examGrade(mockRequestDto.getExamGrade()) - .build(); - user.addMock(updateMock); - } - - // MockScoreRequestDto 리스트를 MockScore 엔티티 리스트로 변환하여 추가 - if (mockRequestDto.getScoreLists() != null && !mockRequestDto.getScoreLists().isEmpty()) { - for (MockRequestDto.MockScoreRequestDto scoreDto : mockRequestDto.getScoreLists()) { - MockScore mockScore = MockScore.builder() - .standardScore(scoreDto.getStandardScore()) - .percentile(scoreDto.getPercentile()) - .grade(scoreDto.getGrade()) - .cumulative(scoreDto.getCumulative()) - .category(scoreDto.getCategory()) - .name(scoreDto.getName()) - .build(); - updateMock.addMockScore(mockScore); - } - } - Mock updatedMock = mockRepository.save(updateMock); - return new MockResponseDto(updatedMock); - } -// 사용하지 않는 관계로 주석 처리 -// @Transactional -// public MockResponseDto addMockScoreToMock(Long mockId, MockRequestDto.MockScoreRequestDto scoreRequestDto) { -// Mock mock = mockRepository.findById(mockId) -// .orElseThrow(() -> new IllegalArgumentException("Mock not found with id: " + mockId)); -// -// // DTO 필드에서 MockScore 엔티티 직접 생성 -// MockScore newMockScore = MockScore.builder() -// .standardScore(scoreRequestDto.getStandardScore()) -// .percentile(scoreRequestDto.getPercentile()) -// .grade(scoreRequestDto.getGrade()) -// .cumulative(scoreRequestDto.getCumulative()) -// .category(scoreRequestDto.getCategory()) -// .name(scoreRequestDto.getName()) -// .build(); -// mock.addMockScore(newMockScore); // Mock 엔티티에 MockScore 추가 (양방향 관계 설정) -// mockScoreRepository.save(newMockScore); -// return new MockResponseDto(mock); -// } - @Transactional(readOnly = true) public MockResponseDto getMockById(Long mockId, String userId) { Mock mock = mockRepository.findByIdAndUser_Uid(mockId, userId) @@ -140,36 +67,6 @@ public MockResponseDto.MockScoreResponseDto getMockScoreById(Long mockId, Long s return new MockResponseDto.MockScoreResponseDto(mockScore); } -// @Transactional -// public MockResponseDto.MockScoreResponseDto updateMockScore(Long mockScoreId, MockRequestDto.MockScoreRequestDto scoreRequestDto) { -// MockScore existingMockScore = mockScoreRepository.findById(mockScoreId) -// .orElseThrow(() -> new IllegalArgumentException("MockScore not found with id: " + mockScoreId)); -// existingMockScore.setStandardScore(scoreRequestDto.getStandardScore()); -// existingMockScore.setPercentile(scoreRequestDto.getPercentile()); -// existingMockScore.setGrade(scoreRequestDto.getGrade()); -// existingMockScore.setCumulative(scoreRequestDto.getCumulative()); -// existingMockScore.setCategory(scoreRequestDto.getCategory()); -// existingMockScore.setName(scoreRequestDto.getName()); -// MockScore updatedMockScore = mockScoreRepository.save(existingMockScore); -// return convertToDto(updatedMockScore); -// } - -// if (mockRequestDto.getScoreLists() != null && !mockRequestDto.getScoreLists().isEmpty()) { -// for (MockRequestDto.MockScoreRequestDto scoreDto : mockRequestDto.getScoreLists()) { -// MockScore mockScore = MockScore.builder() -// .standardScore(scoreDto.getStandardScore()) -// .percentile(scoreDto.getPercentile()) -// .grade(scoreDto.getGrade()) -// .cumulative(scoreDto.getCumulative()) -// .category(scoreDto.getCategory()) -// .name(scoreDto.getName()) -// .build(); -// newMock.addMockScore(mockScore); -// } -// } -// user.addMock(newMock); -// mockRepository.save(newMock); - @Transactional public void deleteMock(Long mockId, String userId) { mockRepository.deleteByIdAndUser_Uid(mockId, userId); @@ -302,4 +199,100 @@ private Integer toInt(Object v) { private BigDecimal scale2(BigDecimal v) { return (v == null) ? null : v.setScale(2, java.math.RoundingMode.HALF_UP); } + + +// @Transactional +// public MockResponseDto createMock(String userId, MockRequestDto mockRequestDto) { +// User user = userRepository.findById(userId) +// .orElseThrow(() -> GeneralException.of(ErrorCode.USER_NOT_FOUND)); +// +// Optional existingMockOpt = mockRepository.findByUserUidAndExamYearAndExamMonthAndExamGrade( +// user.getUid(), +// mockRequestDto.getExamYear(), +// mockRequestDto.getExamMonth(), +// mockRequestDto.getExamGrade() +// ); +// +// Mock updateMock = null; +// if (existingMockOpt.isPresent()) { +// // Mock 존재 시에는 수정 +// updateMock = existingMockOpt.get(); +// updateMock.getScoreLists().clear(); +// +// } else { +// // Mock 없으면 생성 +// updateMock = Mock.builder() +// .user(user) +// .examYear(mockRequestDto.getExamYear()) +// .examMonth(mockRequestDto.getExamMonth()) +// .examGrade(mockRequestDto.getExamGrade()) +// .build(); +// user.addMock(updateMock); +// } +// +// // MockScoreRequestDto 리스트를 MockScore 엔티티 리스트로 변환하여 추가 +// if (mockRequestDto.getScoreLists() != null && !mockRequestDto.getScoreLists().isEmpty()) { +// for (MockRequestDto.MockScoreRequestDto scoreDto : mockRequestDto.getScoreLists()) { +// MockScore mockScore = MockScore.builder() +// .standardScore(scoreDto.getStandardScore()) +// .percentile(scoreDto.getPercentile()) +// .grade(scoreDto.getGrade()) +// .cumulative(scoreDto.getCumulative()) +// .category(scoreDto.getCategory()) +// .name(scoreDto.getName()) +// .build(); +// updateMock.addMockScore(mockScore); +// } +// } +// Mock updatedMock = mockRepository.save(updateMock); +// return new MockResponseDto(updatedMock); +// } +// 사용하지 않는 관계로 주석 처리 +// @Transactional +// public MockResponseDto addMockScoreToMock(Long mockId, MockRequestDto.MockScoreRequestDto scoreRequestDto) { +// Mock mock = mockRepository.findById(mockId) +// .orElseThrow(() -> new IllegalArgumentException("Mock not found with id: " + mockId)); +// +// // DTO 필드에서 MockScore 엔티티 직접 생성 +// MockScore newMockScore = MockScore.builder() +// .standardScore(scoreRequestDto.getStandardScore()) +// .percentile(scoreRequestDto.getPercentile()) +// .grade(scoreRequestDto.getGrade()) +// .cumulative(scoreRequestDto.getCumulative()) +// .category(scoreRequestDto.getCategory()) +// .name(scoreRequestDto.getName()) +// .build(); +// mock.addMockScore(newMockScore); // Mock 엔티티에 MockScore 추가 (양방향 관계 설정) +// mockScoreRepository.save(newMockScore); +// return new MockResponseDto(mock); +// } + // @Transactional +// public MockResponseDto.MockScoreResponseDto updateMockScore(Long mockScoreId, MockRequestDto.MockScoreRequestDto scoreRequestDto) { +// MockScore existingMockScore = mockScoreRepository.findById(mockScoreId) +// .orElseThrow(() -> new IllegalArgumentException("MockScore not found with id: " + mockScoreId)); +// existingMockScore.setStandardScore(scoreRequestDto.getStandardScore()); +// existingMockScore.setPercentile(scoreRequestDto.getPercentile()); +// existingMockScore.setGrade(scoreRequestDto.getGrade()); +// existingMockScore.setCumulative(scoreRequestDto.getCumulative()); +// existingMockScore.setCategory(scoreRequestDto.getCategory()); +// existingMockScore.setName(scoreRequestDto.getName()); +// MockScore updatedMockScore = mockScoreRepository.save(existingMockScore); +// return convertToDto(updatedMockScore); +// } + +// if (mockRequestDto.getScoreLists() != null && !mockRequestDto.getScoreLists().isEmpty()) { +// for (MockRequestDto.MockScoreRequestDto scoreDto : mockRequestDto.getScoreLists()) { +// MockScore mockScore = MockScore.builder() +// .standardScore(scoreDto.getStandardScore()) +// .percentile(scoreDto.getPercentile()) +// .grade(scoreDto.getGrade()) +// .cumulative(scoreDto.getCumulative()) +// .category(scoreDto.getCategory()) +// .name(scoreDto.getName()) +// .build(); +// newMock.addMockScore(mockScore); +// } +// } +// user.addMock(newMock); +// mockRepository.save(newMock); } \ No newline at end of file