Merge pull request 'Max/Backend/Curriculum' (#106) from Max/Backend/Curriculum into master
Reviewed-on: PGL/Clyde#106 Reviewed-by: LeoMoulin <leomoulin125@gmail.com> Reviewed-by: Wal <karpinskiwal@gmail.com> Reviewed-by: Debucquoy Anthony <d.tonitch@gmail.com>
This commit is contained in:
		| @ -0,0 +1,71 @@ | |||||||
|  | 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.Responses.UnauthorizedResponse; | ||||||
|  | import ovh.herisson.Clyde.Services.AuthenticatorService; | ||||||
|  | import ovh.herisson.Clyde.Services.CursusCourseService; | ||||||
|  | import ovh.herisson.Clyde.Services.CursusService; | ||||||
|  | import ovh.herisson.Clyde.Tables.Cursus; | ||||||
|  | import ovh.herisson.Clyde.Tables.CursusCourse; | ||||||
|  | import ovh.herisson.Clyde.Tables.Role; | ||||||
|  | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | @RestController | ||||||
|  | public class CursusController { | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     private final CursusService cursusServ; | ||||||
|  |     private final AuthenticatorService authServ; | ||||||
|  |  | ||||||
|  |     private final CursusCourseService cursusCourseServ; | ||||||
|  |  | ||||||
|  |     public CursusController(CursusService cursusServ, AuthenticatorService authServ, CursusCourseService cursusCourseServ){ | ||||||
|  |         this.cursusServ = cursusServ; | ||||||
|  |         this.authServ = authServ; | ||||||
|  |         this.cursusCourseServ = cursusCourseServ; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/cursus/{id}") | ||||||
|  |     public ResponseEntity<Cursus> findById(@PathVariable long id){ | ||||||
|  |         return new ResponseEntity<>(cursusServ.findById(id), HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/curriculums") | ||||||
|  |     public ResponseEntity<Iterable<Map<String, Object>>> findAllindDepth(){ | ||||||
|  |         return new ResponseEntity<>(cursusCourseServ.getAllDepthCursus(),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/curriculum") | ||||||
|  |     public ResponseEntity<Iterable<CursusCourse>> findAll(){ | ||||||
|  |         return new ResponseEntity<>(cursusCourseServ.findAll(),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /**@PostMapping("/cursus") | ||||||
|  |     public ResponseEntity<String> postCursus(@RequestHeader("Authorization") String token,@RequestBody Cursus cursus){ | ||||||
|  |  | ||||||
|  |         if (!isSecretaryOrAdmin(token)){ | ||||||
|  |             return new UnauthorizedResponse<>("you're not allowed to post a cursus"); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         cursusServ.save(cursus); | ||||||
|  |  | ||||||
|  |         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; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -7,6 +7,7 @@ import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | |||||||
| import ovh.herisson.Clyde.Services.AuthenticatorService; | import ovh.herisson.Clyde.Services.AuthenticatorService; | ||||||
| import ovh.herisson.Clyde.Services.InscriptionService; | import ovh.herisson.Clyde.Services.InscriptionService; | ||||||
| import ovh.herisson.Clyde.Tables.InscriptionRequest; | import ovh.herisson.Clyde.Tables.InscriptionRequest; | ||||||
|  | import ovh.herisson.Clyde.Tables.RequestState; | ||||||
| import ovh.herisson.Clyde.Tables.Role; | import ovh.herisson.Clyde.Tables.Role; | ||||||
| import ovh.herisson.Clyde.Tables.User; | import ovh.herisson.Clyde.Tables.User; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| @ -28,7 +29,7 @@ public class InscriptionController { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     @GetMapping("/inscriptionRequests") |     @GetMapping("/requests/register") | ||||||
|     public ResponseEntity<Iterable<Map<String,Object>>> getAllRequests(@RequestHeader("Authorization") String token){ |     public ResponseEntity<Iterable<Map<String,Object>>> getAllRequests(@RequestHeader("Authorization") String token){ | ||||||
|  |  | ||||||
|         if (!isSecretaryOrAdmin(token)){return new UnauthorizedResponse<>(null);} |         if (!isSecretaryOrAdmin(token)){return new UnauthorizedResponse<>(null);} | ||||||
| @ -44,17 +45,29 @@ public class InscriptionController { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     @GetMapping("/inscriptionRequest/{id}") |     @GetMapping("/request/register/{id}") | ||||||
|     public ResponseEntity<Map<String,Object>> getById(@PathVariable long id){ |     public ResponseEntity<Map<String,Object>> getById(@PathVariable long id){ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         InscriptionRequest inscriptionRequest = inscriptionServ.getById(id); |         InscriptionRequest inscriptionRequest = inscriptionServ.getById(id); | ||||||
|         if (inscriptionRequest == null) {return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST);} |         if (inscriptionRequest == null) {return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST);} | ||||||
|  |  | ||||||
|         return new ResponseEntity<>(requestWithoutPassword(inscriptionRequest), HttpStatus.OK); |         return new ResponseEntity<>(requestWithoutPassword(inscriptionRequest), HttpStatus.OK); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("request/user/{id}") | ||||||
|  |     public ResponseEntity<InscriptionRequest> 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; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PatchMapping("/request/register/{id}") | ||||||
|  |     public ResponseEntity<InscriptionRequest> 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<String,Object> requestWithoutPassword(InscriptionRequest inscriptionRequest) { |     private Map<String,Object> requestWithoutPassword(InscriptionRequest inscriptionRequest) { | ||||||
|         Map<String, Object> toReturn = new HashMap<>(); |         Map<String, Object> toReturn = new HashMap<>(); | ||||||
|  | |||||||
| @ -1,19 +1,14 @@ | |||||||
| package ovh.herisson.Clyde.EndPoints; | package ovh.herisson.Clyde.EndPoints; | ||||||
| import com.fasterxml.jackson.annotation.JsonFormat; | import com.fasterxml.jackson.annotation.JsonFormat; | ||||||
| import jakarta.persistence.Column; |  | ||||||
| import org.springframework.http.HttpHeaders; | import org.springframework.http.HttpHeaders; | ||||||
| import org.springframework.http.HttpStatus; | import org.springframework.http.HttpStatus; | ||||||
| import org.springframework.http.ResponseEntity; | import org.springframework.http.ResponseEntity; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | ||||||
| import ovh.herisson.Clyde.Services.AuthenticatorService; | 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.InscriptionRequest; | ||||||
| import ovh.herisson.Clyde.Tables.User; |  | ||||||
|  |  | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| import java.util.HashMap; |  | ||||||
|  |  | ||||||
| @RestController | @RestController | ||||||
| @CrossOrigin(originPatterns = "*", allowCredentials = "true") | @CrossOrigin(originPatterns = "*", allowCredentials = "true") | ||||||
| @ -35,6 +30,7 @@ public class LoginController { | |||||||
|     public LoginController(AuthenticatorService authServ){ |     public LoginController(AuthenticatorService authServ){ | ||||||
|         this.authServ = authServ; |         this.authServ = authServ; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @PostMapping(value = "/login") |     @PostMapping(value = "/login") | ||||||
|     public ResponseEntity<String> login(@RequestBody RequestLogin requestLogin){ |     public ResponseEntity<String> login(@RequestBody RequestLogin requestLogin){ | ||||||
|  |  | ||||||
| @ -48,12 +44,9 @@ public class LoginController { | |||||||
|         return ResponseEntity.ok().headers(responseHeaders).build(); |         return ResponseEntity.ok().headers(responseHeaders).build(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @PostMapping("/register") |     @PostMapping("/request/register") | ||||||
|     public ResponseEntity<String> register(@RequestBody InscriptionRequest inscriptionRequest){ |     public ResponseEntity<String> register(@RequestBody InscriptionRequest inscriptionRequest){ | ||||||
|  |  | ||||||
|         authServ.register(inscriptionRequest); |         authServ.register(inscriptionRequest); | ||||||
|         return new ResponseEntity<>("Is OK", HttpStatus.OK); |         return new ResponseEntity<>("Is OK", HttpStatus.OK); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | |||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| import ovh.herisson.Clyde.Repositories.TokenRepository; | import ovh.herisson.Clyde.Repositories.TokenRepository; | ||||||
| import ovh.herisson.Clyde.Repositories.UserRepository; | import ovh.herisson.Clyde.Repositories.UserRepository; | ||||||
| import ovh.herisson.Clyde.Services.TokenService; | import ovh.herisson.Clyde.Services.*; | ||||||
| import ovh.herisson.Clyde.Tables.*; | import ovh.herisson.Clyde.Tables.*; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| @ -20,14 +20,19 @@ public class MockController { | |||||||
|     public final UserRepository userRepo; |     public final UserRepository userRepo; | ||||||
|     public final TokenRepository tokenRepo; |     public final TokenRepository tokenRepo; | ||||||
|     public final TokenService tokenService; |     public final TokenService tokenService; | ||||||
|  |     public final CursusCourseService cursusCourseService; | ||||||
|  |     public final CursusService cursusService; | ||||||
|  |     public final CourseService courseService; | ||||||
|     ArrayList<User> mockUsers; |     ArrayList<User> mockUsers; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService){ |     public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CursusCourseService cursusCourseService, CursusService cursusService, CourseService courseService){ | ||||||
|         this.tokenRepo = tokenRepo; |         this.tokenRepo = tokenRepo; | ||||||
|         this.userRepo = userRepo; |         this.userRepo = userRepo; | ||||||
|         this.tokenService = tokenService; |         this.tokenService = tokenService; | ||||||
|  |         this.cursusCourseService = cursusCourseService; | ||||||
|  |         this.cursusService = cursusService; | ||||||
|  |         this.courseService = courseService; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Saves an example of each user type by : |     /** Saves an example of each user type by : | ||||||
| @ -39,6 +44,9 @@ public class MockController { | |||||||
|     @PostMapping("/mock") |     @PostMapping("/mock") | ||||||
|     public void postMock(){ |     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 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 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")); |         User meh = new User("Inspiration","lackOf","secretary@secretary.com","a Box","the street",new Date(0), null,Role.Teacher,passwordEncoder.encode("secretary")); | ||||||
| @ -46,6 +54,42 @@ public class MockController { | |||||||
|         mockUsers = new ArrayList<User>(Arrays.asList(herobrine,joe,meh,joke)); |         mockUsers = new ArrayList<User>(Arrays.asList(herobrine,joe,meh,joke)); | ||||||
|  |  | ||||||
|         userRepo.saveAll(mockUsers); |         userRepo.saveAll(mockUsers); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         // Course / Curriculum part | ||||||
|  |  | ||||||
|  |         Cursus infoBab1 = new Cursus(1,"info"); | ||||||
|  |         Cursus chemistryBab1 = new Cursus(1,"chemistry"); | ||||||
|  |         Cursus psychologyBab1 = new Cursus(1,"psychology"); | ||||||
|  |  | ||||||
|  |         cursusService.save(infoBab1); | ||||||
|  |         cursusService.save(chemistryBab1); | ||||||
|  |         cursusService.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); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         cursusCourseService.save(new CursusCourse(infoBab1,progra1)); | ||||||
|  |         cursusCourseService.save(new CursusCourse(infoBab1,commun)); | ||||||
|  |  | ||||||
|  |         cursusCourseService.save(new CursusCourse(psychologyBab1,psycho1)); | ||||||
|  |         cursusCourseService.save(new CursusCourse(psychologyBab1,commun)); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         cursusCourseService.save(new CursusCourse(chemistryBab1,commun)); | ||||||
|  |         cursusCourseService.save(new CursusCourse(chemistryBab1,chemistry1)); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @DeleteMapping("/mock") |     @DeleteMapping("/mock") | ||||||
|  | |||||||
| @ -1,10 +1,7 @@ | |||||||
| package ovh.herisson.Clyde.EndPoints; | package ovh.herisson.Clyde.EndPoints; | ||||||
|  |  | ||||||
|  |  | ||||||
| import jakarta.servlet.http.HttpServletRequest; |  | ||||||
| import org.springframework.http.HttpStatus; | import org.springframework.http.HttpStatus; | ||||||
|  |  | ||||||
| import org.springframework.http.MediaType; |  | ||||||
| import org.springframework.http.ResponseEntity; | import org.springframework.http.ResponseEntity; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | 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.Services.UserService; | ||||||
| import ovh.herisson.Clyde.Tables.Role; | import ovh.herisson.Clyde.Tables.Role; | ||||||
| import ovh.herisson.Clyde.Tables.User; | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
| import java.io.IOException; |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @ -77,8 +72,6 @@ public class UserController { | |||||||
|  |  | ||||||
|         return new ResponseEntity<>("data modified", HttpStatus.OK); |         return new ResponseEntity<>("data modified", HttpStatus.OK); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|         /** return user's data except password |         /** return user's data except password | ||||||
|          * @param user the user to return |          * @param user the user to return | ||||||
|          * @return all the user data without the password |          * @return all the user data without the password | ||||||
|  | |||||||
| @ -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,Long> { | ||||||
|  |     Course findById(long id); | ||||||
|  | } | ||||||
| @ -0,0 +1,20 @@ | |||||||
|  | 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.Cursus; | ||||||
|  | import ovh.herisson.Clyde.Tables.CursusCourse; | ||||||
|  |  | ||||||
|  | public interface CursusCourseRepository extends CrudRepository<CursusCourse,Long> { | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     //todo faire custom query pour trouver tous les cours d'un cursus par un cursusId | ||||||
|  |  | ||||||
|  |     @Query("select distinct cc.course from CursusCourse cc where cc.cursus = ?1") | ||||||
|  |     Iterable<Course> findCoursesByCursus(Cursus cursus); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Query("select distinct cc.cursus from  CursusCourse cc") | ||||||
|  |     Iterable<Cursus> findDistinctCursuses(); | ||||||
|  | } | ||||||
| @ -0,0 +1,8 @@ | |||||||
|  | package ovh.herisson.Clyde.Repositories; | ||||||
|  |  | ||||||
|  | import org.springframework.data.repository.CrudRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Cursus; | ||||||
|  |  | ||||||
|  | public interface CursusRepository extends CrudRepository<Cursus,Long> { | ||||||
|  |     Cursus findById(long id); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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.CursusCourseRepository; | ||||||
|  | import ovh.herisson.Clyde.Repositories.CursusRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Course; | ||||||
|  | import ovh.herisson.Clyde.Tables.Cursus; | ||||||
|  | import ovh.herisson.Clyde.Tables.CursusCourse; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | @Service | ||||||
|  | public class CursusCourseService { | ||||||
|  |  | ||||||
|  |     private final CursusCourseRepository cursusCourseRepo; | ||||||
|  |  | ||||||
|  |     private final CourseRepository courseRepo; | ||||||
|  |  | ||||||
|  |     private final CursusRepository cursusRepo; | ||||||
|  |  | ||||||
|  |     public CursusCourseService(CursusCourseRepository cursusCourseRepo, CourseRepository courseRepo, CursusRepository cursusRepo) { | ||||||
|  |         this.cursusCourseRepo = cursusCourseRepo; | ||||||
|  |         this.courseRepo = courseRepo; | ||||||
|  |         this.cursusRepo = cursusRepo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void save(CursusCourse cursusCourse){ | ||||||
|  |         cursusCourseRepo.save(cursusCourse); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Iterable<CursusCourse> findAll(){ | ||||||
|  |         return cursusCourseRepo.findAll(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public Map<String, Object> getDepthCursus(Cursus cursus){ | ||||||
|  |  | ||||||
|  |         HashMap<String ,Object> toReturn = new HashMap<>(); | ||||||
|  |         ArrayList<Course> courses = new ArrayList<>(); | ||||||
|  |         for (Course c: cursusCourseRepo.findCoursesByCursus(cursus)){ | ||||||
|  |             courses.add(c); | ||||||
|  |         } | ||||||
|  |         toReturn.put("courses",courses); | ||||||
|  |         toReturn.put("cursusId",cursus.getCursusId()); | ||||||
|  |         toReturn.put("year",cursus.getYear()); | ||||||
|  |         toReturn.put("option",cursus.getOption()); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         return  toReturn; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Iterable<Map<String, Object>> getAllDepthCursus(){ | ||||||
|  |  | ||||||
|  |         ArrayList<Map<String,Object>> toReturn = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |         for (Cursus cursus : cursusCourseRepo.findDistinctCursuses()){ | ||||||
|  |             toReturn.add(getDepthCursus(cursus)); | ||||||
|  |         } | ||||||
|  |         return toReturn; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,36 @@ | |||||||
|  | package ovh.herisson.Clyde.Services; | ||||||
|  |  | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import ovh.herisson.Clyde.Repositories.CourseRepository; | ||||||
|  | import ovh.herisson.Clyde.Repositories.CursusRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Cursus; | ||||||
|  |  | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | @Service | ||||||
|  | public class CursusService { | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     private final CursusRepository cursusRepo; | ||||||
|  |  | ||||||
|  |     private final CourseRepository courseRepo; | ||||||
|  |  | ||||||
|  |     public CursusService(CursusRepository cursusRepo, CourseRepository courseRepo){ | ||||||
|  |         this.cursusRepo = cursusRepo; | ||||||
|  |         this.courseRepo = courseRepo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public void save(Cursus cursus){ | ||||||
|  |         cursusRepo.save(cursus); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Cursus findById(long id){ | ||||||
|  |         return cursusRepo.findById(id); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Iterable<Cursus> findAll(){ | ||||||
|  |         return cursusRepo.findAll(); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -3,32 +3,32 @@ package ovh.herisson.Clyde.Services; | |||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import ovh.herisson.Clyde.Repositories.InscriptionRepository; | import ovh.herisson.Clyde.Repositories.InscriptionRepository; | ||||||
| import ovh.herisson.Clyde.Tables.InscriptionRequest; | import ovh.herisson.Clyde.Tables.InscriptionRequest; | ||||||
|  | import ovh.herisson.Clyde.Tables.RequestState; | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.Map; |  | ||||||
|  |  | ||||||
| @Service | @Service | ||||||
| public class InscriptionService { | public class InscriptionService { | ||||||
|  |  | ||||||
|     InscriptionRepository incriptionRepo; |     InscriptionRepository inscriptionRepo; | ||||||
|     public void save(InscriptionRequest inscriptionRequest){ |  | ||||||
|         incriptionRepo.save(inscriptionRequest); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public InscriptionService(InscriptionRepository inscriptionRepo){ |     public InscriptionService(InscriptionRepository inscriptionRepo){ | ||||||
|         this.incriptionRepo = inscriptionRepo; |         this.inscriptionRepo = inscriptionRepo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void save(InscriptionRequest inscriptionRequest){ | ||||||
|  |         inscriptionRepo.save(inscriptionRequest); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public InscriptionRequest getById(long id){ |     public InscriptionRequest getById(long id){ | ||||||
|         InscriptionRequest inscriptionRequest = incriptionRepo.findById(id); |         return inscriptionRepo.findById(id); | ||||||
|  |  | ||||||
|         if (inscriptionRequest == null){ |  | ||||||
|             return null; |  | ||||||
|         } |  | ||||||
|         return inscriptionRequest; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Iterable<InscriptionRequest> getAll(){ |     public Iterable<InscriptionRequest> getAll(){ | ||||||
|         return incriptionRepo.findAll(); |         return inscriptionRepo.findAll(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void modifyState(long id, RequestState requestState) { | ||||||
|  |         InscriptionRequest inscriptionRequest = getById(id); | ||||||
|  |         inscriptionRequest.setState(requestState); | ||||||
|  |         save(inscriptionRequest); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -12,13 +12,6 @@ public class Cursus { | |||||||
|     private int cursusId; |     private int cursusId; | ||||||
|     private int year; |     private int year; | ||||||
|     private String option; |     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 Cursus(int year, String option){ | ||||||
|         this.year = year; |         this.year = year; | ||||||
|         this.option = option; |         this.option = option; | ||||||
|  | |||||||
| @ -8,11 +8,11 @@ public class CursusCourse { | |||||||
|     @GeneratedValue(strategy = GenerationType.AUTO) |     @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
|     private int id; |     private int id; | ||||||
|  |  | ||||||
|     @ManyToOne(fetch = FetchType.LAZY) |     @ManyToOne(fetch = FetchType.EAGER) | ||||||
|     @JoinColumn(name = "Cursus") |     @JoinColumn(name = "Cursus") | ||||||
|     private Cursus cursus; |     private Cursus cursus; | ||||||
|  |  | ||||||
|     @ManyToOne(fetch = FetchType.LAZY) |     @ManyToOne(fetch = FetchType.EAGER) | ||||||
|     @JoinColumn(name = "Course") |     @JoinColumn(name = "Course") | ||||||
|     private Course course; |     private Course course; | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,8 +0,0 @@ | |||||||
| package ovh.herisson.Clyde.Tables; |  | ||||||
|  |  | ||||||
| public enum CursusType { |  | ||||||
|  |  | ||||||
|     infoBab1, |  | ||||||
|     chemistryBab1, |  | ||||||
|     psychologyBab1; |  | ||||||
| } |  | ||||||
| @ -1,16 +1,15 @@ | |||||||
| package ovh.herisson.Clyde.Tables; | package ovh.herisson.Clyde.Tables; | ||||||
|  |  | ||||||
| import jakarta.persistence.GeneratedValue; | import jakarta.persistence.*; | ||||||
| import jakarta.persistence.GenerationType; |  | ||||||
| import jakarta.persistence.JoinColumn; |  | ||||||
| import jakarta.persistence.ManyToOne; |  | ||||||
|  |  | ||||||
|  | @Entity | ||||||
| public class ReinscriptionRequest { | public class ReinscriptionRequest { | ||||||
|  |     @Id | ||||||
|     @GeneratedValue(strategy = GenerationType.AUTO) |     @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
|     private int id; |     private int id; | ||||||
|  |  | ||||||
|     @ManyToOne |     @ManyToOne | ||||||
|     @JoinColumn(name = "User") |     @JoinColumn(name = "Users") | ||||||
|     private User user; |     private User user; | ||||||
|  |  | ||||||
|     @ManyToOne |     @ManyToOne | ||||||
|  | |||||||
| @ -3,14 +3,14 @@ | |||||||
|  * |  * | ||||||
|  * TODO: On time of writing, the backend doesn't support these endpoints so it could be modified in the future. |  * 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 |  * 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) |  * TODO: add info in the Object (I don't know what will be needed) | ||||||
|  */ |  */ | ||||||
| export async function createRegister(){ | export async function createRegister(){ | ||||||
| 	return restPost("/requests/register"); | 	return restPost("/request/register"); | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @ -29,13 +29,13 @@ export async function createRegister(){ | |||||||
|  */ |  */ | ||||||
| export async function getRegisters(id){ | export async function getRegisters(id){ | ||||||
| 	if(id != null) | 	if(id != null) | ||||||
| 		return restGet("/requests/register/" + id); | 		return restGet("/request/register/" + id); | ||||||
| 	return restGet("/requests/register") | 	return restGet("/request/register") | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Change the state of a requests. |  * Change the state of a requests. | ||||||
|  */ |  */ | ||||||
| export async function validateRegister(id, state){ | export async function validateRegister(id, state){ | ||||||
| 	return restPost("/requests/register/" + id, {state: state}); | 	return restPatch("/request/register/" + id, {state: state}); | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user