package uk.ac.ox.oucs.vle.email;
import uk.ac.ox.oucs.vle.CourseSignup;
import uk.ac.ox.oucs.vle.CourseSignupImpl;
import uk.ac.ox.oucs.vle.CourseSignupService;
import uk.ac.ox.oucs.vle.Person;
import static uk.ac.ox.oucs.vle.CourseSignupService.Status;
import static uk.ac.ox.oucs.vle.CourseSignupService.Status.*;
/**
* Sends an email to the supervisor about the signup.
*/
public class AcceptedEmailRule extends EmailRule {
@Override
public boolean matches(StateChange stateChange) {
return Status.matches(stateChange.getOldStatus(), PENDING, WAITING) &&
Status.matches(stateChange.getSignup().getStatus(),ACCEPTED);
}
@Override
public void perform(StateChange stateChange) {
CourseSignup signup = stateChange.getSignup();
Person supervisor = signup.getSupervisor();
if (supervisor == null) {
throw new IllegalStateException("Signup without a supervisor can't get approval");
}
String placementId = stateChange.getPlacement();
String url = proxy.getConfirmUrl(signup.getId(), placementId);
String advanceUrl = proxy.getAdvanceUrl(signup.getId(), "approve", placementId);
service.sendSignupEmail(supervisor.getId(), signup,
"approval.supervisor.subject",
"approval.supervisor.body",
new Object[]{url, advanceUrl});
service.savePlacement(supervisor.getId(), placementId);
}
}