diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java index 4cb9504..7a1bfe4 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java @@ -30,13 +30,13 @@ public class CurriculumController { } @GetMapping("/curriculum/{id}") - public ResponseEntity findById(@PathVariable long id){ + public ResponseEntity> findById(@PathVariable long id){ Curriculum foundCurriculum = curriculumServ.findById(id); if (foundCurriculum == null) return new ResponseEntity<>(HttpStatus.BAD_REQUEST); - return new ResponseEntity<>(foundCurriculum, HttpStatus.OK); + return new ResponseEntity<>(curriculumCourseServ.getDepthCurriculum(foundCurriculum), HttpStatus.OK); } @GetMapping("/curriculums") @@ -52,4 +52,19 @@ public class CurriculumController { return new ResponseEntity<>(curriculumServ.save(curriculum),HttpStatus.CREATED); } + + @PostMapping("/curriculum/{id}") + public ResponseEntity postCoursesToCurriculum(@RequestHeader("Authorization") String token, + @RequestBody Iterable coursesIds, + @PathVariable long id) + { + + if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token)) + return new UnauthorizedResponse<>(null); + + if (!curriculumCourseServ.saveAll(coursesIds, curriculumServ.findById(id))) + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java index 5e1992d..0173a05 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java @@ -1,10 +1,10 @@ package ovh.herisson.Clyde.Services; import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.Repositories.CourseRepository; import ovh.herisson.Clyde.Repositories.CurriculumCourseRepository; -import ovh.herisson.Clyde.Tables.Course; -import ovh.herisson.Clyde.Tables.Curriculum; -import ovh.herisson.Clyde.Tables.CurriculumCourse; +import ovh.herisson.Clyde.Tables.*; + import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -14,9 +14,11 @@ public class CurriculumCourseService { private final CurriculumCourseRepository curriculumCourseRepo; + private final CourseRepository courseRepo; - public CurriculumCourseService(CurriculumCourseRepository curriculumCourseRepository) { + public CurriculumCourseService(CurriculumCourseRepository curriculumCourseRepository, CourseRepository courseRepo) { this.curriculumCourseRepo = curriculumCourseRepository; + this.courseRepo = courseRepo; } public void save(CurriculumCourse curriculumCourse){ @@ -31,7 +33,9 @@ public class CurriculumCourseService { HashMap toReturn = new HashMap<>(); ArrayList courses = new ArrayList<>(); - for (Course c: curriculumCourseRepo.findCoursesByCurriculum(curriculum)){ + Iterable foundCourses = curriculumCourseRepo.findCoursesByCurriculum(curriculum); + + for (Course c: foundCourses){ courses.add(c); } toReturn.put("courses",courses); @@ -52,4 +56,32 @@ public class CurriculumCourseService { } return toReturn; } + + /** tries to add all courses to the curriculum + * + * @param coursesIds the ids of the courses to be added + * @param curriculum the curriculum to add the courses to + * @return if the changes were made + */ + public boolean saveAll(Iterable coursesIds, Curriculum curriculum) { + + if (curriculum == null || coursesIds == null) + return false; + + ArrayList toAdd = new ArrayList<>(); + for (Long courseId : coursesIds){ + Course course = courseRepo.findById((long) courseId); + if (course == null) + return false; + + if (!toAdd.contains(course)) + toAdd.add(course); + } + + for (Course course : toAdd){ + curriculumCourseRepo.save(new CurriculumCourse(curriculum,course)); + } + return true; + + } }