package uk.ac.ox.oucs.vle.email;
import uk.ac.ox.oucs.vle.CourseDepartment;
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.APPROVED;
/**
* When a signup is approved an email goes out asking for department approvers to
* allow the signup.
*/
public class ApprovedEmailRule extends EmailRule {
@Override
public boolean matches(StateChange stateChange) {
return Status.matches(stateChange.getSignup().getStatus(), APPROVED);
}
@Override
public void perform(StateChange stateChange) {
String signupId = stateChange.getSignup().getId();
String placementId = stateChange.getPlacement();
CourseSignup signup = stateChange.getSignup();
CourseDepartment department= stateChange.getDepartment();
for (String approverId : department.getApprovers()) {
String url = proxy.getApproveUrl(signupId, placementId);
String advanceUrl = proxy.getAdvanceUrl(signup.getId(), "confirm", placementId);
if (approverId != null) {
service.sendSignupEmail(
approverId, signup,
"approval.supervisor.subject",
"approval.supervisor.body",
new Object[]{url, advanceUrl});
service.savePlacement(approverId, placementId);
}
}
}
}