98 lines
3.1 KiB
Java
98 lines
3.1 KiB
Java
package ovh.herisson.Clyde.Services;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import ovh.herisson.Clyde.Repositories.CourseRepository;
|
|
import ovh.herisson.Clyde.Repositories.CurriculumCourseRepository;
|
|
import ovh.herisson.Clyde.Repositories.CurriculumRepository;
|
|
import ovh.herisson.Clyde.Tables.*;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
@Service
|
|
public class CurriculumCourseService {
|
|
|
|
private final CurriculumCourseRepository curriculumCourseRepo;
|
|
|
|
private final CourseRepository courseRepo;
|
|
|
|
private final CurriculumRepository curriculumRepo;
|
|
|
|
public CurriculumCourseService(CurriculumCourseRepository curriculumCourseRepository, CourseRepository courseRepo, CurriculumRepository curriculumRepo) {
|
|
this.curriculumCourseRepo = curriculumCourseRepository;
|
|
this.courseRepo = courseRepo;
|
|
this.curriculumRepo = curriculumRepo;
|
|
}
|
|
|
|
public void save(CurriculumCourse curriculumCourse){
|
|
curriculumCourseRepo.save(curriculumCourse);
|
|
}
|
|
|
|
|
|
public Map<String, Object> getDepthCurriculum(Curriculum curriculum){
|
|
|
|
if (curriculum == null)
|
|
return null;
|
|
|
|
HashMap<String ,Object> toReturn = new HashMap<>();
|
|
ArrayList<Map<String ,Object>> courses = new ArrayList<>();
|
|
Iterable<Course> foundCourses = curriculumCourseRepo.findCoursesByCurriculum(curriculum);
|
|
|
|
for (Course c: foundCourses){
|
|
courses.add(ProtectionService.courseWithoutPassword(c));
|
|
}
|
|
toReturn.put("courses",courses);
|
|
toReturn.put("curriculumId", curriculum.getCurriculumId());
|
|
toReturn.put("year", curriculum.getYear());
|
|
toReturn.put("option", curriculum.getOption());
|
|
toReturn.put("requireCertificate", curriculum.isRequireCertificate());
|
|
|
|
return toReturn;
|
|
}
|
|
|
|
public Iterable<Curriculum> findCurriculumByCourses(Course course){
|
|
return curriculumCourseRepo.findCurriculumByCourses(course);
|
|
}
|
|
|
|
public Iterable<Map<String, Object>> getAllDepthCurriculum(){
|
|
|
|
ArrayList<Map<String,Object>> toReturn = new ArrayList<>();
|
|
|
|
for (Curriculum curriculum : curriculumRepo.findAll()){
|
|
toReturn.add(getDepthCurriculum(curriculum));
|
|
}
|
|
|
|
|
|
return toReturn;
|
|
}
|
|
|
|
/** tries to add all courses to the curriculum
|
|
*
|
|
* @param coursesIds the ids of the courses to be added
|
|
* @param curriculum the curriculum to add the courses to
|
|
* @return if the changes were made
|
|
*/
|
|
public boolean saveAll(Iterable<Long> coursesIds, Curriculum curriculum) {
|
|
|
|
if (curriculum == null || coursesIds == null)
|
|
return false;
|
|
|
|
ArrayList<Course> toAdd = new ArrayList<>();
|
|
for (Long courseId : coursesIds){
|
|
|
|
Course course = courseRepo.findById((long) courseId);
|
|
if (course == null)
|
|
return false;
|
|
|
|
if (!toAdd.contains(course))
|
|
toAdd.add(course);
|
|
}
|
|
|
|
for (Course course : toAdd){
|
|
curriculumCourseRepo.save(new CurriculumCourse(curriculum,course));
|
|
}
|
|
return true;
|
|
}
|
|
}
|