/// <summary> /// Performs a submission action on an Enrollee. /// Returns true if the Action was successfully performed. /// </summary> public async Task <bool> PerformSubmissionActionAsync(int enrolleeId, SubmissionAction action, bool isAdmin, object additionalParameters = null) { var enrollee = await _context.Enrollees .Include(e => e.PhysicalAddress) .Include(e => e.MailingAddress) .Include(e => e.EnrolmentStatuses) .ThenInclude(es => es.Status) .Include(e => e.EnrolmentStatuses) .ThenInclude(es => es.EnrolmentStatusReasons) .ThenInclude(esr => esr.StatusReason) .Include(e => e.Certifications) .ThenInclude(cer => cer.College) .Include(e => e.Certifications) .ThenInclude(l => l.License) .SingleOrDefaultAsync(e => e.Id == enrolleeId); var allowed = new SubmissionStateEngine().AllowableAction(action, enrollee, isAdmin); if (!allowed) { return(false); } return(await HandleSubmissionActionAsync(action, enrollee, additionalParameters)); }
public void TestAllowableActions_Declined(SubmissionAction action, bool asAdmin) { // Arrange var enrollee = EnrolleeWithCurrentStatus(StatusType.Declined); var expected = (action == SubmissionAction.EnableEditing && asAdmin); // Act var allowed = SubmissionStateEngine.AllowableAction(action, enrollee, asAdmin); // Assert Assert.Equal(expected, allowed); }
public void TestAllowableActions_Editable(SubmissionAction action, bool asAdmin) { // Arrange var enrollee = EnrolleeWithCurrentStatus(StatusType.Editable); var expected = (action == SubmissionAction.LockProfile && asAdmin) || (action == SubmissionAction.DeclineProfile && asAdmin); // Act var allowed = SubmissionStateEngine.AllowableAction(action, enrollee, asAdmin); // Assert Assert.Equal(expected, allowed); }
public void TestAllowableActions_RequiresToa(SubmissionAction action, bool asAdmin) { // Arrange var enrollee = EnrolleeWithCurrentStatus(StatusType.RequiresToa); var expected = (action == SubmissionAction.AcceptToa && !asAdmin) || (action == SubmissionAction.DeclineToa && !asAdmin) || (action == SubmissionAction.EnableEditing && asAdmin) || (action == SubmissionAction.LockProfile && asAdmin) || (action == SubmissionAction.DeclineProfile && asAdmin); // Act var allowed = SubmissionStateEngine.AllowableAction(action, enrollee, asAdmin); // Assert Assert.Equal(expected, allowed); }
public void TestAllowableActions_UnderReview(SubmissionAction action, bool asAdmin) { // Arrange var enrollee = EnrolleeWithCurrentStatus(StatusType.UnderReview); var expected = (action == SubmissionAction.Approve && asAdmin) || (action == SubmissionAction.EnableEditing && asAdmin) || (action == SubmissionAction.LockProfile && asAdmin) || (action == SubmissionAction.DeclineProfile && asAdmin) || (action == SubmissionAction.RerunRules && asAdmin); // Act var allowed = SubmissionStateEngine.AllowableAction(action, enrollee, asAdmin); // Assert Assert.Equal(expected, allowed); }