Skip to content
This repository has been archived by the owner on Apr 27, 2024. It is now read-only.

feat: add grade code submission #203

Merged
merged 1 commit into from
Apr 8, 2024
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
13 changes: 10 additions & 3 deletions src/main/java/com/example/codeE/controller/ExerciseController.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.example.codeE.request.exercise.CreatePermissionExerciseRequest;
import com.example.codeE.request.exercise.ExerciseResponse;
import com.example.codeE.request.exercise.GetDetailExerciseRequest;
import com.example.codeE.request.exercise.GradeSubmission;
import com.example.codeE.request.exercise.code.*;
import com.example.codeE.request.exercise.essay.CreateEssayExerciseRequest;
import com.example.codeE.request.exercise.essay.CreateEssaySubmissionRequest;
Expand Down Expand Up @@ -287,10 +288,14 @@ public ResponseEntity<?> getPreviewExercise(@PathVariable String exerciseId, @Re

@PutMapping
@RequestMapping(value = "essay/grade", method = RequestMethod.PUT)
public ResponseEntity<?> gradeEssaySubmission(@RequestParam String essaySubmissionId, @RequestParam float score){
return ResponseEntity.status(HttpStatus.OK).body(this.essaySubmissionService.gradeSubmission(essaySubmissionId, score));
public ResponseEntity<?> gradeEssaySubmission(@RequestBody GradeSubmission request){
return ResponseEntity.status(HttpStatus.OK).body(this.essaySubmissionService.gradeSubmission(request.getSubmissionId(), request.getScore(), request.getComment()));
}
@PutMapping
@RequestMapping(value = "code/grade", method = RequestMethod.PUT)
public ResponseEntity<?> gradeCodeSubmission(@RequestBody GradeSubmission request){
return ResponseEntity.status(HttpStatus.OK).body(this.codeSubmissionService.GradeCodeSubmission(request.getSubmissionId(), request.getScore(), request.getComment()));
}

@DeleteMapping
@RequestMapping(value = "{exerciseId}", method = RequestMethod.DELETE)
public ResponseEntity<?> deleteExerciseById(@Valid @PathVariable String exerciseId, @Valid @RequestParam String type) {
Expand Down Expand Up @@ -415,4 +420,6 @@ public ResponseEntity<?> getExerciseByUserId(@RequestParam String exerciseId, @P
ResponseEntity.status(HttpStatus.BAD_REQUEST).body(Map.of("message", "Something went wrong, type must be quiz/essay/code"));
};
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.example.codeE.request.exercise;

import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class GradeSubmission {
@NotNull(message = "Submission ID is required")
private String submissionId;
@NotNull(message = "Score is required")
private float score;
private String comment = "";
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ public CodeSubmission saveCodeSubmission(CodeSubmission codeSubmission) {
@Override
public AllSubmissionResponse<CodeSubmissionDetail> getCodeSubmissionsByExerciseId(String exerciseId, List<String> groupFilter) {
var exercise = this.exerciseRepository.findById(exerciseId).orElseThrow(() -> new NoSuchElementException("No exercise found"));
// List<CodeSubmission> submissions = codeSubmissionRepository.findAll();
List<CodeSubmission> submissions = codeSubmissionRepository.getCodeSubmissionByExerciseId(exerciseId);
var listSubmissions = new ArrayList<CodeSubmissionDetail>();
for (var item : submissions) {
Expand Down Expand Up @@ -153,6 +152,18 @@ public int compare(CodeSubmission o1, CodeSubmission o2) {
else
return null;
}

@Override
public CodeSubmission GradeCodeSubmission(String submissionId, float score, String comment) {
if (score < 0 || score > 10) {
throw new IllegalArgumentException("Score must be between 0 and 10");
}
var submission = this.getCodeSubmissionById(submissionId);
submission.setCasePoints(score * 1.0);
submission.setTeacherComment(comment);
return this.codeSubmissionRepository.save(submission);
}

public OverviewScoreReport getOverviewScoreReportByExerciseId(String exerciseId, List<String> groupId) {
OverviewScoreReport result = new OverviewScoreReport();
var exercise = exerciseRepository.findById(exerciseId).orElseThrow(() -> new NoSuchElementException("No exercise found"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ public interface CodeSubmissionService {
public AllSubmissionResponse<CodeSubmissionDetail> getCodeSubmissionsByExerciseId(String exerciseId, List<String> groupFilter);
public List<CodeSubmission> getCodeSubmissionByUserId(String exerciseId, String userId);
public CodeSubmission getLastCodeSubmissionByUserId(String exerciseId, String userId);
public CodeSubmission GradeCodeSubmission (String submissionId, float score, String comment);
}
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,13 @@ public int compare(EssaySubmission o1, EssaySubmission o2) {
}

@Override
public EssaySubmission gradeSubmission(String essaySubmissionId, float score) {
public EssaySubmission gradeSubmission(String essaySubmissionId, float score, String comment) {
if (score < 0 || score > 10) {
throw new IllegalArgumentException("Score must be between 0 and 10");
}
EssaySubmission essaySubmission = this.essaySubmissionRepository.findById(essaySubmissionId).orElseThrow(() -> new NoSuchElementException("No Exercise found by Id: " + essaySubmissionId));
essaySubmission.setScore(score);
essaySubmission.setTeacherComment(comment);
this.essaySubmissionRepository.save(essaySubmission);
return essaySubmission;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ public interface EssaySubmissionService {
AllSubmissionResponse<SubmissionDetail> getEssaySubmissionsByExerciseId(String exerciseId, List<String> groupFilter);
EssaySubmissionsResponse getEssaySubmission(String submissionId);
List<EssaySubmission> getEssaySubmissionByUserId(String exerciseId, String userId);
EssaySubmission gradeSubmission(String essaySubmissionId, float score);
EssaySubmission gradeSubmission(String essaySubmissionId, float score, String comment);
EssaySubmission getLastEssaySubmissionByUserId(String exerciseId, String userId);
}
Loading