package uk.ac.ox.oucs.vle.email; import uk.ac.ox.oucs.vle.CourseSignup; import uk.ac.ox.oucs.vle.CourseSignupService; import uk.ac.ox.oucs.vle.CourseSignupService.Status; import static uk.ac.ox.oucs.vle.CourseSignupService.Status.*; /** * Rule for when someone is rejected from attending a module when they were accepted. */ public class RejectedAcceptedEmailRule extends EmailRule { @Override public boolean matches(StateChange stateChange) { return Status.matches(stateChange.getOldStatus(), ACCEPTED) && Status.matches(stateChange.getSignup().getStatus(), REJECTED); } @Override public void perform(StateChange stateChange) { CourseSignup signup = stateChange.getSignup(); String placementId = stateChange.getPlacement(); if (signup.getSupervisor() == null) { service.sendStudentSignupEmail( signup, "reject-admin.student.subject", "reject-admin.student.body", new Object[] {proxy.getCurrentUser().getDisplayName(), proxy.getMyUrl(placementId)}); } else { // This may tell the user that the supervisor rejected them, when infact the user might have // been the administrator at the time. service.sendStudentSignupEmail( signup, "reject-supervisor.student.subject", "reject-supervisor.student.body", new Object[] {signup.getSupervisor().getName(), proxy.getMyUrl(placementId)}); } service.savePlacement(stateChange.getSignup().getUser().getId(), stateChange.getPlacement()); } }