use of fi.otavanopisto.muikku.schooldata.entity.User in project muikku by otavanopisto.
the class PyramusUserSchoolDataBridge method listUsersByEmail.
@Override
public List<User> listUsersByEmail(String email) {
Map<Long, User> userMap = new HashMap<Long, User>();
Long personId = null;
for (Student student : pyramusClient.get("/students/students?email=" + email, Student[].class)) {
userMap.put(student.getId(), createStudentEntity(student));
personId = student.getPersonId();
}
for (StaffMember staffMember : pyramusClient.get("/staff/members?email=" + email, StaffMember[].class)) {
userMap.put(staffMember.getId(), entityFactory.createEntity(staffMember));
personId = staffMember.getPersonId();
}
List<User> result = new ArrayList<User>();
if (personId != null) {
Person person = findPyramusPerson(personId);
if (userMap.containsKey(person.getDefaultUserId())) {
result.add(userMap.remove(person.getDefaultUserId()));
}
}
result.addAll(userMap.values());
return result;
}
use of fi.otavanopisto.muikku.schooldata.entity.User in project muikku by otavanopisto.
the class PyramusUserSchoolDataBridge method createStudentEntities.
private List<User> createStudentEntities(Student... students) {
Map<Long, StudyProgramme> studyProgrammeMap = new HashMap<Long, StudyProgramme>();
List<User> users = new ArrayList<User>();
for (Student student : students) {
StudyProgramme studyProgramme;
String nationality = null;
String language = null;
String municipality = null;
String school = null;
boolean hidden = false;
if (student.getStudyProgrammeId() != null) {
if (!studyProgrammeMap.containsKey(student.getStudyProgrammeId())) {
StudyProgramme studyProgrammeO = pyramusClient.get("/students/studyProgrammes/" + student.getStudyProgrammeId(), StudyProgramme.class);
if (studyProgrammeO != null)
studyProgrammeMap.put(student.getStudyProgrammeId(), studyProgrammeO);
}
studyProgramme = studyProgrammeMap.get(student.getStudyProgrammeId());
} else {
studyProgramme = null;
}
if (student.getNationalityId() != null) {
Nationality nationalityO = pyramusClient.get("/students/nationalities/" + student.getNationalityId(), Nationality.class);
if (nationalityO != null)
nationality = nationalityO.getName();
}
if (student.getLanguageId() != null) {
Language languageO = pyramusClient.get("/students/languages/" + student.getLanguageId(), Language.class);
if (languageO != null)
language = languageO.getName();
}
if (student.getMunicipalityId() != null) {
Municipality municipalityO = pyramusClient.get("/students/municipalities/" + student.getMunicipalityId(), Municipality.class);
if (municipalityO != null)
municipality = municipalityO.getName();
}
if (student.getSchoolId() != null) {
School schoolO = pyramusClient.get("/schools/schools/" + student.getSchoolId(), School.class);
if (schoolO != null)
school = schoolO.getName();
}
if (student.getPersonId() != null) {
Person person = pyramusClient.get("/persons/persons/" + student.getPersonId(), Person.class);
if (person != null)
hidden = person.getSecureInfo() != null ? person.getSecureInfo() : false;
}
String curriculumIdentifier = student.getCurriculumId() != null ? identifierMapper.getCurriculumIdentifier(student.getCurriculumId()).toId() : null;
// #3069: User has evaluation fees if their study program begins with Internetix/
boolean evaluationFees = studyProgramme != null && StringUtils.startsWith(studyProgramme.getName(), "Internetix/");
users.add(entityFactory.createEntity(student, studyProgramme, nationality, language, municipality, school, student.getStudyStartDate(), student.getStudyEndDate(), student.getStudyTimeEnd(), evaluationFees, hidden, curriculumIdentifier));
}
return users;
}
use of fi.otavanopisto.muikku.schooldata.entity.User in project muikku by otavanopisto.
the class UserRESTService method updateStudent.
@PUT
@Path("/students/{ID}")
@RESTPermit(handling = Handling.INLINE)
public Response updateStudent(@PathParam("ID") String id, Student student) {
if (!sessionController.isLoggedIn()) {
return Response.status(Status.FORBIDDEN).build();
}
SchoolDataIdentifier loggedUserIdentifier = sessionController.getLoggedUser();
SchoolDataIdentifier studentIdentifier = SchoolDataIdentifier.fromId(id);
if (studentIdentifier == null) {
return Response.status(Response.Status.BAD_REQUEST).entity(String.format("Invalid studentIdentifier %s", id)).build();
}
if (!(Objects.equals(studentIdentifier.getIdentifier(), loggedUserIdentifier.getIdentifier()) && Objects.equals(studentIdentifier.getDataSource(), loggedUserIdentifier.getDataSource()))) {
return Response.status(Status.FORBIDDEN).entity("Trying to modify non-logged-in student").build();
}
User user = userController.findUserByIdentifier(studentIdentifier);
UserEntity userEntity = userEntityController.findUserEntityByUser(user);
userEntityController.markAsUpdatedByStudent(userEntity);
// TODO: update other fields too
user.setMunicipality(student.getMunicipality());
userController.updateUser(user);
return Response.ok().entity(student).build();
}
use of fi.otavanopisto.muikku.schooldata.entity.User in project muikku by otavanopisto.
the class UserRESTService method findUserBasicInfo.
@GET
@Path("/users/{ID}/basicinfo")
@RESTPermitUnimplemented
public Response findUserBasicInfo(@Context Request request, @PathParam("ID") String id) {
if (!sessionController.isLoggedIn()) {
return Response.status(Status.FORBIDDEN).build();
}
UserEntity userEntity = null;
SchoolDataIdentifier userIdentifier = SchoolDataIdentifier.fromId(id);
if (userIdentifier == null) {
if (!StringUtils.isNumeric(id)) {
return Response.status(Response.Status.BAD_REQUEST).entity(String.format("Invalid user id %s", id)).build();
}
userEntity = userEntityController.findUserEntityById(NumberUtils.createLong(id));
userIdentifier = new SchoolDataIdentifier(userEntity.getDefaultIdentifier(), userEntity.getDefaultSchoolDataSource().getIdentifier());
} else {
userEntity = userEntityController.findUserEntityByUserIdentifier(userIdentifier);
}
if (userEntity == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
EntityTag tag = new EntityTag(DigestUtils.md5Hex(String.valueOf(userEntity.getVersion())));
ResponseBuilder builder = request.evaluatePreconditions(tag);
if (builder != null) {
return builder.build();
}
CacheControl cacheControl = new CacheControl();
cacheControl.setMustRevalidate(true);
schoolDataBridgeSessionController.startSystemSession();
try {
User user = userController.findUserByIdentifier(userIdentifier);
if (user == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
// TODO: User image
boolean hasImage = false;
return Response.ok(new UserBasicInfo(userEntity.getId(), user.getFirstName(), user.getLastName(), user.getNickName(), user.getStudyProgrammeName(), hasImage, user.hasEvaluationFees(), user.getCurriculumIdentifier())).cacheControl(cacheControl).tag(tag).build();
} finally {
schoolDataBridgeSessionController.endSystemSession();
}
}
use of fi.otavanopisto.muikku.schooldata.entity.User in project muikku by otavanopisto.
the class UserRESTService method createRestModel.
private fi.otavanopisto.muikku.rest.model.User createRestModel(UserEntity userEntity, User user) {
// TODO: User Image
boolean hasImage = false;
String emailAddress = userEmailEntityController.getUserDefaultEmailAddress(userEntity, true);
Date startDate = user.getStudyStartDate() != null ? Date.from(user.getStudyStartDate().toInstant()) : null;
Date endDate = user.getStudyTimeEnd() != null ? Date.from(user.getStudyTimeEnd().toInstant()) : null;
return new fi.otavanopisto.muikku.rest.model.User(userEntity.getId(), user.getFirstName(), user.getLastName(), user.getNickName(), hasImage, user.getNationality(), user.getLanguage(), user.getMunicipality(), user.getSchool(), emailAddress, startDate, endDate);
}
Aggregations