Notifications Schedule
This commit is contained in:
		@ -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);
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,9 @@ public interface ScheduleLessonRepository extends CrudRepository<ScheduleLesson,
 | 
			
		||||
    @Query("select distinct sl.schedule from ScheduleLesson sl where sl.schedule.curriculum = ?1")
 | 
			
		||||
    Schedule findScheduleByCurriculum(Curriculum curriculum);
 | 
			
		||||
 | 
			
		||||
    @Query("select distinct sl from ScheduleLesson sl where sl.lesson = ?1")
 | 
			
		||||
    ScheduleLesson findByLesson(Lesson lesson);
 | 
			
		||||
 | 
			
		||||
    @Modifying
 | 
			
		||||
    @Transactional
 | 
			
		||||
    @Query("delete from ScheduleLesson sl where sl.lesson =?1")
 | 
			
		||||
 | 
			
		||||
@ -13,9 +13,11 @@ public interface UserCurriculumRepository extends CrudRepository<UserCurriculum,
 | 
			
		||||
    @Query("select uc.curriculum from UserCurriculum uc where uc.user = ?1")
 | 
			
		||||
    Curriculum findByUser(User student);
 | 
			
		||||
 | 
			
		||||
    @Query("select distinct uc.user from UserCurriculum uc where uc.curriculum = ?1")
 | 
			
		||||
   Iterable<User> findUsersByCurriculum(Curriculum curriculum);
 | 
			
		||||
 | 
			
		||||
    ArrayList<UserCurriculum> findByUserOrderByCurriculum(User student);
 | 
			
		||||
    UserCurriculum findByUserAndCurriculumAndActual(User user, Curriculum curriculum, boolean actual);
 | 
			
		||||
 | 
			
		||||
    ArrayList<UserCurriculum> findByUserAndActual(User user, boolean actual);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<User> 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;
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
 | 
			
		||||
@ -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<User> 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<Schedule> 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<User> 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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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<Notification> notifications; 
 | 
			
		||||
	private List<Notification> notifications = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
	////// Extension Messagerie /////
 | 
			
		||||
	@JsonIgnore
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user