void CompleteAssignment(StoredLearningSession newSession, AssignmentSaver saver) { LearnerAssignmentState newStatus = LearnerAssignmentState.Completed; bool?isFinal = false; if (Assignment.AutoReturn) { newStatus = LearnerAssignmentState.Final; isFinal = true; } if (newSession == null) { float?finalPoints = null; if (Status == LearnerAssignmentState.Active && Assignment.IsELearning) { finalPoints = FinishSession(); } Save(newStatus, isFinal, NonELearningStatus(AttemptStatus.Completed), finalPoints, saver); } else { Save(newStatus, isFinal, NonELearningStatus(AttemptStatus.Completed), newSession.TotalPoints, saver); } Status = newStatus; }
/// <summary>Returns the assignment.</summary> public void Return(AssignmentSaver saver) { CheckUserIsInstructor(); StoredLearningSession session = null; // Check the status switch (Status) { case LearnerAssignmentState.NotStarted: // Force collection & return session = CreateAttemptIfRequired(false); break; case LearnerAssignmentState.Active: // Force collection & return break; case LearnerAssignmentState.Completed: break; case LearnerAssignmentState.Final: // No need to return return; default: // New status added break; } LearnerAssignmentState newStatus = LearnerAssignmentState.Final; if (session == null) { Save(newStatus, true, NonELearningStatus(AttemptStatus.Completed), null, saver); } else { Save(newStatus, true, NonELearningStatus(AttemptStatus.Completed), session.TotalPoints, saver); } Status = newStatus; if (Assignment.EmailChanges) { saver.SendReturnEmail(User, this); } if (Assignment.IsNonELearning) { saver.UpdateDropBoxPermissions(newStatus, User); } }
/// <summary>Saves changes to the assignment.</summary> /// <param name="moveStatusForward">True if move the status forward from an instructor's point of view.</param> /// <param name="returnAssignment">True if assignment should be returned.</param> /// <param name="saver">The <see cref="AssignmentSaver"/> to use.</param> public void Save(bool moveStatusForward, bool returnAssignment, AssignmentSaver saver) { if (returnAssignment) { fullSave = true; Return(saver); } else if (moveStatusForward) { fullSave = true; try { switch (Status) { case LearnerAssignmentState.NotStarted: // Collect as instructor is calling Collect(saver); break; case LearnerAssignmentState.Active: // Collect Collect(saver); break; case LearnerAssignmentState.Completed: // Make Final Return(saver); break; case LearnerAssignmentState.Final: // Reactivate Reactivate(saver); break; } } finally { fullSave = false; } } else { // Just save Assignment.Store.SaveLearnerAssignment(LearnerAssignmentId, IgnoreFinalPoints, FinalPoints, InstructorComments, Grade, null, null, saver.CurrentJob); } }
/// <summary>reactivates the assignment.</summary> public void Reactivate(AssignmentSaver saver) { CheckUserIsInstructor(); // Check the status switch (Status) { case LearnerAssignmentState.NotStarted: throw InvalidTransitionException(LearnerAssignmentState.NotStarted, LearnerAssignmentState.Active); case LearnerAssignmentState.Active: return; // Already active case LearnerAssignmentState.Completed: break; case LearnerAssignmentState.Final: break; default: // New status added break; } LearnerAssignmentState newStatus = LearnerAssignmentState.Active; if (Assignment.IsELearning) { ReactivateSession(); } else { saver.UpdateDropBoxPermissions(newStatus, User); } Save(newStatus, false, NonELearningStatus(AttemptStatus.Active), null, saver); Status = newStatus; if (Assignment.EmailChanges) { saver.SendReactivateEmail(User); } }
/// <summary>Collects the assignment.</summary> public void Collect(AssignmentSaver saver) { CheckUserIsInstructor(); StoredLearningSession session = null; // Check the status switch (Status) { case LearnerAssignmentState.NotStarted: session = CreateAttemptIfRequired(true); break; case LearnerAssignmentState.Active: break; case LearnerAssignmentState.Completed: // No need to collect return; case LearnerAssignmentState.Final: // No need to collect return; default: // New status added break; } CompleteAssignment(session, saver); if (Assignment.EmailChanges) { saver.SendCollectEmail(User); } if (Assignment.IsNonELearning) { saver.UpdateDropBoxPermissions(LearnerAssignmentState.Completed, User); } }
void Save(LearnerAssignmentState newStatus, bool?isFinal, AttemptStatus?nonELearningStatus, float?finalPoints, AssignmentSaver saver) { if (fullSave) { if (saver == null) { throw new ArgumentNullException("saver"); } bool ignoreFinalPoints = finalPoints != null ? false : IgnoreFinalPoints; float?pointsToSend = IgnoreFinalPoints == false ? FinalPoints : finalPoints; Assignment.Store.SaveLearnerAssignment(LearnerAssignmentId, ignoreFinalPoints, pointsToSend, InstructorComments, Grade, isFinal, nonELearningStatus, saver.CurrentJob); } else { bool saveFinalPoints = (finalPoints != null || newStatus == LearnerAssignmentState.Active); Assignment.Store.ChangeLearnerAssignmentState(LearnerAssignmentId, isFinal, nonELearningStatus, saveFinalPoints, finalPoints); } }