106 lines
4.1 KiB
Java
106 lines
4.1 KiB
Java
package ovh.herisson.Clyde.Services;
|
|
|
|
/******************************************************
|
|
* @file ScheduleLessonService.java
|
|
* @author William Karpinski
|
|
* @scope Extension Horaire
|
|
******************************************************/
|
|
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;
|
|
|
|
@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, UserCurriculumRepository userCurriculumRepo, UserService userServ, LessonRepository lessonRepo, ScheduleRepository scheduleRepo) {
|
|
this.scheduleLessonRepo = scheduleLessonRepo;
|
|
this.userCurriculumRepo = userCurriculumRepo;
|
|
this.userServ = userServ;
|
|
this.lessonRepo = lessonRepo;
|
|
this.scheduleRepo = scheduleRepo;
|
|
}
|
|
public boolean save(ScheduleLesson scheduleLesson){
|
|
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 void saveToAllSchedule(Lesson lesson){
|
|
Iterable<Schedule> schedules = scheduleRepo.findAllLessonSchedule(lesson.getCourse());
|
|
if(schedules == null)
|
|
return;
|
|
for (Schedule schedule : schedules){
|
|
save(new ScheduleLesson(schedule, lesson));
|
|
}
|
|
}
|
|
/**
|
|
* Delete a scheduleLesson via its lesson
|
|
*/
|
|
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;
|
|
}
|
|
|
|
public Schedule getScheduleByCurriculum(Curriculum curriculum){
|
|
return scheduleLessonRepo.findScheduleByCurriculum(curriculum);
|
|
}
|
|
/**
|
|
* Return a schedule and the list of lessons that corresponds
|
|
*/
|
|
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());
|
|
toReturn.put("curriculum", schedule.getCurriculum());
|
|
return toReturn;
|
|
}
|
|
/**
|
|
* Return all the schedules
|
|
*/
|
|
public Iterable<Map<String,Object>> getAllSchedule(){
|
|
ArrayList<Map<String,Object>> toReturn = new ArrayList<>();
|
|
|
|
for (Schedule schedule: scheduleRepo.findAll()){
|
|
toReturn.add(getDepthScheduleBySchedule(schedule));
|
|
}
|
|
return toReturn;
|
|
}
|
|
|
|
}
|