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.PENDING;
/**
* Send out an an email to course administrators when a new signup is made.
* Also send out an email to the student informing them about the signup.
*/
public class PendingEmailRule extends EmailRule {
@Override
public boolean matches(StateChange stateChange) {
return (stateChange.getOldStatus() == null)
&& Status.matches(stateChange.getSignup().getStatus(), PENDING);
}
@Override
public void perform(StateChange stateChange) {
CourseSignup signup = stateChange.getSignup();
CourseGroup group = signup.getGroup();
String advanceUrl = proxy.getAdvanceUrl(signup.getId(), "accept", null);
String url = proxy.getConfirmUrl(signup.getId());
for (Person administrator : group.getAdministrators()) {
service.sendSignupEmail(
administrator.getId(), signup,
"signup.admin.subject",
"signup.admin.body",
new Object[]{url, advanceUrl});
service.savePlacement(administrator.getId(), stateChange.getPlacement());
}
String myUrl = proxy.getMyUrl();
service.sendStudentSignupEmail(signup,
"signup.student.subject",
"signup.student.body",
new Object[]{myUrl});
}
}