Beispiel #1
0
        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;
        }
Beispiel #2
0
        /// <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);
            }
        }
Beispiel #3
0
        /// <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);
            }
        }
Beispiel #4
0
        /// <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);
            }
        }
Beispiel #5
0
        /// <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);
            }
        }
Beispiel #6
0
        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);
            }
        }