diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LessonRequestsController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LessonRequestsController.java index 68eeeeb..261d8b2 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LessonRequestsController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LessonRequestsController.java @@ -12,14 +12,8 @@ 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.LessonRequestService; -import ovh.herisson.Clyde.Services.LessonService; -import ovh.herisson.Clyde.Services.ProtectionService; -import ovh.herisson.Clyde.Tables.LessonChangesRequest; -import ovh.herisson.Clyde.Tables.RequestState; -import ovh.herisson.Clyde.Tables.Role; -import ovh.herisson.Clyde.Tables.User; +import ovh.herisson.Clyde.Services.*; +import ovh.herisson.Clyde.Tables.*; import java.util.Map; @@ -28,11 +22,13 @@ import java.util.Map; public class LessonRequestsController { private final LessonRequestService lessonRequestServ; private final AuthenticatorService authServ; + private final UserService userServ; private final LessonService lessonServ; - public LessonRequestsController(LessonRequestService lessonRequestServer, AuthenticatorService authServ, LessonService lessonServ) { + public LessonRequestsController(LessonRequestService lessonRequestServer, AuthenticatorService authServ, UserService userServ, LessonService lessonServ) { this.lessonRequestServ = lessonRequestServer; this.authServ = authServ; + this.userServ = userServ; this.lessonServ = lessonServ; } /** @@ -113,6 +109,7 @@ public class LessonRequestsController { if(lessonRequest.getRequestType() == 0 ) { if (!lessonRequestServ.modifyCreateRequestState(lessonRequest, state, local)) return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + userServ.Notify(lessonRequest.getUser(), new Notification("Request took in charge","Request"+ state + ":" + lessonRequest.getCourse().getTitle(), "#/manage-owned-lessons")); } else if(lessonRequest.getRequestType() == 1){ @@ -122,12 +119,14 @@ public class LessonRequestsController { if(!lessonRequestServ.modifyChangeRequestState(infos,lessonRequest.getLessonId(),state)) return new ResponseEntity<>(HttpStatus.BAD_REQUEST); lessonRequest.setState(state); + userServ.Notify(lessonRequest.getUser(), new Notification("Request took in charge","Request"+ state + ":" + lessonServ.findById(lessonRequest.getLessonId()).getCourse().getTitle(), "#/manage-owned-lessons")); + } else{ + userServ.Notify(lessonRequest.getUser(), new Notification("Request took in charge","Request"+ state + ":" + lessonServ.findById(lessonRequest.getLessonId()).getCourse().getTitle(), "#/manage-owned-lessons")); lessonRequestServ.modifyDeleteRequest(lessonRequest, state); lessonRequest.setState(state); - } lessonRequestServ.save(lessonRequest); return new ResponseEntity<>(HttpStatus.OK); diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/ScheduleLessonRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/ScheduleLessonRepository.java index 97e69ca..e7218ce 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/ScheduleLessonRepository.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/ScheduleLessonRepository.java @@ -22,6 +22,9 @@ public interface ScheduleLessonRepository extends CrudRepository findUsersByCurriculum(Curriculum curriculum); + ArrayList findByUserOrderByCurriculum(User student); UserCurriculum findByUserAndCurriculumAndActual(User user, Curriculum curriculum, boolean actual); ArrayList findByUserAndActual(User user, boolean actual); - } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/LessonService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/LessonService.java index 292a6a6..bc32b0a 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/LessonService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/LessonService.java @@ -7,10 +7,7 @@ package ovh.herisson.Clyde.Services; * @scope Extension Horaire ******************************************************/ import org.springframework.stereotype.Service; -import ovh.herisson.Clyde.Repositories.CourseRepository; -import ovh.herisson.Clyde.Repositories.CurriculumCourseRepository; -import ovh.herisson.Clyde.Repositories.LessonRepository; -import ovh.herisson.Clyde.Repositories.UserCurriculumRepository; +import ovh.herisson.Clyde.Repositories.*; import ovh.herisson.Clyde.Tables.*; import java.util.ArrayList; @@ -19,12 +16,17 @@ import java.util.Map; @Service public class LessonService { private final LessonRepository lessonRepo; + + private final ScheduleLessonRepository scheduleLessonRepo; private final UserCurriculumRepository userCurriculumRepo; + private final UserService userServ; private final CourseRepository courseRepo; private final CurriculumCourseRepository curriculumCourseRepo; - public LessonService(LessonRepository lessonRepo, UserCurriculumRepository userCurriculumRepo, CourseRepository courseRepo, CurriculumCourseRepository curriculumCourseRepo){ + public LessonService(LessonRepository lessonRepo, ScheduleLessonRepository scheduleLessonRepo, UserCurriculumRepository userCurriculumRepo, UserService userServ, CourseRepository courseRepo, CurriculumCourseRepository curriculumCourseRepo){ this.lessonRepo = lessonRepo; + this.scheduleLessonRepo = scheduleLessonRepo; this.userCurriculumRepo = userCurriculumRepo; + this.userServ = userServ; this.courseRepo = courseRepo; this.curriculumCourseRepo = curriculumCourseRepo; } @@ -136,7 +138,12 @@ public class LessonService { break; } } - lessonRepo.save(target); + Lesson lesson = lessonRepo.save(target); + ScheduleLesson scheduleLesson = scheduleLessonRepo.findByLesson(lesson); + Iterable users = userCurriculumRepo.findUsersByCurriculum(scheduleLesson.getSchedule().getCurriculum()); + for(User user: users){ + userServ.Notify(user, new Notification("Course modified in the schedule", "Course Modified " + lesson.getCourse().getTitle() , "/#/schedule")); + } return true; } /** diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/ScheduleLessonService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/ScheduleLessonService.java index d89fa01..9e608eb 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/ScheduleLessonService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/ScheduleLessonService.java @@ -9,22 +9,26 @@ 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.Repositories.UserCurriculumRepository; import ovh.herisson.Clyde.Tables.*; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; -import java.util.Optional; @Service public class ScheduleLessonService { private final ScheduleLessonRepository scheduleLessonRepo; + private final UserCurriculumRepository userCurriculumRepo; + private final UserService userServ; private final LessonRepository lessonRepo; private final ScheduleRepository scheduleRepo; - public ScheduleLessonService(ScheduleLessonRepository scheduleLessonRepo, LessonRepository lessonRepo, ScheduleRepository scheduleRepo) { + public ScheduleLessonService(ScheduleLessonRepository scheduleLessonRepo, UserCurriculumRepository userCurriculumRepo, UserService userServ, LessonRepository lessonRepo, ScheduleRepository scheduleRepo) { this.scheduleLessonRepo = scheduleLessonRepo; + this.userCurriculumRepo = userCurriculumRepo; + this.userServ = userServ; this.lessonRepo = lessonRepo; this.scheduleRepo = scheduleRepo; } @@ -32,19 +36,22 @@ public class ScheduleLessonService { if(scheduleLesson == null) return false; scheduleLessonRepo.save(scheduleLesson); + Iterable users = userCurriculumRepo.findUsersByCurriculum(scheduleLesson.getSchedule().getCurriculum()); + for(User user: users){ + userServ.Notify(user, new Notification("New course in the schedule", "Course added " + scheduleLesson.getLesson().getCourse().getTitle(), "/#/schedule")); + } return true; } /** * Save a lesson to all the schedule it is linked */ - public boolean saveToAllSchedule(Lesson lesson){ + public void saveToAllSchedule(Lesson lesson){ Iterable schedules = scheduleRepo.findAllLessonSchedule(lesson.getCourse()); if(schedules == null) - return false; + return; for (Schedule schedule : schedules){ save(new ScheduleLesson(schedule, lesson)); } - return true; } /** * Delete a scheduleLesson via its lesson @@ -52,6 +59,11 @@ public class ScheduleLessonService { public boolean delete(long lessonId){ if(lessonId == 0) return false; + ScheduleLesson scheduleLesson = scheduleLessonRepo.findByLesson(lessonRepo.findById(lessonId)); + Iterable users = userCurriculumRepo.findUsersByCurriculum(scheduleLesson.getSchedule().getCurriculum()); + for(User user: users){ + userServ.Notify(user, new Notification("Course deleted in the schedule","Course deleted " + scheduleLesson.getLesson().getCourse().getTitle(), "/#/schedule")); + } scheduleLessonRepo.delete(lessonRepo.findById(lessonId)); return true; } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java index 6b724de..3a30fe7 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java @@ -11,6 +11,7 @@ import ovh.herisson.Clyde.Tables.Msg.Discussion; import ovh.herisson.Clyde.Tables.Msg.Message; import ovh.herisson.Clyde.Tables.Notification.Status; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -40,7 +41,7 @@ public class User { @JsonIgnore @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) - private List notifications; + private List notifications = new ArrayList<>(); ////// Extension Messagerie ///// @JsonIgnore