added cursus/course interactions
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; | ||||
|     } | ||||
| } | ||||
| @ -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<String> login(@RequestBody RequestLogin requestLogin){ | ||||
|  | ||||
| @ -50,7 +46,6 @@ public class LoginController { | ||||
|  | ||||
|     @PostMapping("/register") | ||||
|     public ResponseEntity<String> register(@RequestBody InscriptionRequest inscriptionRequest){ | ||||
|  | ||||
|         authServ.register(inscriptionRequest); | ||||
|         return new ResponseEntity<>("Is OK", HttpStatus.OK); | ||||
|     } | ||||
|  | ||||
| @ -7,10 +7,8 @@ import org.springframework.web.bind.annotation.PostMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import ovh.herisson.Clyde.Repositories.TokenRepository; | ||||
| import ovh.herisson.Clyde.Repositories.UserRepository; | ||||
| import ovh.herisson.Clyde.Services.TokenService; | ||||
| import ovh.herisson.Clyde.Tables.Role; | ||||
| import ovh.herisson.Clyde.Tables.Token; | ||||
| import ovh.herisson.Clyde.Tables.User; | ||||
| import ovh.herisson.Clyde.Services.*; | ||||
| import ovh.herisson.Clyde.Tables.*; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| @ -26,13 +24,22 @@ public class MockController { | ||||
|     public final UserRepository userRepo; | ||||
|     public final TokenRepository tokenRepo; | ||||
|     public final TokenService tokenService; | ||||
|  | ||||
|     public final CursusCourseService cursusCourseService; | ||||
|  | ||||
|     public final CursusService cursusService; | ||||
|  | ||||
|     public final CourseService courseService; | ||||
|     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.userRepo = userRepo; | ||||
|         this.tokenService = tokenService; | ||||
|         this.cursusCourseService = cursusCourseService; | ||||
|         this.cursusService = cursusService; | ||||
|         this.courseService = courseService; | ||||
|     } | ||||
|  | ||||
|     /** Saves an example of each user type by : | ||||
| @ -44,6 +51,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")); | ||||
| @ -52,6 +62,42 @@ public class MockController { | ||||
|         mockUsers = new ArrayList<User>(Arrays.asList(herobrine,joe,meh,joke)); | ||||
|  | ||||
|         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") | ||||
|  | ||||
| @ -41,7 +41,5 @@ public class UserController { | ||||
|     public Iterable<User> getAllUsers(){ | ||||
|         return userService.getAll(); | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -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(); | ||||
|     } | ||||
| } | ||||
| @ -12,13 +12,6 @@ public class Cursus { | ||||
|     private int cursusId; | ||||
|     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){ | ||||
|         this.year = year; | ||||
|         this.option = option; | ||||
|  | ||||
| @ -8,11 +8,11 @@ public class CursusCourse { | ||||
|     @GeneratedValue(strategy = GenerationType.AUTO) | ||||
|     private int id; | ||||
|  | ||||
|     @ManyToOne(fetch = FetchType.LAZY) | ||||
|     @ManyToOne(fetch = FetchType.EAGER) | ||||
|     @JoinColumn(name = "Cursus") | ||||
|     private Cursus cursus; | ||||
|  | ||||
|     @ManyToOne(fetch = FetchType.LAZY) | ||||
|     @ManyToOne(fetch = FetchType.EAGER) | ||||
|     @JoinColumn(name = "Course") | ||||
|     private Course course; | ||||
|  | ||||
|  | ||||
| @ -1,8 +0,0 @@ | ||||
| package ovh.herisson.Clyde.Tables; | ||||
|  | ||||
| public enum CursusType { | ||||
|  | ||||
|     infoBab1, | ||||
|     chemistryBab1, | ||||
|     psychologyBab1; | ||||
| } | ||||
| @ -4,7 +4,10 @@ import jakarta.persistence.*; | ||||
|  | ||||
| import java.util.Date; | ||||
|  | ||||
|  | ||||
| @Entity | ||||
| public class InscriptionRequest { | ||||
|     @Id | ||||
|     @GeneratedValue(strategy = GenerationType.AUTO) | ||||
|     private int id; | ||||
|     private String firstName; | ||||
|  | ||||
| @ -1,16 +1,15 @@ | ||||
| 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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user