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 efe34e6..cd11055 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java @@ -19,6 +19,7 @@ public class CurriculumController { private final CurriculumService curriculumServ; + private final CourseService courseServ; private final AuthenticatorService authServ; private final UserCurriculumService userCurriculumServ; @@ -27,8 +28,9 @@ public class CurriculumController { private final UserService userServ; private final ExternalCurriculumRepository ecr; - public CurriculumController(CurriculumService curriculumServ, AuthenticatorService authServ, UserCurriculumService userCurriculumServ, CurriculumCourseService curriculumCourseServ, InscriptionRepository ir, UserService userServ, ExternalCurriculumRepository ecr){ + public CurriculumController(CurriculumService curriculumServ, CourseService courseServ, AuthenticatorService authServ, UserCurriculumService userCurriculumServ, CurriculumCourseService curriculumCourseServ, InscriptionRepository ir, UserService userServ, ExternalCurriculumRepository ecr){ this.curriculumServ = curriculumServ; + this.courseServ = courseServ; this.authServ = authServ; this.userCurriculumServ = userCurriculumServ; this.curriculumCourseServ = curriculumCourseServ; @@ -60,6 +62,18 @@ public class CurriculumController { return new ResponseEntity<>(curriculumCourseServ.getDepthCurriculum(curriculum),HttpStatus.OK); } + @GetMapping("/course/curriculum/{id}") + public ResponseEntity> getCurriculumsByCourse(@RequestHeader("Authorization") String token, @PathVariable long id){ + if(authServ.isNotIn(new Role[]{Role.Admin, Role.Secretary},token)) + return new UnauthorizedResponse<>(null); + Course course = courseServ.findById(id); + if(course == null) + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + Iterable curriculum = curriculumCourseServ.findCurriculumByCourses(course); + return new ResponseEntity<>(curriculum, HttpStatus.OK); + } + + //Return the list of all curicullums of an user @GetMapping("/onescurriculum/{userId}") @@ -91,17 +105,20 @@ public class CurriculumController { } @PostMapping("/curriculum/{id}") - public ResponseEntity postCoursesToCurriculum(@RequestHeader("Authorization") String token, - @RequestBody Iterable coursesIds, - @PathVariable long id) - { + public ResponseEntity postCourseToCurriculum(@RequestHeader("Authorization") String token, + @RequestBody long coursesId, + @PathVariable long id){ if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token)) return new UnauthorizedResponse<>(null); - if (!curriculumCourseServ.saveAll(coursesIds, curriculumServ.findById(id))) + CurriculumCourse curriculumCourse = new CurriculumCourse(curriculumServ.findById(id), courseServ.findById(coursesId)); + if(curriculumCourse.getCourse() == null || curriculumCourse.getCurriculum() == null) return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + + curriculumCourseServ.save(curriculumCourse); + return new ResponseEntity<>(HttpStatus.OK); } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java index 5d4f7b6..b8dfc14 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java @@ -13,6 +13,8 @@ public interface CurriculumCourseRepository extends CrudRepository findCoursesByCurriculum(Curriculum curriculum); + @Query("select distinct cc.curriculum from CurriculumCourse cc where cc.course = ?1") + Iterable findCurriculumByCourses(Course course); @Query("select distinct cc.curriculum from CurriculumCourse cc") Iterable findDistinctCurriculums(); 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 b522da3..c9b92db 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java @@ -51,6 +51,10 @@ public class CurriculumCourseService { return toReturn; } + public Iterable findCurriculumByCourses(Course course){ + return curriculumCourseRepo.findCurriculumByCourses(course); + } + public Iterable> getAllDepthCurriculum(){ ArrayList> toReturn = new ArrayList<>(); diff --git a/frontend/public/i18n/EN.txt b/frontend/public/i18n/EN.txt index 6598207..af0ff63 100644 --- a/frontend/public/i18n/EN.txt +++ b/frontend/public/i18n/EN.txt @@ -105,6 +105,7 @@ courses.modify=Modify courses.toDelete=Course to Delete courses.confirm=Confirm courses.back=Back +courses.AddToCurriculum=Add to a new Curriculum profile.modify.data=Modify personnal data profile.reRegister=Re-register profile.unRegister=Unregister diff --git a/frontend/public/i18n/FR.txt b/frontend/public/i18n/FR.txt index a09c338..d24c0b4 100644 --- a/frontend/public/i18n/FR.txt +++ b/frontend/public/i18n/FR.txt @@ -105,6 +105,7 @@ courses.modify=Modifier courses.toDelete=Cours à supprimer courses.confirm=Confirmer courses.back=Retour +courses.AddToCurriculum=Ajouter à un cursus profile.modify.data=Modifier données personnelles profile.reRegister=Réinsciption profile.unRegister=Désinscription diff --git a/frontend/src/Apps/ManageCourses.vue b/frontend/src/Apps/ManageCourses.vue index bba81ce..4e60c7b 100644 --- a/frontend/src/Apps/ManageCourses.vue +++ b/frontend/src/Apps/ManageCourses.vue @@ -3,7 +3,7 @@ import {reactive , ref} from 'vue' import { getCourses,deleteCourse,alterCourse,createCourse } from "@/rest/courses.js" import {getUser, getSelf, getTeachers } from "@/rest/Users.js" - import {getAllCurriculums} from "@/rest/curriculum.js"; + import {addCourseToCurriculum, getAllCurriculums, getCurriculumsByCourse} from "@/rest/curriculum.js"; const self = await getSelf(); @@ -11,11 +11,16 @@ const curriculum = ref(await getCourses(self.role)); const profList = await getTeachers(); const allCurriculums = ref(await getAllCurriculums()); + const curriculumToAdd = ref(); const createMod = ref(false) const deleteMod = ref(false) const editElementID = ref("") + const editAddCourse = ref(""); + + + const curriculumToAddId = ref() const pattern = { "id":null, @@ -45,7 +50,32 @@ }} - + async function setAddToCurriculum(item){ + let temp = []; + let courseCurriculum = await getCurriculumsByCourse(item.courseID); + let isIn = false; + for (let element in allCurriculums.value){ + for (let item in courseCurriculum){ + if((courseCurriculum[item].option == allCurriculums.value[element].option) && (courseCurriculum[item].year == allCurriculums.value[element].year) ){ + isIn = true; + break; + } + + } + if(!isIn){ + temp.push(allCurriculums.value[element]) + } + isIn = false; + } + curriculumToAdd.value = temp.slice(); + } + + async function addToCurriculum(item){ + await addCourseToCurriculum(curriculumToAddId.value,item.courseID); + curriculumToAddId.value = null; + curriculumToAdd.value = null; + allCurriculums.value = await getAllCurriculums(); + } function setModify(item){ for(const el in profList){ @@ -93,7 +123,7 @@ - @@ -138,24 +168,39 @@
-
- +
-
+
-
+
+ + +
+
-
+
{{item.title}}
{{item.owner.lastName}}
{{i18n("Credits")}}:{{item.credits}}
-
+ +
+ {{i18n("Curriculum")}}: + +
+
+
{{i18n("Credits")}}:{{item.credits}}
+ +
diff --git a/frontend/src/rest/curriculum.js b/frontend/src/rest/curriculum.js index a34328c..5eb17f9 100644 --- a/frontend/src/rest/curriculum.js +++ b/frontend/src/rest/curriculum.js @@ -23,6 +23,9 @@ export async function getAllCurriculums(){ return restGet("/curriculums"); } +export async function getCurriculumsByCourse(id){ + return restGet("/course/curriculum/"+ id); +} /** * Get informations on a particular curriculum * @@ -53,4 +56,7 @@ export async function getSomeonesCurriculumList(user){ return restGet("/onescurriculum/"+user) } +export async function addCourseToCurriculum(id,courseID){ + return restPost("/curriculum/"+id, courseID); +}