Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,13 @@
@AllArgsConstructor
public class AssignmentCreateReq {

@Schema(description = "과제 주제", example = "Git/HTML/CSS")
@NotNull(message = "과제 주제는 필수입니다.")
private String subject;
@Schema(description = "전체 주제", example = "Git/HTML/CSS")
@NotNull(message = "전체 주제는 필수입니다.")
private String title;

@Schema(description = "소주제", example = "CSS 반응형, CSS 심화")
@NotNull(message = "소주제는 필수입니다.")
private String subtitle;

@Schema(description = "과제명", example = "제로초 인강")
@NotNull(message = "과제명은 필수입니다.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,13 @@
@AllArgsConstructor
public class AssignmentUpdateReq {

@Schema(description = "과제 주제", example = "Git/HTML/CSS")
@NotNull(message = "과제 주제는 필수입니다.")
private String subject;
@Schema(description = "전체 주제", example = "Git/HTML/CSS")
@NotNull(message = "전체 주제는 필수입니다.")
private String title;

@Schema(description = "소주제", example = "Git/HTML/CSS")
@NotNull(message = "소주제는 필수입니다.")
private String subtitle;

@Schema(description = "과제명", example = "제로초 인강")
@NotNull(message = "과제명은 필수입니다.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@
@AllArgsConstructor
public class AssignmentDayRes {
private String day; // 화, 목, 토
private String subtitle;
private List<AssignmentDetailRes> details;
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
@AllArgsConstructor
public class AssignmentWeekRes {
private Long week;
private String subject; // 각 주차 주제 (e.g, Git / HTML / CSS)
private String title; // 각 주차 주제 (e.g, Git / HTML / CSS)
private List<AssignmentDayRes> days;
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ public class Assignment {
private Long id;

// 전체 주제
private String subject;
private String title;

// 소주제
private String subtitle;

// 과제명
private String assignmentName;
Expand All @@ -47,9 +50,10 @@ public void addAssignmentItem(AssignmentItem assignmentItem) {
}

// 관리자가 생성
public static Assignment create(String subject, String assignmentName, Long week, String day, Long orderNumber) {
public static Assignment create(String title, String subtitle, String assignmentName, Long week, String day, Long orderNumber) {
return Assignment.builder()
.subject(subject)
.title(title)
.subtitle(subtitle)
.assignmentName(assignmentName)
.week(week)
.day(day)
Expand All @@ -58,8 +62,9 @@ public static Assignment create(String subject, String assignmentName, Long week
}

// 과제 내용 업데이트
public void update(String subject, String assignmentName, Long week, String day, Long orderNumber) {
this.subject = subject;
public void update(String title, String subtitle, String assignmentName, Long week, String day, Long orderNumber) {
this.title = title;
this.subtitle = subtitle;
this.assignmentName = assignmentName;
this.week = week;
this.day = day;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
import backend.pirocheck.Assignment.entity.AssignmentStatus;
import backend.pirocheck.Assignment.repository.AssignmentItemRepository;
import backend.pirocheck.Assignment.repository.AssignmentRepository;
import backend.pirocheck.User.entity.Role;
import backend.pirocheck.User.entity.User;
import backend.pirocheck.User.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -24,7 +24,6 @@
import java.util.Map;
import java.util.stream.Collectors;

@Slf4j // 로그를 찍기위해 사용
@Service
@Transactional
@RequiredArgsConstructor
Expand All @@ -47,7 +46,7 @@ public List<AssignmentWeekRes> search(Long userId) {
Long week = entry.getKey(); // 주차 정보
List<AssignmentItem> assignmentList = entry.getValue(); // 주차에 해당하는 days의 list

String subject = assignmentList.get(0).getAssignment().getSubject();
String title = assignmentList.get(0).getAssignment().getTitle();

// day를 기준으로 그룹핑
Map<String, List<AssignmentItem>> dayGroup = assignmentList.stream()
Expand All @@ -58,6 +57,7 @@ public List<AssignmentWeekRes> search(Long userId) {
for (Map.Entry<String, List<AssignmentItem>> dayEntry : dayGroup.entrySet()) {
String day = dayEntry.getKey();
List<AssignmentItem> dayAssignmentList = dayEntry.getValue();
String subtitle = dayAssignmentList.get(0).getAssignment().getSubtitle();

// 세부 과제명과 과제 결과를 리스트 형태로
List<AssignmentDetailRes> assignmentDetailResList = dayAssignmentList.stream()
Expand All @@ -66,10 +66,10 @@ public List<AssignmentWeekRes> search(Long userId) {
assignmentItem.getSubmitted()
))
.toList();
assignmentDayResList.add(new AssignmentDayRes(day, assignmentDetailResList));
assignmentDayResList.add(new AssignmentDayRes(day, subtitle, assignmentDetailResList));
}

assignmentResponses.add(new AssignmentWeekRes(week, subject, assignmentDayResList));
assignmentResponses.add(new AssignmentWeekRes(week, title, assignmentDayResList));
}

return assignmentResponses;
Expand All @@ -78,7 +78,8 @@ public List<AssignmentWeekRes> search(Long userId) {
public String createAssignment(AssignmentCreateReq assignmentCreateReq) {

Assignment assignment = Assignment.create(
assignmentCreateReq.getSubject(),
assignmentCreateReq.getTitle(),
assignmentCreateReq.getSubtitle(),
assignmentCreateReq.getAssignmentName(),
assignmentCreateReq.getWeek(),
assignmentCreateReq.getDay(),
Expand All @@ -87,7 +88,7 @@ public String createAssignment(AssignmentCreateReq assignmentCreateReq) {
assignment = assignmentRepository.save(assignment);

// 전체 유저에게 과제 자동 할당
List<User> users = userRepository.findAll();
List<User> users = userRepository.findByRole(Role.MEMBER);

for (User user : users) {

Expand All @@ -114,15 +115,14 @@ public String updateAssignment(Long assignmentId, AssignmentUpdateReq req) {
Assignment assignment = assignmentRepository.findById(assignmentId)
.orElseThrow(() -> new IllegalArgumentException("조회된 과제가 없습니다."));

assignment.update(req.getSubject(), req.getAssignmentName(), req.getWeek(), req.getDay(), req.getOrderNumber());
assignment.update(req.getTitle(), req.getSubtitle(), req.getAssignmentName(), req.getWeek(), req.getDay(), req.getOrderNumber());
assignmentRepository.save(assignment);

return assignment.getAssignmentName();
}

// 과제 채점 결과 저장
public AssignmentStatus createAssignmentItem(Long userId, Long assignmentId, AssignmentItemCreateReq req) {
log.info("userId 요청 값: {}", userId);

User user = userRepository.findById(userId)
.orElseThrow(() -> new IllegalArgumentException("조회된 사용자가 없습니다."));
Expand Down