backend Schedule
This commit is contained in:
		| @ -74,8 +74,6 @@ public class CourseController { | |||||||
|     public ResponseEntity<Map<String ,Object>> postCourse(@RequestHeader("Authorization") String token, |     public ResponseEntity<Map<String ,Object>> postCourse(@RequestHeader("Authorization") String token, | ||||||
|                                              @RequestBody Course course) |                                              @RequestBody Course course) | ||||||
|     { |     { | ||||||
|         System.out.println(course); |  | ||||||
|         System.out.println(token); |  | ||||||
|         if (authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token)) |         if (authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token)) | ||||||
|             return new UnauthorizedResponse<>(null); |             return new UnauthorizedResponse<>(null); | ||||||
|  |  | ||||||
|  | |||||||
| @ -0,0 +1,75 @@ | |||||||
|  | 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.LessonService; | ||||||
|  | import ovh.herisson.Clyde.Services.ProtectionService; | ||||||
|  | import ovh.herisson.Clyde.Tables.Lesson; | ||||||
|  | import ovh.herisson.Clyde.Tables.Role; | ||||||
|  |  | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | @RestController | ||||||
|  | @CrossOrigin(originPatterns = "*", allowCredentials = "true") | ||||||
|  | public class LessonController { | ||||||
|  |     private final LessonService lessonServ; | ||||||
|  |  | ||||||
|  |     private final AuthenticatorService authServ; | ||||||
|  |  | ||||||
|  |     public LessonController(LessonService lessonServ, AuthenticatorService authServ) { | ||||||
|  |         this.lessonServ = lessonServ; | ||||||
|  |         this.authServ = authServ; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/lesson/{id}") | ||||||
|  |     public ResponseEntity<HashMap<String,Object>> getLesson(@PathVariable long id){ | ||||||
|  |         Lesson lesson = lessonServ.findById(id); | ||||||
|  |  | ||||||
|  |         if(lesson == null) | ||||||
|  |             return new ResponseEntity<>(HttpStatus.BAD_REQUEST); | ||||||
|  |  | ||||||
|  |         return new ResponseEntity<>(ProtectionService.lessonWithoutPassword(lesson),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/lessons") | ||||||
|  |     public ResponseEntity<Iterable<HashMap<String,Object>>> getAllLessons(@RequestHeader("Authorization") String token){ | ||||||
|  |         if(authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token)) | ||||||
|  |             return new UnauthorizedResponse<>(null); | ||||||
|  |         return new ResponseEntity<>(ProtectionService.lessonsWithoutPassword(lessonServ.findAll()),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/lessons/owned") | ||||||
|  |     public ResponseEntity<Iterable<HashMap<String,Object>>> getOwnedLessons(@RequestHeader("Authorization") String token){ | ||||||
|  |         if (authServ.isNotIn(new Role[]{Role.Admin,Role.Teacher},token)) | ||||||
|  |             return new UnauthorizedResponse<>(null); | ||||||
|  |         return new ResponseEntity<>(ProtectionService.lessonsWithoutPassword(lessonServ.findAllOwnedLesson(authServ.getUserFromToken(token))),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @PostMapping("/lesson") | ||||||
|  |     public ResponseEntity<HashMap<String, Object>> postLesson(@RequestHeader("Authorization")String token, | ||||||
|  |                                                               @RequestBody Lesson lesson){ | ||||||
|  |         if(authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token)) | ||||||
|  |             return new UnauthorizedResponse<>(null); | ||||||
|  |         Lesson createdLesson = lessonServ.save(lesson); | ||||||
|  |  | ||||||
|  |         if(createdLesson==null) | ||||||
|  |             return new ResponseEntity<>(null,HttpStatus.BAD_REQUEST); | ||||||
|  |         return new ResponseEntity<>(ProtectionService.lessonWithoutPassword(createdLesson), HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PatchMapping("/lesson/{id}") | ||||||
|  |     public ResponseEntity<Lesson> patchLesson(@RequestHeader("Authorization") String token, | ||||||
|  |                                               @RequestBody Map<String, Object> updates, | ||||||
|  |                                               @PathVariable long id){ | ||||||
|  |         if(authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token)) | ||||||
|  |             return new UnauthorizedResponse<>(null); | ||||||
|  |         if(!lessonServ.modifyData(id, updates, authServ.getUserFromToken(token).getRole())) | ||||||
|  |             return new ResponseEntity<>(HttpStatus.BAD_REQUEST); | ||||||
|  |         return new ResponseEntity<>(HttpStatus.OK); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -24,10 +24,15 @@ public class MockController { | |||||||
|     public final CourseService courseService; |     public final CourseService courseService; | ||||||
|  |  | ||||||
|     public final InscriptionService inscriptionService; |     public final InscriptionService inscriptionService; | ||||||
|  |  | ||||||
|  |     public final LessonService lessonService; | ||||||
|  |     public final ScheduleService scheduleService; | ||||||
|  |     public final ScheduleLessonService scheduleLessonService; | ||||||
|  |  | ||||||
|     ArrayList<User> mockUsers; |     ArrayList<User> mockUsers; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){ |     public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService, LessonService lessonService, ScheduleService scheduleService, ScheduleLessonService scheduleLessonService){ | ||||||
|         this.tokenRepo = tokenRepo; |         this.tokenRepo = tokenRepo; | ||||||
|         this.userRepo = userRepo; |         this.userRepo = userRepo; | ||||||
|         this.tokenService = tokenService; |         this.tokenService = tokenService; | ||||||
| @ -35,6 +40,9 @@ public class MockController { | |||||||
|         this.curriculumService = curriculumService; |         this.curriculumService = curriculumService; | ||||||
|         this.courseService = courseService; |         this.courseService = courseService; | ||||||
|         this.inscriptionService = inscriptionService; |         this.inscriptionService = inscriptionService; | ||||||
|  |         this.lessonService = lessonService; | ||||||
|  |         this.scheduleService = scheduleService; | ||||||
|  |         this.scheduleLessonService = scheduleLessonService; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** Saves an example of each user type by : |     /** Saves an example of each user type by : | ||||||
| @ -95,7 +103,40 @@ public class MockController { | |||||||
|         InscriptionRequest inscriptionRequest = new InscriptionRequest("helen","prenom","non","helen@gmail.com","america",new Date(),(long) 1,RequestState.Pending,"yes.png","password"); |         InscriptionRequest inscriptionRequest = new InscriptionRequest("helen","prenom","non","helen@gmail.com","america",new Date(),(long) 1,RequestState.Pending,"yes.png","password"); | ||||||
|  |  | ||||||
|         inscriptionService.save(inscriptionRequest); |         inscriptionService.save(inscriptionRequest); | ||||||
|          |  | ||||||
|  |  | ||||||
|  |         //Schedule part | ||||||
|  |  | ||||||
|  |         Lesson lesson_0_progra1 = new Lesson(progra1, "Mon Apr 01 2024 08:15", "Mon Apr 01 2024 10:15","rgb(0,50,100)","A0B2"); | ||||||
|  |         Lesson lesson_0_chemistry1 = new Lesson(chemistry1, "Wed Mar 27 2024 08:15", "Wed Mar 27 2024 09:15","rgb(100,50,0)","A0B2"); | ||||||
|  |         Lesson lesson_0_psycho1 = new Lesson(psycho1, "Sun Mar 24 2024 10:30 ","Sun Mar 24 2024 12:30 ","rgb(100,50,100)", "A0B2"); | ||||||
|  |         Lesson lesson_1_progra1 = new Lesson(progra1, "Mon Apr 02 2024 13:30", "Mon Apr 02 2024 15:30","rgb(0,50,100)","A0B2"); | ||||||
|  |         Lesson lesson_0_commun = new Lesson(commun, "Mon Apr 01 2024 10:30", "Mon Apr 01 2024 12:30","rgb(0,50,100)","A0B2"); | ||||||
|  |  | ||||||
|  |         Schedule infoBab1Schedule = new Schedule(infoBab1); | ||||||
|  |         Schedule chemistryBab1Schedule = new Schedule(chemistryBab1); | ||||||
|  |         Schedule psychoBab1Schedule = new Schedule(psychologyBab1); | ||||||
|  |  | ||||||
|  |         scheduleService.save(infoBab1Schedule); | ||||||
|  |         scheduleService.save(chemistryBab1Schedule); | ||||||
|  |         scheduleService.save(psychoBab1Schedule); | ||||||
|  |  | ||||||
|  |         lessonService.save(lesson_0_progra1); | ||||||
|  |         lessonService.save(lesson_0_chemistry1); | ||||||
|  |         lessonService.save(lesson_0_commun); | ||||||
|  |         lessonService.save(lesson_0_psycho1); | ||||||
|  |         lessonService.save(lesson_1_progra1); | ||||||
|  |  | ||||||
|  |         scheduleLessonService.save(new ScheduleLesson(infoBab1Schedule,lesson_0_progra1)); | ||||||
|  |         scheduleLessonService.save(new ScheduleLesson(infoBab1Schedule,lesson_1_progra1)); | ||||||
|  |         scheduleLessonService.save(new ScheduleLesson(infoBab1Schedule,lesson_0_commun)); | ||||||
|  |  | ||||||
|  |         scheduleLessonService.save(new ScheduleLesson(chemistryBab1Schedule,lesson_0_chemistry1)); | ||||||
|  |         scheduleLessonService.save(new ScheduleLesson(chemistryBab1Schedule,lesson_0_commun)); | ||||||
|  |  | ||||||
|  |         scheduleLessonService.save(new ScheduleLesson(psychoBab1Schedule,lesson_0_psycho1)); | ||||||
|  |         scheduleLessonService.save(new ScheduleLesson(psychoBab1Schedule,lesson_0_commun)); | ||||||
|  |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -0,0 +1,66 @@ | |||||||
|  | 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.ScheduleLessonService; | ||||||
|  | import ovh.herisson.Clyde.Services.ScheduleService; | ||||||
|  | import ovh.herisson.Clyde.Services.UserCurriculumService; | ||||||
|  | import ovh.herisson.Clyde.Tables.Role; | ||||||
|  | import ovh.herisson.Clyde.Tables.Schedule; | ||||||
|  |  | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | @RestController | ||||||
|  | @CrossOrigin(originPatterns = "*", allowCredentials = "true") | ||||||
|  | public class ScheduleController { | ||||||
|  |  | ||||||
|  |     private final ScheduleService scheduleServ; | ||||||
|  |  | ||||||
|  |     private final UserCurriculumService userCurriculumService; | ||||||
|  |     private final AuthenticatorService authServ; | ||||||
|  |  | ||||||
|  |     private final ScheduleLessonService scheduleLessonServ; | ||||||
|  |  | ||||||
|  |     public ScheduleController(ScheduleService scheduleServ, UserCurriculumService userCurriculumService, AuthenticatorService authServ, ScheduleLessonService scheduleLessonServ) { | ||||||
|  |         this.scheduleServ = scheduleServ; | ||||||
|  |         this.userCurriculumService = userCurriculumService; | ||||||
|  |         this.authServ = authServ; | ||||||
|  |         this.scheduleLessonServ = scheduleLessonServ; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/schedule/{id}") | ||||||
|  |     public ResponseEntity<Map<String,Object>> findById(@PathVariable long id){ | ||||||
|  |         Schedule schedule = scheduleServ.findById(id); | ||||||
|  |  | ||||||
|  |         if(schedule == null) | ||||||
|  |             return new ResponseEntity<>(HttpStatus.BAD_REQUEST); | ||||||
|  |         return new ResponseEntity<>(scheduleLessonServ.getDepthScheduleBySchedule(schedule),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @GetMapping("/schedule") | ||||||
|  |     public ResponseEntity<Map<String, Object>> findSelfSchedule(@RequestHeader("Authorization") String token){ | ||||||
|  |         if(authServ.getUserFromToken(token) == null) | ||||||
|  |             return new UnauthorizedResponse<>(null); | ||||||
|  |         Schedule schedule = scheduleLessonServ.getScheduleByCurriculum(userCurriculumService.findByUser(authServ.getUserFromToken(token))); | ||||||
|  |         if(schedule == null) | ||||||
|  |             return new ResponseEntity<>(HttpStatus.BAD_REQUEST); | ||||||
|  |         return new ResponseEntity<>(scheduleLessonServ.getDepthScheduleBySchedule(schedule),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/schedules") | ||||||
|  |     public ResponseEntity<Iterable<Map<String , Object>>> findAllSchedule(){ | ||||||
|  |         return new ResponseEntity<>(scheduleLessonServ.getAllSchedule(),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @PostMapping("/schedule") | ||||||
|  |     public ResponseEntity<Schedule> postSchedule(@RequestHeader("Authorization") String token, | ||||||
|  |                                                  @RequestBody Schedule schedule){ | ||||||
|  |         if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token)) | ||||||
|  |             return new UnauthorizedResponse<>(null); | ||||||
|  |         return new ResponseEntity<>(scheduleServ.save(schedule),HttpStatus.OK); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,14 @@ | |||||||
|  | package ovh.herisson.Clyde.Repositories; | ||||||
|  |  | ||||||
|  | import org.springframework.data.jpa.repository.Query; | ||||||
|  | import org.springframework.data.repository.CrudRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Lesson; | ||||||
|  | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
|  | public interface LessonRepository extends CrudRepository<Lesson, Long> { | ||||||
|  |  | ||||||
|  |     Lesson findById(long id); | ||||||
|  |  | ||||||
|  |     @Query("select l from Lesson l where l.course.owner = ?1") | ||||||
|  |     Iterable<Lesson> findAllOwnedLesson(User teacher); | ||||||
|  | } | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | package ovh.herisson.Clyde.Repositories; | ||||||
|  |  | ||||||
|  | import org.springframework.data.jpa.repository.Query; | ||||||
|  | import org.springframework.data.repository.CrudRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Curriculum; | ||||||
|  | import ovh.herisson.Clyde.Tables.Lesson; | ||||||
|  | import ovh.herisson.Clyde.Tables.Schedule; | ||||||
|  | import ovh.herisson.Clyde.Tables.ScheduleLesson; | ||||||
|  |  | ||||||
|  | public interface ScheduleLessonRepository extends CrudRepository<ScheduleLesson,Long> { | ||||||
|  |  | ||||||
|  |     @Query("select distinct sl.lesson from ScheduleLesson sl where sl.schedule.curriculum = ?1") | ||||||
|  |     Iterable<Lesson> findLessonByCurriculum(Curriculum curriculum); | ||||||
|  |  | ||||||
|  |     @Query("select distinct sl.schedule from ScheduleLesson sl") | ||||||
|  |     Iterable<Schedule> findDistinctSchedule(); | ||||||
|  |  | ||||||
|  |     @Query("select distinct sl.schedule from ScheduleLesson sl where sl.schedule.curriculum = ?1") | ||||||
|  |     Schedule findScheduleByCurriculum(Curriculum curriculum); | ||||||
|  |  | ||||||
|  |     @Query("select distinct sl.lesson from ScheduleLesson sl where sl.schedule = ?1") | ||||||
|  |     Iterable<Lesson> findLessonBySchedule(Schedule schedule); | ||||||
|  | } | ||||||
| @ -0,0 +1,9 @@ | |||||||
|  | package ovh.herisson.Clyde.Repositories; | ||||||
|  |  | ||||||
|  | import org.springframework.data.repository.CrudRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Schedule; | ||||||
|  |  | ||||||
|  | public interface ScheduleRepository extends CrudRepository<Schedule,Long> { | ||||||
|  |  | ||||||
|  |     Schedule findById(long id); | ||||||
|  | } | ||||||
| @ -0,0 +1,59 @@ | |||||||
|  | package ovh.herisson.Clyde.Services; | ||||||
|  |  | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import ovh.herisson.Clyde.Repositories.LessonRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Lesson; | ||||||
|  | import ovh.herisson.Clyde.Tables.Role; | ||||||
|  | import ovh.herisson.Clyde.Tables.User; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | @Service | ||||||
|  | public class LessonService { | ||||||
|  |     private final LessonRepository lessonRepo; | ||||||
|  |     public LessonService(LessonRepository lessonRepo){ | ||||||
|  |         this.lessonRepo = lessonRepo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Lesson save(Lesson lesson){ | ||||||
|  |         return lessonRepo.save(lesson); | ||||||
|  |     } | ||||||
|  |     public Lesson findById(long id){ | ||||||
|  |         return lessonRepo.findById(id); | ||||||
|  |     } | ||||||
|  |     public Iterable<Lesson> findAll(){return lessonRepo.findAll();} | ||||||
|  |  | ||||||
|  |     public Iterable<Lesson> findAllOwnedLesson(User teacher){ | ||||||
|  |         return lessonRepo.findAllOwnedLesson(teacher); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean modifyData(long id, Map<String ,Object> updates, Role role){ | ||||||
|  |         Lesson target = lessonRepo.findById(id); | ||||||
|  |  | ||||||
|  |         if(target == null || role != Role.Secretary) | ||||||
|  |             return false; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         for (Map.Entry<String , Object> entry: updates.entrySet()){ | ||||||
|  |             switch (entry.getKey()){ | ||||||
|  |                 case "lessonStart": | ||||||
|  |                     target.setLessonStart((String) entry.getValue()); | ||||||
|  |                     break; | ||||||
|  |                 case "lessonEnd": | ||||||
|  |                     target.setLessonEnd((String) entry.getValue()); | ||||||
|  |                 case "color": | ||||||
|  |                     target.setColor((String) entry.getValue()); | ||||||
|  |                     break; | ||||||
|  |                 case "local": | ||||||
|  |                     target.setLocal((String) entry.getValue()); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         lessonRepo.save(target); | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void delete(Lesson lesson){ | ||||||
|  |         lessonRepo.delete(lesson); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -2,6 +2,7 @@ package ovh.herisson.Clyde.Services; | |||||||
|  |  | ||||||
| import ovh.herisson.Clyde.Tables.Course; | import ovh.herisson.Clyde.Tables.Course; | ||||||
| import ovh.herisson.Clyde.Tables.InscriptionRequest; | import ovh.herisson.Clyde.Tables.InscriptionRequest; | ||||||
|  | import ovh.herisson.Clyde.Tables.Lesson; | ||||||
| import ovh.herisson.Clyde.Tables.User; | import ovh.herisson.Clyde.Tables.User; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| @ -69,6 +70,31 @@ public class ProtectionService { | |||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static HashMap<String , Object> lessonWithoutPassword(Lesson lesson){ | ||||||
|  |         if(lesson == null) | ||||||
|  |             return null; | ||||||
|  |  | ||||||
|  |         HashMap<String, Object> toReturn = new HashMap<>(); | ||||||
|  |  | ||||||
|  |         toReturn.put("lessonID", lesson.getLessonID()); | ||||||
|  |         toReturn.put("lessonStart", lesson.getLessonStart()); | ||||||
|  |         toReturn.put("lessonEnd", lesson.getLessonEnd()); | ||||||
|  |         toReturn.put("course",courseWithoutPassword(lesson.getCourse())); | ||||||
|  |         toReturn.put("local",lesson.getLocal()); | ||||||
|  |         return toReturn; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static Iterable<HashMap<String ,Object>> lessonsWithoutPassword(Iterable<Lesson> lessons){ | ||||||
|  |         ArrayList<HashMap<String,Object>> toReturn = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |         for (Lesson l: lessons){ | ||||||
|  |             toReturn.add(ProtectionService.lessonWithoutPassword(l)); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return toReturn; | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static Map<String, Object> requestWithoutPassword(InscriptionRequest inscriptionRequest) { |     public static Map<String, Object> requestWithoutPassword(InscriptionRequest inscriptionRequest) { | ||||||
|  |  | ||||||
|  | |||||||
| @ -0,0 +1,75 @@ | |||||||
|  | package ovh.herisson.Clyde.Services; | ||||||
|  |  | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import ovh.herisson.Clyde.Repositories.LessonRepository; | ||||||
|  | import ovh.herisson.Clyde.Repositories.ScheduleLessonRepository; | ||||||
|  | import ovh.herisson.Clyde.Repositories.ScheduleRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.*; | ||||||
|  |  | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | @Service | ||||||
|  | public class ScheduleLessonService { | ||||||
|  |  | ||||||
|  |     private final ScheduleLessonRepository scheduleLessonRepo; | ||||||
|  |  | ||||||
|  |     private final LessonRepository lessonRepo; | ||||||
|  |     private final ScheduleRepository scheduleRepo; | ||||||
|  |     public ScheduleLessonService(ScheduleLessonRepository scheduleLessonRepo, LessonRepository lessonRepo, ScheduleRepository scheduleRepo) { | ||||||
|  |         this.scheduleLessonRepo = scheduleLessonRepo; | ||||||
|  |         this.lessonRepo = lessonRepo; | ||||||
|  |         this.scheduleRepo = scheduleRepo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void save(ScheduleLesson scheduleLesson){ | ||||||
|  |         scheduleLessonRepo.save(scheduleLesson); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Schedule getScheduleByCurriculum(Curriculum curriculum){ | ||||||
|  |         return scheduleLessonRepo.findScheduleByCurriculum(curriculum); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Map<String , Object> getDepthScheduleByCurriculum(Curriculum curriculum){ | ||||||
|  |         if(curriculum == null) | ||||||
|  |             return null; | ||||||
|  |  | ||||||
|  |         HashMap<String , Object> toReturn = new HashMap<>(); | ||||||
|  |         ArrayList<Map<String, Object>> lessons = new ArrayList<>(); | ||||||
|  |         Iterable<Lesson> foundLessons = scheduleLessonRepo.findLessonByCurriculum(curriculum); | ||||||
|  |  | ||||||
|  |         for (Lesson l: foundLessons){ | ||||||
|  |             lessons.add(ProtectionService.lessonWithoutPassword(l)); | ||||||
|  |         } | ||||||
|  |         toReturn.put("lessons",lessons); | ||||||
|  |         toReturn.put("scheduleId" , scheduleLessonRepo.findScheduleByCurriculum(curriculum).getScheduleID()); | ||||||
|  |         return toReturn; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Map<String , Object> getDepthScheduleBySchedule(Schedule schedule){ | ||||||
|  |         if(schedule == null) | ||||||
|  |             return null; | ||||||
|  |  | ||||||
|  |         HashMap<String , Object> toReturn = new HashMap<>(); | ||||||
|  |         ArrayList<Map<String, Object>> lessons = new ArrayList<>(); | ||||||
|  |         Iterable<Lesson> foundLessons = scheduleLessonRepo.findLessonByCurriculum(schedule.getCurriculum()); | ||||||
|  |  | ||||||
|  |         for (Lesson l: foundLessons){ | ||||||
|  |             lessons.add(ProtectionService.lessonWithoutPassword(l)); | ||||||
|  |         } | ||||||
|  |         toReturn.put("lessons",lessons); | ||||||
|  |         toReturn.put("scheduleId" , schedule.getScheduleID()); | ||||||
|  |         return toReturn; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Iterable<Map<String,Object>> getAllSchedule(){ | ||||||
|  |         ArrayList<Map<String,Object>> toReturn = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |         for (Schedule schedule: scheduleRepo.findAll()){ | ||||||
|  |             toReturn.add(getDepthScheduleBySchedule(schedule)); | ||||||
|  |         } | ||||||
|  |         return toReturn; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | package ovh.herisson.Clyde.Services; | ||||||
|  |  | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import ovh.herisson.Clyde.Repositories.ScheduleRepository; | ||||||
|  | import ovh.herisson.Clyde.Tables.Schedule; | ||||||
|  |  | ||||||
|  | @Service | ||||||
|  | public class ScheduleService { | ||||||
|  |     private final ScheduleRepository scheduleRepo; | ||||||
|  |     public ScheduleService(ScheduleRepository scheduleRepo) { | ||||||
|  |         this.scheduleRepo = scheduleRepo; | ||||||
|  |     } | ||||||
|  |     public Schedule save(Schedule schedule){ | ||||||
|  |         return scheduleRepo.save(schedule); | ||||||
|  |     } | ||||||
|  |     public Schedule findById(long id){ | ||||||
|  |         return scheduleRepo.findById(id); | ||||||
|  |     } | ||||||
|  |     public void delete(Schedule schedule){ | ||||||
|  |         scheduleRepo.delete(schedule); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
							
								
								
									
										77
									
								
								backend/src/main/java/ovh/herisson/Clyde/Tables/Lesson.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								backend/src/main/java/ovh/herisson/Clyde/Tables/Lesson.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,77 @@ | |||||||
|  | package ovh.herisson.Clyde.Tables; | ||||||
|  |  | ||||||
|  | import jakarta.persistence.*; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @Entity | ||||||
|  | public class Lesson { | ||||||
|  |   @Id | ||||||
|  |   @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
|  |   private int lessonID; | ||||||
|  |  | ||||||
|  |   @ManyToOne | ||||||
|  |   @JoinColumn(name= "Course") | ||||||
|  |   private Course course; | ||||||
|  |  | ||||||
|  |   private String lessonStart; | ||||||
|  |  | ||||||
|  |   private String lessonEnd; | ||||||
|  |   private String color; | ||||||
|  |  | ||||||
|  |   private String local; | ||||||
|  |  | ||||||
|  |   public Lesson(Course course,String start, String end ,String color,String local){ | ||||||
|  |     this.lessonEnd = end; | ||||||
|  |     this.course = course; | ||||||
|  |     this.lessonStart = start; | ||||||
|  |     this.color = color; | ||||||
|  |     this.local = local; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Lesson() { | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public int getLessonID(){ | ||||||
|  |     return lessonID; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setCourse(Course course) { | ||||||
|  |     this.course = course; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Course getCourse(){ | ||||||
|  |     return course; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getLessonStart(){ | ||||||
|  |     return lessonStart; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getLessonEnd() { | ||||||
|  |     return lessonEnd; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getColor(){ | ||||||
|  |     return color; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public String getLocal() { | ||||||
|  |     return local; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setLessonStart(String start){ | ||||||
|  |     this.lessonStart = start; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setLessonEnd(String lessonEnd) { | ||||||
|  |     this.lessonEnd = lessonEnd; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setColor(String color){ | ||||||
|  |     this.color = color; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setLocal(String local){ | ||||||
|  |     this.local = local; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,33 @@ | |||||||
|  |  | ||||||
|  | package ovh.herisson.Clyde.Tables; | ||||||
|  |  | ||||||
|  | import jakarta.persistence.*; | ||||||
|  | import org.hibernate.annotations.OnDelete; | ||||||
|  | import org.hibernate.annotations.OnDeleteAction; | ||||||
|  |  | ||||||
|  | @Entity | ||||||
|  | public class Schedule { | ||||||
|  |   @Id | ||||||
|  |   @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
|  |   private int scheduleID; | ||||||
|  |  | ||||||
|  |   @OneToOne | ||||||
|  |   @JoinColumn(name = "Curriculum") | ||||||
|  |   private Curriculum curriculum; | ||||||
|  |  | ||||||
|  |   public Schedule(Curriculum curriculum){ | ||||||
|  |     this.curriculum = curriculum; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Schedule() {} | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   public int getScheduleID(){ | ||||||
|  |   return scheduleID; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |   public Curriculum getCurriculum(){ | ||||||
|  |   return curriculum; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,53 @@ | |||||||
|  | package ovh.herisson.Clyde.Tables; | ||||||
|  |  | ||||||
|  | import jakarta.persistence.*; | ||||||
|  | import org.hibernate.annotations.OnDelete; | ||||||
|  | import org.hibernate.annotations.OnDeleteAction; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @Entity | ||||||
|  | public class ScheduleLesson{ | ||||||
|  |   @Id | ||||||
|  |   @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
|  |   private int id; | ||||||
|  |    | ||||||
|  |   @ManyToOne(fetch = FetchType.EAGER) | ||||||
|  |   @JoinColumn(name = "Schedule") | ||||||
|  |   private Schedule schedule; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   @ManyToOne(fetch = FetchType.EAGER) | ||||||
|  |   @JoinColumn(name = "Lesson") | ||||||
|  |   private Lesson lesson; | ||||||
|  |  | ||||||
|  |   public ScheduleLesson(Schedule schedule,Lesson lesson){ | ||||||
|  |     this.schedule = schedule; | ||||||
|  |     this.lesson = lesson; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public ScheduleLesson() { | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public int getID(){ | ||||||
|  |     return id; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Lesson getLesson(){ | ||||||
|  |     return lesson; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public Schedule getSchedule(){ | ||||||
|  |     return schedule; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setLesson(Lesson lesson){ | ||||||
|  |     this.lesson = lesson; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void setSchedule(Schedule schedule){ | ||||||
|  |     this.schedule = schedule; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | }  | ||||||
| @ -1,7 +1,12 @@ | |||||||
| <script setup> | <script setup> | ||||||
|   import { ref } from 'vue' |   import { ref } from 'vue' | ||||||
|   import {getDifferenceTime,lastDateOfMonth,formatDate,getFirstDay,sortByDate,matrixFromList,sundayToTheEnd,getMarginTop,getHoursMinutes, monthFromList} from '../schedule.js' |   import {getDifferenceTime,lastDateOfMonth,formatDate,getFirstDay,sortByDate,matrixFromList,sundayToTheEnd,getMarginTop,getHoursMinutes, monthFromList} from '../scheduleFunctions.js' | ||||||
|   |   import {getAllSchedule} from "@/rest/scheduleRest.js"; | ||||||
|  |  | ||||||
|  |   const test = await getAllSchedule(); | ||||||
|  |  | ||||||
|  |   console.log(test); | ||||||
|  |  | ||||||
|   const schedule = [ |   const schedule = [ | ||||||
|     { |     { | ||||||
|      course:{ |      course:{ | ||||||
|  | |||||||
| @ -8,8 +8,6 @@ import { restGet, restPost, restDelete, restPatch } from './restConsumer.js' | |||||||
|  * Create a new course |  * Create a new course | ||||||
|  */ |  */ | ||||||
| export async function createCourse(name, credits, owner){ | export async function createCourse(name, credits, owner){ | ||||||
|   console.log(owner); |  | ||||||
|    |  | ||||||
| 	return restPost("/course", {title: name, credits: credits, owner} ) | 	return restPost("/course", {title: name, credits: credits, owner} ) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										65
									
								
								frontend/src/rest/lessonSchedule.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								frontend/src/rest/lessonSchedule.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | |||||||
|  | import {restGet,restPatch,restPost,restDelete} from "@/rest/restConsumer.js"; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Create a new lesson | ||||||
|  |  */ | ||||||
|  | export async function createLesson(course, start, end, color, local){ | ||||||
|  |     return restPost("/lesson", {course: course , start: start, end: end, color : color , local : local} ) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Delete a lesson | ||||||
|  |  */ | ||||||
|  | export async function deleteLesson(id){ | ||||||
|  |     return restDelete("/lesson/" + id); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Get information on a particular course | ||||||
|  |  * | ||||||
|  |  * @return all attribute of the lesson | ||||||
|  |  *  - course | ||||||
|  |  *  - start | ||||||
|  |  *  - end | ||||||
|  |  *  - color | ||||||
|  |  *  - local | ||||||
|  |  */ | ||||||
|  | export async function getLesson(id){ | ||||||
|  |     return restGet("/lesson/" + id); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Get the list of courses to display on secretary's option | ||||||
|  |  * | ||||||
|  |  * @return list of courses of the form | ||||||
|  |  * - id | ||||||
|  |  * - name | ||||||
|  |  * - credits | ||||||
|  |  * - facutly | ||||||
|  |  * - teacher | ||||||
|  |  * - Assistants | ||||||
|  |  */ | ||||||
|  | export async function getLessons(role){ | ||||||
|  |     if(role==="Teacher"){ | ||||||
|  |         return restGet("/lessons/owned") | ||||||
|  |     } | ||||||
|  |     return restGet("/lessons") | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Change the options of a course | ||||||
|  |  * | ||||||
|  |  * @param id the id of the course | ||||||
|  |  * @param changes Object with value to changes | ||||||
|  |  * | ||||||
|  |  * The changes object can contain: | ||||||
|  |  *  - name | ||||||
|  |  *  - credits | ||||||
|  |  *  - faculty | ||||||
|  |  *  - teacher | ||||||
|  |  *  - assistants: should be a list and will replace all assistants | ||||||
|  |  */ | ||||||
|  | export async function alterLesson(id, changes){ | ||||||
|  |     return restPatch("/course/" + id, changes); | ||||||
|  | } | ||||||
							
								
								
									
										13
									
								
								frontend/src/rest/scheduleRest.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								frontend/src/rest/scheduleRest.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | import {restGet,restPost,restPatch} from "@/rest/restConsumer.js"; | ||||||
|  |  | ||||||
|  | export async function getAllSchedule(){ | ||||||
|  |     return restGet('/schedules'); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export async function getOwnSchedule(){ | ||||||
|  |     return restGet('/schedule') | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export async function createSchedule(curriculum) { | ||||||
|  |     return restPost('/schedule',{curriculum : curriculum}) | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user