示例#1
0
        public void CheckProgressForCompletion_does_nothing_if_progress_is_already_completed()
        {
            // Given
            var completedDate          = new DateTime(2022, 1, 1, 1, 1, 1);
            var detailedCourseProgress = ProgressTestHelper.GetDefaultDetailedCourseProgress(completed: completedDate);

            // When
            progressService.CheckProgressForCompletionAndSendEmailIfCompleted(detailedCourseProgress);

            // Then
            A.CallTo(
                () => progressDataService.GetCompletionStatusForProgress(A <int> ._)
                ).MustNotHaveHappened();
        }
        public void CheckProgressForCompletionAndSendEmailIfCompleted(DelegateCourseInfo progress)
        {
            if (progress.Completed != null)
            {
                return;
            }

            var completionStatus = progressDataService.GetCompletionStatusForProgress(progress.ProgressId);

            if (completionStatus > 0)
            {
                progressDataService.SetCompletionDate(progress.ProgressId, DateTime.UtcNow);
                var numLearningLogItemsAffected =
                    learningLogItemsDataService.MarkLearningLogItemsCompleteByProgressId(progress.ProgressId);
                notificationService.SendProgressCompletionNotificationEmail(
                    progress,
                    completionStatus,
                    numLearningLogItemsAffected
                    );
            }
        }