/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package net.paulgray.bbrest.people;
import blackboard.data.course.CourseMembership;
import blackboard.data.user.User;
import blackboard.persist.PersistenceException;
import blackboard.persist.course.CourseMembershipDbLoader;
import blackboard.persist.user.UserDbLoader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.paulgray.bbrest.BlackboardUtilities;
import net.paulgray.bbrest.course.BbCourseService;
import net.paulgray.lmsrest.people.PeopleService;
import net.paulgray.lmsrest.people.Person;
import org.springframework.security.access.AccessDeniedException;
/**
*
* @author paul
*/
public class BbPeopleService implements PeopleService {
public List<Person> getPeopleForUserAndCourse(String userId, String courseId) {
try {
if (!BbCourseService.currentUserCanViewCourse(courseId)) {
throw new AccessDeniedException("User cannot view course: " +courseId);
}
Set<Person> people = new HashSet<Person>();
UserDbLoader userDbLoader = UserDbLoader.Default.getInstance();
List<User> users = userDbLoader.loadByCourseId(BlackboardUtilities.getIdFromPk(courseId, blackboard.data.course.Course.class));
List<CourseMembership> courseMemberships = CourseMembershipDbLoader.Default.getInstance().loadByCourseIdWithUserInfo(BlackboardUtilities.getIdFromPk(courseId, blackboard.data.course.Course.class));
for (CourseMembership enrollment : courseMemberships) {
if(enrollment.getRole() != null){
for(User user : users){
if(user.getId().equals(enrollment.getUserId())){
people.add(new BbPerson(user, enrollment.getRole().getFieldName()));
}
}
}
}
return new ArrayList(people);
} catch (PersistenceException ex) {
Logger.getLogger(BbPeopleService.class.getName()).log(Level.SEVERE, null, ex);
return new LinkedList<Person>();
}
}
}