diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java new file mode 100644 index 0000000..bc83924 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java @@ -0,0 +1,70 @@ +package ovh.herisson.Clyde.EndPoints; + + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import ovh.herisson.Clyde.Services.AuthenticatorService; +import ovh.herisson.Clyde.Services.CurriculumCourseService; +import ovh.herisson.Clyde.Services.CurriculumService; +import ovh.herisson.Clyde.Tables.Curriculum; +import ovh.herisson.Clyde.Tables.CurriculumCourse; +import ovh.herisson.Clyde.Tables.Role; +import ovh.herisson.Clyde.Tables.User; + +import java.util.Map; + +@RestController +public class CurriculumController { + + + private final CurriculumService curriculumServ; + private final AuthenticatorService authServ; + + private final CurriculumCourseService curriculumCourseServ; + + public CurriculumController(CurriculumService curriculumServ, AuthenticatorService authServ, CurriculumCourseService curriculumCourseServ){ + this.curriculumServ = curriculumServ; + this.authServ = authServ; + this.curriculumCourseServ = curriculumCourseServ; + } + + @GetMapping("/curriculum/{id}") + public ResponseEntity findById(@PathVariable long id){ + return new ResponseEntity<>(curriculumServ.findById(id), HttpStatus.OK); + } + + @GetMapping("/curriculums") + public ResponseEntity>> findAllindDepth(){ + return new ResponseEntity<>(curriculumCourseServ.getAllDepthCurriculum(),HttpStatus.OK); + } + + @GetMapping("/curriculum") + public ResponseEntity> findAll(){ + return new ResponseEntity<>(curriculumCourseServ.findAll(),HttpStatus.OK); + } + + /**@PostMapping("/curriculum") + public ResponseEntity postCurriculum(@RequestHeader("Authorization") String token,@RequestBody Curriculum curriculum){ + + if (!isSecretaryOrAdmin(token)){ + return new UnauthorizedResponse<>("you're not allowed to post a Curriculum"); + } + + CurriculumServ.save(Curriculum); + + return new ResponseEntity<>("created !",HttpStatus.CREATED); + }**/ + + + + private boolean isSecretaryOrAdmin(String authorization){ + if (authorization ==null) + return false; + + User poster = authServ.getUserFromToken(authorization); + if (poster == null) return false; + + return poster.getRole() == Role.Secretary && poster.getRole() == Role.Admin; + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/InscriptionController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/InscriptionController.java index 67ca1ee..addd01b 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/InscriptionController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/InscriptionController.java @@ -7,6 +7,7 @@ import ovh.herisson.Clyde.Responses.UnauthorizedResponse; import ovh.herisson.Clyde.Services.AuthenticatorService; import ovh.herisson.Clyde.Services.InscriptionService; import ovh.herisson.Clyde.Tables.InscriptionRequest; +import ovh.herisson.Clyde.Tables.RequestState; import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.User; import java.util.ArrayList; @@ -28,10 +29,10 @@ public class InscriptionController { } - @GetMapping("/inscriptionRequests") + @GetMapping("/requests/register") public ResponseEntity>> getAllRequests(@RequestHeader("Authorization") String token){ - if (authServ.isNotSecretaryOrAdmin(token)){return new UnauthorizedResponse<>(null);} + if (!isSecretaryOrAdmin(token)){return new UnauthorizedResponse<>(null);} Iterable inscriptionRequests = inscriptionServ.getAll(); ArrayList> toReturn = new ArrayList<>(); @@ -44,19 +45,31 @@ public class InscriptionController { } - @GetMapping("/inscriptionRequest/{id}") + @GetMapping("/request/register/{id}") public ResponseEntity> getById(@PathVariable long id){ - - - InscriptionRequest inscriptionRequest = inscriptionServ.getById(id); if (inscriptionRequest == null) {return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST);} return new ResponseEntity<>(requestWithoutPassword(inscriptionRequest), HttpStatus.OK); } + @GetMapping("request/user/{id}") + public ResponseEntity getUserInscriptionRequest(@PathVariable long id, @RequestHeader("Authorize") String token){ + //todo return l'inscriptionRequest ACTUELLE du user (check si le poster est bien le même que id target ou secretariat) + return null; + } - private Map requestWithoutPassword(InscriptionRequest inscriptionRequest) { + @PatchMapping("/request/register/{id}") + public ResponseEntity changeRequestState(@PathVariable long id, + @RequestHeader("Authorize") String token, + @RequestBody RequestState requestState) + { + if (!isSecretaryOrAdmin(token)) return new UnauthorizedResponse<>(null); + inscriptionServ.modifyState(id, requestState); + return null; + } + + private Map requestWithoutPassword(InscriptionRequest inscriptionRequest) { Map toReturn = new HashMap<>(); toReturn.put("id", inscriptionRequest.getId()); @@ -65,9 +78,9 @@ public class InscriptionController { toReturn.put("address", inscriptionRequest.getAddress()); toReturn.put("birthDate", inscriptionRequest.getBirthDate()); toReturn.put("country", inscriptionRequest.getCountry()); - toReturn.put("cursus", inscriptionRequest.getCursus()); + toReturn.put("curriculum", inscriptionRequest.getCurriculum()); toReturn.put("profilePictureUrl", inscriptionRequest.getProfilePicture()); toReturn.put("state", inscriptionRequest.getState()); return toReturn; } -} \ No newline at end of file +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java index 20542b5..a47603b 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java @@ -1,19 +1,14 @@ package ovh.herisson.Clyde.EndPoints; import com.fasterxml.jackson.annotation.JsonFormat; -import jakarta.persistence.Column; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import ovh.herisson.Clyde.Responses.UnauthorizedResponse; import ovh.herisson.Clyde.Services.AuthenticatorService; -import ovh.herisson.Clyde.Tables.Cursus; -import ovh.herisson.Clyde.Tables.CursusType; import ovh.herisson.Clyde.Tables.InscriptionRequest; -import ovh.herisson.Clyde.Tables.User; import java.util.Date; -import java.util.HashMap; @RestController @CrossOrigin(originPatterns = "*", allowCredentials = "true") @@ -35,6 +30,7 @@ public class LoginController { public LoginController(AuthenticatorService authServ){ this.authServ = authServ; } + @PostMapping(value = "/login") public ResponseEntity login(@RequestBody RequestLogin requestLogin){ @@ -48,12 +44,9 @@ public class LoginController { return ResponseEntity.ok().headers(responseHeaders).build(); } - @PostMapping("/register") + @PostMapping("/request/register") public ResponseEntity register(@RequestBody InscriptionRequest inscriptionRequest){ - authServ.register(inscriptionRequest); return new ResponseEntity<>("Is OK", HttpStatus.OK); } -} - - +} \ No newline at end of file diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index f3ea51d..608a450 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -4,7 +4,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.web.bind.annotation.*; import ovh.herisson.Clyde.Repositories.TokenRepository; import ovh.herisson.Clyde.Repositories.UserRepository; -import ovh.herisson.Clyde.Services.TokenService; +import ovh.herisson.Clyde.Services.*; import ovh.herisson.Clyde.Tables.*; import java.util.ArrayList; @@ -20,14 +20,19 @@ public class MockController { public final UserRepository userRepo; public final TokenRepository tokenRepo; public final TokenService tokenService; - + public final CurriculumCourseService CurriculumCourseService; + public final CurriculumService curriculumService; + public final CourseService courseService; ArrayList mockUsers; - public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService){ + public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService){ this.tokenRepo = tokenRepo; this.userRepo = userRepo; this.tokenService = tokenService; + this.CurriculumCourseService = CurriculumCourseService; + this.curriculumService = curriculumService; + this.courseService = courseService; } /** Saves an example of each user type by : @@ -39,6 +44,9 @@ public class MockController { @PostMapping("/mock") public void postMock(){ + // user part + + User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin")); User joe = new User("Mama","Joe","student@student.com","roundabout","DaWarudo",new Date(0), null,Role.Student,passwordEncoder.encode("student")); User meh = new User("Inspiration","lackOf","secretary@secretary.com","a Box","the street",new Date(0), null,Role.Teacher,passwordEncoder.encode("secretary")); @@ -47,6 +55,42 @@ public class MockController { mockUsers = new ArrayList<>(Arrays.asList(herobrine,joe,meh,joke)); userRepo.saveAll(mockUsers); + + + // Course / Curriculum part + + Curriculum infoBab1 = new Curriculum(1,"info"); + Curriculum chemistryBab1 = new Curriculum(1,"chemistry"); + Curriculum psychologyBab1 = new Curriculum(1,"psychology"); + + curriculumService.save(infoBab1); + curriculumService.save(chemistryBab1); + curriculumService.save(psychologyBab1); + + + Course progra1 = new Course(5,"Programmation et algorithimque 1","TODO DELETE"); + Course chemistry1 = new Course(12, "Thermochimie","TODO DELETE"); + Course psycho1 = new Course(21, "rien faire t'as cru c'est psycho", "TODO DELETE"); + Course commun = new Course(2, "cours commun","TODO DELETE"); + + courseService.save(progra1); + courseService.save(chemistry1); + courseService.save(psycho1); + courseService.save(commun); + + + CurriculumCourseService.save(new CurriculumCourse(infoBab1,progra1)); + CurriculumCourseService.save(new CurriculumCourse(infoBab1,commun)); + + CurriculumCourseService.save(new CurriculumCourse(psychologyBab1,psycho1)); + CurriculumCourseService.save(new CurriculumCourse(psychologyBab1,commun)); + + + CurriculumCourseService.save(new CurriculumCourse(chemistryBab1,commun)); + CurriculumCourseService.save(new CurriculumCourse(chemistryBab1,chemistry1)); + + + } @DeleteMapping("/mock") diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/UserController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/UserController.java index d797284..412ba80 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/UserController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/UserController.java @@ -1,10 +1,7 @@ package ovh.herisson.Clyde.EndPoints; -import jakarta.servlet.http.HttpServletRequest; import org.springframework.http.HttpStatus; - -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import ovh.herisson.Clyde.Responses.UnauthorizedResponse; @@ -12,8 +9,6 @@ import ovh.herisson.Clyde.Services.AuthenticatorService; import ovh.herisson.Clyde.Services.UserService; import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.User; - -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -77,8 +72,6 @@ public class UserController { return new ResponseEntity<>("data modified", HttpStatus.OK); } - - /** return user's data except password * @param user the user to return * @return all the user data without the password diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CourseRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CourseRepository.java new file mode 100644 index 0000000..671a995 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CourseRepository.java @@ -0,0 +1,8 @@ +package ovh.herisson.Clyde.Repositories; + +import org.springframework.data.repository.CrudRepository; +import ovh.herisson.Clyde.Tables.Course; + +public interface CourseRepository extends CrudRepository { + Course findById(long id); +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java new file mode 100644 index 0000000..c99f50b --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java @@ -0,0 +1,17 @@ +package ovh.herisson.Clyde.Repositories; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import ovh.herisson.Clyde.Tables.Course; +import ovh.herisson.Clyde.Tables.Curriculum; +import ovh.herisson.Clyde.Tables.CurriculumCourse; + +public interface CurriculumCourseRepository extends CrudRepository { + + @Query("select distinct cc.course from CurriculumCourse cc where cc.curriculum = ?1") + Iterable findCoursesByCurriculum(Curriculum curriculum); + + + @Query("select distinct cc.curriculum from CurriculumCourse cc") + Iterable findDistinctCurriculums(); +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumRepository.java new file mode 100644 index 0000000..441422f --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumRepository.java @@ -0,0 +1,8 @@ +package ovh.herisson.Clyde.Repositories; + +import org.springframework.data.repository.CrudRepository; +import ovh.herisson.Clyde.Tables.Curriculum; + +public interface CurriculumRepository extends CrudRepository { + Curriculum findById(long id); +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/CourseService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/CourseService.java new file mode 100644 index 0000000..368dbb2 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/CourseService.java @@ -0,0 +1,23 @@ +package ovh.herisson.Clyde.Services; + +import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.Repositories.CourseRepository; +import ovh.herisson.Clyde.Tables.Course; + +@Service +public class CourseService { + + private final CourseRepository courseRepo; + + public CourseService(CourseRepository courseRepo) { + this.courseRepo = courseRepo; + } + + public void save(Course course){ + courseRepo.save(course); + } + + public Course findById(long id){ + return courseRepo.findById(id); + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java new file mode 100644 index 0000000..ccf1226 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java @@ -0,0 +1,68 @@ +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.Repositories.CurriculumRepository; +import ovh.herisson.Clyde.Tables.Course; +import ovh.herisson.Clyde.Tables.Curriculum; +import ovh.herisson.Clyde.Tables.CurriculumCourse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +@Service +public class CurriculumCourseService { + + private final CurriculumCourseRepository curriculumCourseRepo; + + private final CourseRepository courseRepo; + + private final CurriculumRepository curriculumRepo; + + public CurriculumCourseService(CurriculumCourseRepository curriculumCourseRepository, CourseRepository courseRepo, CurriculumRepository curriculumRepo) { + this.curriculumCourseRepo = curriculumCourseRepository; + this.courseRepo = courseRepo; + this.curriculumRepo = curriculumRepo; + } + + public void save(CurriculumCourse curriculumCourse){ + curriculumCourseRepo.save(curriculumCourse); + } + + public Iterable findAll(){ + return curriculumCourseRepo.findAll(); + } + + + public Map getDepthCurriculum(Curriculum curriculum){ + + HashMap toReturn = new HashMap<>(); + ArrayList courses = new ArrayList<>(); + for (Course c: curriculumCourseRepo.findCoursesByCurriculum(curriculum)){ + courses.add(c); + } + toReturn.put("courses",courses); + toReturn.put("curriculumId", curriculum.getCurriculumId()); + toReturn.put("year", curriculum.getYear()); + toReturn.put("option", curriculum.getOption()); + + + return toReturn; + } + + public Iterable> getAllDepthCurriculum(){ + + ArrayList> toReturn = new ArrayList<>(); + + for (Curriculum curriculum : curriculumCourseRepo.findDistinctCurriculums()){ + toReturn.add(getDepthCurriculum(curriculum)); + } + return toReturn; + } + + + + +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumService.java new file mode 100644 index 0000000..6f6d89b --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumService.java @@ -0,0 +1,32 @@ +package ovh.herisson.Clyde.Services; + +import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.Repositories.CourseRepository; +import ovh.herisson.Clyde.Repositories.CurriculumRepository; +import ovh.herisson.Clyde.Tables.Curriculum; + +@Service +public class CurriculumService { + + private final CurriculumRepository curriculumRepo; + + private final CourseRepository courseRepo; + + public CurriculumService(CurriculumRepository curriculumRepo, CourseRepository courseRepo){ + this.curriculumRepo = curriculumRepo; + this.courseRepo = courseRepo; + } + + + public void save(Curriculum curriculum){ + curriculumRepo.save(curriculum); + } + + public Curriculum findById(long id){ + return curriculumRepo.findById(id); + } + + public Iterable findAll(){ + return curriculumRepo.findAll(); + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/InscriptionService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/InscriptionService.java index 318dfc1..6130fe8 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/InscriptionService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/InscriptionService.java @@ -3,29 +3,32 @@ package ovh.herisson.Clyde.Services; import org.springframework.stereotype.Service; import ovh.herisson.Clyde.Repositories.InscriptionRepository; import ovh.herisson.Clyde.Tables.InscriptionRequest; +import ovh.herisson.Clyde.Tables.RequestState; @Service public class InscriptionService { - private final InscriptionRepository inscriptionRepo; - public void save(InscriptionRequest inscriptionRequest){ - inscriptionRepo.save(inscriptionRequest); - } + InscriptionRepository inscriptionRepo; public InscriptionService(InscriptionRepository inscriptionRepo){ this.inscriptionRepo = inscriptionRepo; } - public InscriptionRequest getById(long id){ - InscriptionRequest inscriptionRequest = inscriptionRepo.findById(id); + public void save(InscriptionRequest inscriptionRequest){ + inscriptionRepo.save(inscriptionRequest); + } - if (inscriptionRequest == null){ - return null; - } - return inscriptionRequest; + public InscriptionRequest getById(long id){ + return inscriptionRepo.findById(id); } public Iterable getAll(){ return inscriptionRepo.findAll(); } -} \ No newline at end of file + + public void modifyState(long id, RequestState requestState) { + InscriptionRequest inscriptionRequest = getById(id); + inscriptionRequest.setState(requestState); + save(inscriptionRequest); + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index ce0d109..2f746ce 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -8,6 +8,7 @@ import ovh.herisson.Clyde.Tables.User; import java.io.UnsupportedEncodingException; import java.security.SecureRandom; import java.util.ArrayList; +import java.util.Base64; import java.util.Calendar; @Service @@ -28,13 +29,10 @@ public class TokenService { new SecureRandom().nextBytes(bytes); for (int i = 0; i < bytes.length; i++) { bytes[i] = (byte) (((bytes[i]+256)%256 %95+ 32)); - while ((char)bytes[i] == ';'){ - bytes[i] = new SecureRandom().generateSeed(1)[0]; - } } // will never end up in the catch because of the way that SecureRandom.nextBytes is implemented try { - return new String(bytes,"ISO_8859_1"); + return new String(Base64.getEncoder().encode(bytes),"ISO_8859_1"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Cursus.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Curriculum.java similarity index 63% rename from backend/src/main/java/ovh/herisson/Clyde/Tables/Cursus.java rename to backend/src/main/java/ovh/herisson/Clyde/Tables/Curriculum.java index 172ec7d..67075d1 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Cursus.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Curriculum.java @@ -6,28 +6,21 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @Entity -public class Cursus { +public class Curriculum { @Id @GeneratedValue(strategy = GenerationType.AUTO) - private int cursusId; + private int curriculumId; private int year; private String option; - - public static Cursus infoBab1 = new Cursus(1,"info"); - - public static Cursus chemistryBab1 = new Cursus(1,"chemistry"); - - public static Cursus psychologyBab1 = new Cursus(1,"psychology"); - - public Cursus(int year, String option){ + public Curriculum(int year, String option){ this.year = year; this.option = option; } - public Cursus() {} + public Curriculum() {} - public int getCursusId(){ - return this.cursusId; + public int getCurriculumId(){ + return this.curriculumId; } public int getYear(){ diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/CurriculumCourse.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/CurriculumCourse.java new file mode 100644 index 0000000..8202e8d --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/CurriculumCourse.java @@ -0,0 +1,45 @@ +package ovh.herisson.Clyde.Tables; + +import jakarta.persistence.*; + +@Entity +public class CurriculumCourse { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "Curriculum") + private Curriculum curriculum; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "Course") + private Course course; + + public CurriculumCourse(Curriculum curriculum, Course course){ + this.curriculum = curriculum; + this.course = course; + } + + public CurriculumCourse() {} + + public int getId() { + return id; + } + + public Course getCourse() { + return course; + } + + public void setCourse(Course course){ + this.course = course; + } + + public Curriculum getCurriculum() { + return curriculum; + } + + public void setCurriculum(Curriculum curriculum) { + this.curriculum = curriculum; + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/CursusCourse.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/CursusCourse.java deleted file mode 100644 index ecdd857..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/CursusCourse.java +++ /dev/null @@ -1,45 +0,0 @@ -package ovh.herisson.Clyde.Tables; - -import jakarta.persistence.*; - -@Entity -public class CursusCourse { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private int id; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "Cursus") - private Cursus cursus; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "Course") - private Course course; - - public CursusCourse(Cursus cursus, Course course){ - this.cursus = cursus; - this.course = course; - } - - public CursusCourse() {} - - public int getId() { - return id; - } - - public Course getCourse() { - return course; - } - - public void setCourse(Course course){ - this.course = course; - } - - public Cursus getCursus() { - return cursus; - } - - public void setCursus(Cursus cursus) { - this.cursus = cursus; - } -} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/CursusType.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/CursusType.java deleted file mode 100644 index d99d47e..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/CursusType.java +++ /dev/null @@ -1,8 +0,0 @@ -package ovh.herisson.Clyde.Tables; - -public enum CursusType { - - InfoBab1, - ChemistryBab1, - PsychologyBab1 -} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java index aecebe2..dfbf7ed 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java @@ -18,8 +18,8 @@ public class InscriptionRequest { private Date birthDate; @ManyToOne - @JoinColumn(name="Cursus") - private Cursus cursus; + @JoinColumn(name="Curriculum") + private Curriculum curriculum; private RequestState state; private String profilePicture; @@ -89,12 +89,12 @@ public class InscriptionRequest { this.birthDate = birthDate; } - public Cursus getCursus() { - return cursus; + public Curriculum getCurriculum() { + return curriculum; } - public void setCursus(Cursus cursus) { - this.cursus = cursus; + public void setCurriculum(Curriculum curriculum) { + this.curriculum = curriculum; } public RequestState getState() { diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java index c7c5569..57ad53c 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java @@ -1,39 +1,38 @@ package ovh.herisson.Clyde.Tables; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; +import jakarta.persistence.*; +@Entity public class ReinscriptionRequest { + @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @ManyToOne - @JoinColumn(name = "User") + @JoinColumn(name = "Users") private User user; @ManyToOne - @JoinColumn(name = "Cursus") - private Cursus newCursus; + @JoinColumn(name = "Curriculum") + private Curriculum newCurriculum; private RequestState state; - //Permet de différencier les demandes de changement et une réinscription dans le même cursus + //Permet de différencier les demandes de changement et une réinscription dans le même Curriculum //Pour la réinscription on va le mettre a 0 private boolean type = false; public ReinscriptionRequest(){} - public ReinscriptionRequest(User user, Cursus newCursus, RequestState state, boolean type){ + public ReinscriptionRequest(User user, Curriculum newCurriculum, RequestState state, boolean type){ this.user = user; - this.newCursus = newCursus; + this.newCurriculum = newCurriculum; this.state = state; this.type = type; } - public ReinscriptionRequest(User user, Cursus newCursus, RequestState state){ + public ReinscriptionRequest(User user, Curriculum newCurriculum, RequestState state){ this.user = user; - this.newCursus = newCursus; + this.newCurriculum = newCurriculum; this.state = state; } @@ -49,12 +48,12 @@ public class ReinscriptionRequest { this.user = user; } - public Cursus getNewCursus() { - return newCursus; + public Curriculum getNewCurriculum() { + return newCurriculum; } - public void setNewCursus(Cursus newCursus) { - this.newCursus = newCursus; + public void setNewCurriculum(Curriculum newCurriculum) { + this.newCurriculum = newCurriculum; } public RequestState getState() { diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCursus.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java similarity index 53% rename from backend/src/main/java/ovh/herisson/Clyde/Tables/UserCursus.java rename to backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java index 6590b2d..2202763 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCursus.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java @@ -3,26 +3,26 @@ package ovh.herisson.Clyde.Tables; import jakarta.persistence.*; @Entity -public class UserCursus { +public class UserCurriculum { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; - //Un étudiant peut avoir plusieurs cursus + //Un étudiant peut avoir plusieurs curriculums @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "Users") private User user; @OneToOne(fetch = FetchType.EAGER) - @JoinColumn(name = "Cursus") - private Cursus cursus; + @JoinColumn(name = "Curriculum") + private Curriculum curriculum; - public UserCursus(User user, Cursus cursus){ + public UserCurriculum(User user, Curriculum curriculum){ this.user = user; - this.cursus = cursus; + this.curriculum = curriculum; } - public UserCursus() {} + public UserCurriculum() {} public int getId() { return id; @@ -36,11 +36,11 @@ public class UserCursus { this.user = user; } - public Cursus getCursus() { - return cursus; + public Curriculum getCurriculum() { + return curriculum; } - public void setCursus(Cursus cursus) { - this.cursus = cursus; + public void setCurriculum(Curriculum curriculum) { + this.curriculum = curriculum; } } diff --git a/frontend/src/Apps/Login.vue b/frontend/src/Apps/Login.vue index a5043e8..73b4f81 100644 --- a/frontend/src/Apps/Login.vue +++ b/frontend/src/Apps/Login.vue @@ -16,7 +16,7 @@ const email=ref("") const address=ref("") const country=ref("") - const cursus=ref("") + const curriculum=ref("") const imageSaved = ref(false) const ppData = ref(false) @@ -49,7 +49,7 @@
-
+

{{i18n("login.guest.welcome")}}

@@ -103,7 +103,7 @@

{{i18n("curriculum").toUpperCase()}}

- diff --git a/frontend/src/Apps/ManageCourses.vue b/frontend/src/Apps/ManageCourses.vue index 5827e52..0a3fe27 100644 --- a/frontend/src/Apps/ManageCourses.vue +++ b/frontend/src/Apps/ManageCourses.vue @@ -1,7 +1,7 @@ @@ -130,7 +130,7 @@ const cursus=[
{{i18n("courses.toDelete")}} :
@@ -147,7 +147,7 @@ const cursus=[
-
+
+ v-for="item in user.curriculum">
{{item.name}}
{{item.teacher}}
diff --git a/frontend/src/Apps/Request.vue b/frontend/src/Apps/Request.vue index 4d63464..3e0eec4 100644 --- a/frontend/src/Apps/Request.vue +++ b/frontend/src/Apps/Request.vue @@ -8,7 +8,7 @@ address: String, country: String, birthDate: String, - cursus:String, + curriculum:String, degree:String,}); diff --git a/frontend/src/rest/ServiceInscription.js b/frontend/src/rest/ServiceInscription.js index 7048093..1f75123 100644 --- a/frontend/src/rest/ServiceInscription.js +++ b/frontend/src/rest/ServiceInscription.js @@ -3,14 +3,14 @@ * * TODO: On time of writing, the backend doesn't support these endpoints so it could be modified in the future. */ -import { restGet, restPost } from './restConsumer.js' +import {restGet, restPatch} from './restConsumer.js' /** * create a new register requests that can be recovered by the registering service * TODO: add info in the Object (I don't know what will be needed) */ export async function createRegister(){ - return restPost("/requests/register"); + return restPost("/request/register"); } /** @@ -24,18 +24,18 @@ export async function createRegister(){ * - country * - birthdate * - email - * - cursus + * - curriculum * - degree */ export async function getRegisters(id){ if(id != null) - return restGet("/requests/register/" + id); - return restGet("/requests/register") + return restGet("/request/register/" + id); + return restGet("/request/register") } /** * Change the state of a requests. */ export async function validateRegister(id, state){ - return restPost("/requests/register/" + id, {state: state}); + return restPatch("/request/register/" + id, {state: state}); } diff --git a/frontend/src/rest/Users.js b/frontend/src/rest/Users.js index b786f0d..17420b5 100644 --- a/frontend/src/rest/Users.js +++ b/frontend/src/rest/Users.js @@ -14,10 +14,10 @@ export async function login(user, pass, exp){ * @param mail * @param address * @param country - * @param cursus + * @param curriculum * @param imageId id of the image in database returned when uploaded */ -export async function register(firstname, lastname, birthDate, password, email, address, country, cursus, imageId){ +export async function register(firstname, lastname, birthDate, password, email, address, country, curriculum, imageId){ return restPost("/register", { firstname: firstname, lastname: lastname, @@ -26,7 +26,7 @@ export async function register(firstname, lastname, birthDate, password, email, email: email, address: address, country: country, - cursus: cursus + curriculum: curriculum }); } diff --git a/frontend/src/rest/curriculum.js b/frontend/src/rest/curriculum.js new file mode 100644 index 0000000..4aa6d8f --- /dev/null +++ b/frontend/src/rest/curriculum.js @@ -0,0 +1,41 @@ +/** + * curriculum API + */ + +import { restGet, restPostn, restDelete, restPatch } from './restConsumer.js' + +/** + * Create a new curriculum (bundle of courses) + * @param courses list of courses + */ +export async function createcurriculum(courses){ + return restPost("/curriculum", {courses: courses} ); +} + +/** + * Delete the specified curriculum + */ +export async function deletecurriculum(id){ + return restDelete("/curriculum/" + id); +} + +/** + * Get informations on a particular curriculum + * + * @param id identification of the curriculum + * + * @return list of courses + */ +export async function getcurriculum(id){ + return restGet("/curriculum/" + id); +} + +/** + * Modify the courses of a curriculum + * + * @param id the id of the curriculum + * @param courses list of new courses + */ +export async function altercurriculum(id, courses){ + return restPatch("/curriculum/" + id, courses); +} diff --git a/frontend/src/rest/cursus.js b/frontend/src/rest/cursus.js deleted file mode 100644 index 5aad5be..0000000 --- a/frontend/src/rest/cursus.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * cursus API - */ - -import { restGet, restPostn, restDelete, restPatch } from './restConsumer.js' - -/** - * Create a new cursus (bundle of courses) - * @param courses list of courses - */ -export async function createCursus(courses){ - return restPost("/cursus", {courses: courses} ); -} - -/** - * Delete the specified cursus - */ -export async function deleteCursus(id){ - return restDelete("/cursus/" + id); -} - -/** - * Get informations on a particular cursus - * - * @param id identification of the cursus - * - * @return list of courses - */ -export async function getCursus(id){ - return restGet("/cursus/" + id); -} - -/** - * Modify the courses of a cursus - * - * @param id the id of the cursus - * @param courses list of new courses - */ -export async function alterCursus(id, courses){ - return restPatch("/cursus/" + id, courses); -}