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 @@ -2,6 +2,7 @@

import backend.pirocheck.Assignment.dto.request.AssignmentCreateReq;
import backend.pirocheck.Assignment.dto.request.AssignmentItemCreateReq;
import backend.pirocheck.Assignment.dto.request.AssignmentItemUpdateReq;
import backend.pirocheck.Assignment.dto.request.AssignmentUpdateReq;
import backend.pirocheck.Assignment.dto.response.AssignmentWeekRes;
import backend.pirocheck.Assignment.entity.AssignmentStatus;
Expand Down Expand Up @@ -119,13 +120,14 @@ public AssignmentStatus submissionAssignment(
}
)
@PutMapping("/admin/users/{userId}/assignments/{assignmentId}/submission")
public String updateSubmission(
public AssignmentStatus updateSubmission(
@Parameter(description = "사용자 ID", example = "1")
@PathVariable Long userId,
@Parameter(description = "과제 ID", example = "1")
@PathVariable Long assignmentId
@PathVariable Long assignmentId,
@RequestBody AssignmentItemUpdateReq req
) {
return null;
return assignmentService.updateAssignmentItem(userId, assignmentId, req);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package backend.pirocheck.Assignment.dto.request;

import backend.pirocheck.Assignment.entity.AssignmentStatus;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Pattern;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
public class AssignmentItemUpdateReq {

@Pattern(regexp = "SUCCESS/INSUFFICIENT/FAILURE", message = "status는 SUCCESS, INSUFFICIENT 혹은 FAILURE 여야 합니다.")
@Schema(description = "과제 결과", example = "SUCCESS")
private AssignmentStatus status;
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,10 @@ public static AssignmentItem create(User user, Assignment assignment, Assignment
.submitted(submitted)
.build();
}

public void update(AssignmentStatus submitted) {

this.submitted = submitted;

}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package backend.pirocheck.Assignment.repository;

import backend.pirocheck.Assignment.entity.Assignment;
import backend.pirocheck.Assignment.entity.AssignmentItem;
import backend.pirocheck.Assignment.entity.AssignmentStatus;
import backend.pirocheck.User.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface AssignmentItemRepository extends JpaRepository<AssignmentItem, Long> {
Expand All @@ -17,4 +19,7 @@ public interface AssignmentItemRepository extends JpaRepository<AssignmentItem,
// 보증금
int countByUserAndSubmitted(User user, AssignmentStatus status);

Optional<AssignmentItem> findByUserAndAssignment(User user, Assignment assignment);
// Optional 처리로 오류 발생 check

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import backend.pirocheck.Assignment.dto.request.AssignmentCreateReq;
import backend.pirocheck.Assignment.dto.request.AssignmentItemCreateReq;
import backend.pirocheck.Assignment.dto.request.AssignmentItemUpdateReq;
import backend.pirocheck.Assignment.dto.request.AssignmentUpdateReq;
import backend.pirocheck.Assignment.dto.response.AssignmentDayRes;
import backend.pirocheck.Assignment.dto.response.AssignmentDetailRes;
Expand All @@ -14,6 +15,7 @@
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 @@ -22,6 +24,7 @@
import java.util.Map;
import java.util.stream.Collectors;

@Slf4j // 로그를 찍기위해 사용
@Service
@Transactional
@RequiredArgsConstructor
Expand Down Expand Up @@ -118,7 +121,9 @@ public String updateAssignment(Long assignmentId, AssignmentUpdateReq req) {
}

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

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

Expand All @@ -135,4 +140,22 @@ public AssignmentStatus createAssignmentItem(Long assignmentId, Long userId, Ass

return assignmentItem.getSubmitted();
}

// 과제 채점 결과 수정
public AssignmentStatus updateAssignmentItem(Long userId, Long assignmentId, AssignmentItemUpdateReq req) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new IllegalArgumentException("조회된 사용자가 없습니다."));

Assignment assignment = assignmentRepository.findById(assignmentId)
.orElseThrow(() -> new IllegalArgumentException("조회된 과제가 없습니다."));

AssignmentItem assignmentItem = assignmentItemRepository.findByUserAndAssignment(user, assignment)
.orElseThrow(() -> new IllegalArgumentException("해당 유저의 과제 채점 결과가 없습니다."));

assignmentItem.update(req.getStatus()); // 상태 업데이트

assignmentItemRepository.save(assignmentItem); // 상태 저장

return assignmentItem.getSubmitted();
}
}