Skip to content

Commit 00002ee

Browse files
authored
[fix] 학습리포트 작성자 추가
[fix] 학습리포트 작성자 추가
2 parents 330c8ec + 611975a commit 00002ee

File tree

7 files changed

+35
-43
lines changed

7 files changed

+35
-43
lines changed

src/main/java/classfit/example/classfit/scoreReport/domain/ScoreReport.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import jakarta.persistence.Table;
1616
import java.time.LocalDate;
1717
import lombok.AccessLevel;
18+
import lombok.AllArgsConstructor;
1819
import lombok.Builder;
1920
import lombok.Getter;
2021
import lombok.NoArgsConstructor;
@@ -23,6 +24,8 @@
2324
@Table(name = "score_report")
2425
@NoArgsConstructor(access = AccessLevel.PROTECTED)
2526
@Getter
27+
@Builder
28+
@AllArgsConstructor
2629
public class ScoreReport extends BaseEntity {
2730

2831
@Id
@@ -61,21 +64,11 @@ public class ScoreReport extends BaseEntity {
6164
@Column(name = "include_average")
6265
private Boolean includeAverage;
6366

67+
@Column(name = "report_created_by")
68+
private String reportCreatedBy;
69+
6470

6571

66-
@Builder
67-
public ScoreReport(SubClass subClass, MainClass mainClass, String reportName, Student student,
68-
String overallOpinion, LocalDate startDate,
69-
LocalDate endDate,boolean includeAverage) {
70-
this.subClass = subClass;
71-
this.mainClass = mainClass;
72-
this.reportName = reportName;
73-
this.student = student;
74-
this.overallOpinion = overallOpinion;
75-
this.startDate = startDate;
76-
this.endDate = endDate;
77-
this.includeAverage = includeAverage;
78-
}
7972

8073
public void updateStudentOpinion(String studentOpinion) {
8174
this.studentOpinion = studentOpinion;

src/main/java/classfit/example/classfit/scoreReport/domain/ScoreReportRepository.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,40 @@
1414
public interface ScoreReportRepository extends JpaRepository<ScoreReport, Long> {
1515

1616
@Query("SELECT new classfit.example.classfit.scoreReport.dto.process.ReportExam(" +
17-
"e.id, e.examPeriod, e.mainClass.mainClassName, e.subClass.subClassName, e.examName,e.createdAt) " +
17+
"e.id, e.examPeriod, e.mainClass.mainClassName, e.subClass.subClassName, e.examName, e.createdAt) " +
1818
"FROM Exam e " +
1919
"WHERE FUNCTION('DATE', e.createdAt) BETWEEN :startDate AND :endDate " +
2020
"AND e.mainClass.id = :mainClassId " +
2121
"AND e.subClass.id = :subClassId " +
22+
"AND e.mainClass.academy.id = :academyId " +
2223
"ORDER BY e.createdAt ASC")
2324
List<ReportExam> findExamsByCreatedAtBetween(
2425
@Param("startDate") LocalDate startDate,
2526
@Param("endDate") LocalDate endDate,
2627
@Param("mainClassId") Long mainClassId,
27-
@Param("subClassId") Long subClassId);
28+
@Param("subClassId") Long subClassId,
29+
@Param("academyId") Long academyId);
2830

2931
@Query("""
3032
SELECT sr
3133
FROM ScoreReport sr
3234
WHERE sr.mainClass.id = :mainClassId
3335
AND sr.subClass.id = :subClassId
34-
""")
35-
List<ScoreReport> findAllReportsByMainClassAndSubClass(@Param("mainClassId") Long mainClassId,
36-
@Param("subClassId") Long subClassId);
37-
36+
AND sr.mainClass.academy.id = :academyId
37+
""")
38+
List<ScoreReport> findAllReportsByMainClassAndSubClass(
39+
@Param("mainClassId") Long mainClassId,
40+
@Param("subClassId") Long subClassId,
41+
@Param("academyId") Long academyId);
3842

39-
@Query("SELECT sr FROM ScoreReport sr WHERE sr.id = :studentReportId")
40-
Optional<ScoreReport> findByStudentReportId(@Param("studentReportId") Long studentReportId);
43+
@Query("SELECT sr FROM ScoreReport sr WHERE sr.id = :studentReportId " +
44+
"AND sr.mainClass.academy.id = :academyId")
45+
Optional<ScoreReport> findByStudentReportId(
46+
@Param("studentReportId") Long studentReportId,
47+
@Param("academyId") Long academyId);
4148

4249
@Query("SELECT r FROM ScoreReport r " +
43-
"WHERE r.mainClass.academy = :academy")
44-
List<ScoreReport> findAllByAcademy(@Param("academy") Academy academy);
45-
50+
"WHERE r.mainClass.academy.id = :academyId")
51+
List<ScoreReport> findAllByAcademy(@Param("academyId") Long academyId);
4652
}
4753

src/main/java/classfit/example/classfit/scoreReport/dto/request/CreateReportRequest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import classfit.example.classfit.category.domain.MainClass;
44
import classfit.example.classfit.category.domain.SubClass;
5+
import classfit.example.classfit.member.domain.Member;
56
import classfit.example.classfit.scoreReport.domain.ScoreReport;
67
import classfit.example.classfit.student.domain.Student;
78
import jakarta.validation.constraints.NotNull;
@@ -17,13 +18,14 @@ public record CreateReportRequest(Long mainClassId, Long subClassId, String repo
1718
@NotNull(message = "종합 의견을 입력해주세요.")
1819
String overallOpinion) {
1920

20-
public ScoreReport toEntity(SubClass subClass, MainClass mainClass,Student student) {
21+
public ScoreReport toEntity(SubClass subClass, MainClass mainClass,Student student, Member member) {
2122
return ScoreReport.builder()
2223
.subClass(subClass)
2324
.mainClass(mainClass)
2425
.student(student)
2526
.reportName(reportName)
2627
.overallOpinion(overallOpinion)
28+
.reportCreatedBy(member.getName())
2729
.build();
2830
}
2931
}

src/main/java/classfit/example/classfit/scoreReport/dto/response/CreateReportResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
public record CreateReportResponse( boolean includeAverage ,Long mainClassId, Long subClassId,
1010
List<StudentList> studentList,
1111
String reportName, LocalDate startDate, LocalDate endDate,
12-
List<Long> examIdList, String overallOpinion) {
12+
List<Long> examIdList, String overallOpinion,String reportCreatedBy) {
1313

1414
}

src/main/java/classfit/example/classfit/scoreReport/dto/response/FindAllReportResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.time.LocalDate;
44

55
public record FindAllReportResponse(Long studentReportId, Long studentId, String studentName,
6-
String reportName, String memberName,
6+
String reportName, String ReportCreatedByName,
77
LocalDate createAt) {
88

99
}

src/main/java/classfit/example/classfit/scoreReport/dto/response/FindReportResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.time.LocalDate;
44

55
public record FindReportResponse(Long studentReportId, Long studentId, String studentName,
6-
String reportName, String memberName,
6+
String reportName, String reportCreatedByName,
77
LocalDate createAt) {
88

99
}

src/main/java/classfit/example/classfit/scoreReport/service/ScoreReportService.java

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,7 @@ public CreateReportResponse createReport(@AuthMember Member member,
8383
for (ClassStudent classStudent : studentsInSubClass) {
8484
Student student = classStudent.getStudent();
8585

86-
ScoreReport report = ScoreReport.builder()
87-
.mainClass(mainClass)
88-
.subClass(subClass)
89-
.includeAverage(request.includeAverage())
90-
.student(student)
91-
.reportName(request.reportName())
92-
.overallOpinion(request.overallOpinion())
93-
.startDate(request.startDate())
94-
.endDate(request.endDate())
95-
.build();
86+
ScoreReport report = request.toEntity(subClass, mainClass, student, member);
9687
scoreReportRepository.save(report);
9788

9889
allStudents.add(new StudentList(report.getId(), student.getId(), student.getName()));
@@ -126,7 +117,7 @@ public List<ReportExam> showReportExam(@AuthMember Member member, LocalDate star
126117
Long subClassId) {
127118
validateAcademy(member, member.getAcademy().getId());
128119
List<ReportExam> reports = scoreReportRepository.findExamsByCreatedAtBetween(startDate,
129-
endDate, mainClassId, subClassId);
120+
endDate, mainClassId, subClassId,member.getAcademy().getId());
130121
return reports.stream()
131122
.map(report -> new ReportExam(
132123
report.examId(),
@@ -151,7 +142,7 @@ public List<FindReportResponse> findReport(@AuthMember Member member, Long mainC
151142
() -> new ClassfitException("서브 클래스를 찾을 수 없어요.", HttpStatus.NOT_FOUND));
152143
validateAcademy(member, mainClass.getAcademy().getId());
153144
List<ScoreReport> studentReports = scoreReportRepository.findAllReportsByMainClassAndSubClass(
154-
mainClassId, subClassId);
145+
mainClassId, subClassId,member.getAcademy().getId());
155146

156147
return studentReports.stream()
157148
.map(report -> new FindReportResponse(
@@ -167,27 +158,27 @@ public List<FindReportResponse> findReport(@AuthMember Member member, Long mainC
167158

168159
@Transactional(readOnly = true)
169160
public List<FindAllReportResponse> findAllReport(@AuthMember Member member) {
170-
171161
Long academyId = member.getAcademy().getId();
172162

173163
Academy academy = academyRepository.findById(academyId)
174164
.orElseThrow(() -> new ClassfitException("학원을 찾을 수 없어요.", HttpStatus.NOT_FOUND));
175165

176-
List<ScoreReport> scoreReports = scoreReportRepository.findAllByAcademy(academy);
166+
List<ScoreReport> scoreReports = scoreReportRepository.findAllByAcademy(academyId);
177167

178168
return scoreReports.stream()
179169
.map(report -> new FindAllReportResponse(
180170
report.getId(),
181171
report.getStudent().getId(),
182172
report.getStudent().getName(),
183173
report.getReportName(),
184-
report.getMainClass().getAcademy().getMembers().getFirst().getName(),
174+
report.getReportCreatedBy(),
185175
report.getCreatedAt().toLocalDate()
186176
))
187177
.collect(Collectors.toList());
188178
}
189179

190180

181+
191182
@Transactional
192183
public void deleteReport(@AuthMember Member member, Long studentReportId) {
193184
validateAcademy(member, member.getAcademy().getId());

0 commit comments

Comments
 (0)