backend Schedule
This commit is contained in:
		| @ -74,8 +74,6 @@ public class CourseController { | ||||
|     public ResponseEntity<Map<String ,Object>> postCourse(@RequestHeader("Authorization") String token, | ||||
|                                              @RequestBody Course course) | ||||
|     { | ||||
|         System.out.println(course); | ||||
|         System.out.println(token); | ||||
|         if (authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token)) | ||||
|             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 InscriptionService inscriptionService; | ||||
|  | ||||
|     public final LessonService lessonService; | ||||
|     public final ScheduleService scheduleService; | ||||
|     public final ScheduleLessonService scheduleLessonService; | ||||
|  | ||||
|     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.userRepo = userRepo; | ||||
|         this.tokenService = tokenService; | ||||
| @ -35,6 +40,9 @@ public class MockController { | ||||
|         this.curriculumService = curriculumService; | ||||
|         this.courseService = courseService; | ||||
|         this.inscriptionService = inscriptionService; | ||||
|         this.lessonService = lessonService; | ||||
|         this.scheduleService = scheduleService; | ||||
|         this.scheduleLessonService = scheduleLessonService; | ||||
|     } | ||||
|  | ||||
|     /** 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"); | ||||
|  | ||||
|         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.InscriptionRequest; | ||||
| import ovh.herisson.Clyde.Tables.Lesson; | ||||
| import ovh.herisson.Clyde.Tables.User; | ||||
|  | ||||
| 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) { | ||||
|  | ||||
|  | ||||
| @ -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> | ||||
|   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 = [ | ||||
|     { | ||||
|      course:{ | ||||
|  | ||||
| @ -8,8 +8,6 @@ import { restGet, restPost, restDelete, restPatch } from './restConsumer.js' | ||||
|  * Create a new course | ||||
|  */ | ||||
| export async function createCourse(name, credits, owner){ | ||||
|   console.log(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