package uk.ac.ox.oucs.vle.email; import uk.ac.ox.oucs.vle.CourseGroup; import uk.ac.ox.oucs.vle.CourseSignup; import uk.ac.ox.oucs.vle.CourseSignupService; import uk.ac.ox.oucs.vle.CourseSignupService.Status; import uk.ac.ox.oucs.vle.Person; import static uk.ac.ox.oucs.vle.CourseSignupService.Status.WAITING; /** * When a signup is made and the user is placed onto the waiting list send an email * to the administrator of the course and to the signup. */ public class FullEmailRule extends EmailRule { @Override public boolean matches(StateChange stateChange) { // No old status as it's a new signup. return stateChange.getOldStatus() == null && Status.matches(stateChange.getSignup().getStatus(), WAITING); } @Override public void perform(StateChange stateChange) { CourseSignup signup = stateChange.getSignup(); CourseGroup group = signup.getGroup(); for (Person administrator : group.getAdministrators()) { service.sendSignupEmail( administrator.getId(), signup, "waiting.admin.subject", "waiting.admin.body", new Object[]{proxy.getAdminUrl()}); service.savePlacement(administrator.getId(), stateChange.getPlacement()); } String myUrl = proxy.getMyUrl(); service.sendStudentSignupEmail(signup, "waiting.student.subject", "waiting.student.body", new Object[]{myUrl}); } }