Пример #1
0
        private decimal CalculateRecommendedLearningScore(
            ResourceReferenceWithResourceDetails resource,
            List <CompetencyLearningResource> competencyLearningResources,
            int selfAssessmentId,
            int delegateId
            )
        {
            var clrsForResource =
                competencyLearningResources.Where(clr => clr.LearningHubResourceReferenceId == resource.RefId).ToList();

            var competencyResourceAssessmentQuestionParameters =
                competencyLearningResourcesDataService
                .GetCompetencyResourceAssessmentQuestionParameters(clrsForResource.Select(clr => clr.Id)).ToList();

            var essentialnessValue = CalculateEssentialnessValue(competencyResourceAssessmentQuestionParameters);

            var learningHubRating = resource.Rating;

            var requirementAdjuster = CalculateRequirementAdjuster(
                clrsForResource,
                competencyResourceAssessmentQuestionParameters,
                selfAssessmentId,
                delegateId
                );

            return(essentialnessValue + learningHubRating * 4 + requirementAdjuster);
        }
Пример #2
0
 public LearningHubLoginWarningViewModel(
     ResourceReferenceWithResourceDetails resource,
     bool learningHubAccountLinked,
     bool apiIsAccessible
     )
 {
     ResourceRefId = resource.RefId;
     ResourceTitle = resource.Title;
     LearningHubLoginWarningDismissed = false;
     LearningHubAccountLinked         = learningHubAccountLinked;
     ApiIsAccessible = apiIsAccessible;
 }
Пример #3
0
 public ActionPlanResource(LearningLogItem learningLogItem, ResourceReferenceWithResourceDetails resource)
 {
     Name                = resource.Title;
     Id                  = learningLogItem.LearningLogItemId;
     StartedDate         = learningLogItem.LoggedDate;
     CompleteByDate      = learningLogItem.DueDate;
     Completed           = learningLogItem.CompletedDate;
     RemovedDate         = learningLogItem.ArchivedDate;
     LastAccessed        = learningLogItem.LastAccessedDate;
     ResourceDescription = resource.Description;
     ResourceType        = resource.ResourceType;
     CatalogueName       = resource.Catalogue.Name;
     ResourceLink        = resource.Link;
 }
Пример #4
0
        private RecommendedResource?GetPopulatedRecommendedResource(
            int selfAssessmentId,
            int delegateId,
            int learningHubResourceReferenceId,
            IEnumerable <LearningLogItem> delegateLearningLogItems,
            ResourceReferenceWithResourceDetails rr,
            List <CompetencyLearningResource> competencyLearningResources
            )
        {
            var learningLogItemsForResource = delegateLearningLogItems.Where(
                ll => ll.ArchivedDate == null && ll.LearningHubResourceReferenceId == rr.RefId
                ).ToList();
            var incompleteLearningLogItem =
                learningLogItemsForResource.SingleOrDefault(ll => ll.CompletedDate == null);

            var clrsForResource =
                competencyLearningResources.Where(clr => clr.LearningHubResourceReferenceId == rr.RefId)
                .ToList();

            var competencyResourceAssessmentQuestionParameters =
                competencyLearningResourcesDataService
                .GetCompetencyResourceAssessmentQuestionParameters(clrsForResource.Select(clr => clr.Id))
                .ToList();

            if (!AreDelegateAnswersWithinRangeToDisplayResource(
                    clrsForResource,
                    competencyResourceAssessmentQuestionParameters,
                    selfAssessmentId,
                    delegateId
                    ))
            {
                return(null);
            }

            return(new RecommendedResource(
                       learningHubResourceReferenceId,
                       rr,
                       incompleteLearningLogItem,
                       learningLogItemsForResource.Any(ll => ll.CompletedDate != null),
                       CalculateRecommendedLearningScore(
                           rr,
                           clrsForResource,
                           competencyResourceAssessmentQuestionParameters,
                           selfAssessmentId,
                           delegateId
                           )
                       ));
        }
Пример #5
0
 public RecommendedResource(
     int resourceReferenceId,
     ResourceReferenceWithResourceDetails resourceReferenceDetails,
     LearningLogItem?incompleteLearningLogItem,
     bool isCompleted,
     decimal recommendationScore
     )
 {
     LearningResourceReferenceId = resourceReferenceId;
     LearningHubReferenceId      = resourceReferenceDetails.RefId;
     ResourceName        = resourceReferenceDetails.Title;
     ResourceDescription = resourceReferenceDetails.Description;
     ResourceType        = resourceReferenceDetails.ResourceType;
     CatalogueName       = resourceReferenceDetails.Catalogue.Name;
     ResourceLink        = resourceReferenceDetails.Link;
     IsInActionPlan      = incompleteLearningLogItem != null;
     IsCompleted         = isCompleted;
     LearningLogId       = incompleteLearningLogItem?.LearningLogItemId;
     RecommendationScore = recommendationScore;
 }
Пример #6
0
        private decimal CalculateRecommendedLearningScore(
            ResourceReferenceWithResourceDetails resource,
            List <CompetencyLearningResource> clrsForResource,
            List <CompetencyResourceAssessmentQuestionParameter> competencyResourceAssessmentQuestionParameters,
            int selfAssessmentId,
            int delegateId
            )
        {
            var essentialnessValue = CalculateEssentialnessValue(competencyResourceAssessmentQuestionParameters);

            var learningHubRating = resource.Rating;

            var requirementAdjuster = CalculateRequirementAdjuster(
                clrsForResource,
                competencyResourceAssessmentQuestionParameters,
                selfAssessmentId,
                delegateId
                );

            return(essentialnessValue + learningHubRating * 4 + requirementAdjuster);
        }
        public async Task ViewResource_returns_redirect_to_login_result_when_user_linked()
        {
            // Given
            var authId          = 1;
            var resourceUrl     = "De/Humani/Corporis/Fabrica";
            var resourceDetails = new ResourceReferenceWithResourceDetails {
                Link = resourceUrl
            };

            A.CallTo(() => userService.GetDelegateUserLearningHubAuthId(A <int> ._)).Returns(authId);
            A.CallTo(() => learningHubResourceService.GetResourceByReferenceId(5))
            .Returns((resourceDetails, false));
            A.CallTo(() => learningHubLinkService.GetLoginUrlForDelegateAuthIdAndResourceUrl(resourceUrl, authId))
            .Returns("www.example.com/login");

            // When
            var result = await controller.ViewResource(5);

            // Then
            result.Should().BeRedirectResult().WithUrl(
                "www.example.com/login"
                );
        }
Пример #8
0
        public void AddResourceToActionPlan_calls_expected_insert_data_service_methods()
        {
            // Given
            const int    learningResourceReferenceId = 1;
            const int    delegateId            = 2;
            const int    selfAssessmentId      = 3;
            const int    candidateAssessmentId = 4;
            const string resourceName          = "Activity";
            const string resourceLink          = "www.test.com";
            const int    learningLogId         = 4;
            const int    learningHubResourceId = 6;

            var addedDate = new DateTime(2021, 11, 1);

            A.CallTo(() => clockService.UtcNow).Returns(addedDate);

            A.CallTo(
                () => learningResourceReferenceDataService.GetLearningHubResourceReferenceById(
                    learningResourceReferenceId
                    )
                ).Returns(learningHubResourceId);

            var resource = new ResourceReferenceWithResourceDetails {
                Title = resourceName, Link = resourceLink
            };

            A.CallTo(() => learningHubResourceService.GetResourceByReferenceId(learningHubResourceId))
            .Returns((resource, true));

            var resourceCompetencies = new[] { 1, 2, 3, 4, 5, 6, 7, 8 };

            A.CallTo(
                () => competencyLearningResourcesDataService.GetCompetencyIdsLinkedToResource(
                    learningResourceReferenceId
                    )
                ).Returns(resourceCompetencies);

            var assessmentCompetencies = new[] { 2, 3, 5, 6, 8, 9, 10 };

            A.CallTo(() => selfAssessmentDataService.GetCompetencyIdsForSelfAssessment(selfAssessmentId))
            .Returns(assessmentCompetencies);

            A.CallTo(() => selfAssessmentDataService.GetCandidateAssessments(delegateId, selfAssessmentId))
            .Returns(
                new[] { Builder <CandidateAssessment> .CreateNew().With(ca => ca.Id = candidateAssessmentId).Build() }
                );

            A.CallTo(
                () => learningLogItemsDataService.InsertLearningLogItem(
                    A <int> ._,
                    A <DateTime> ._,
                    A <string> ._,
                    A <string> ._,
                    A <int> ._
                    )
                ).Returns(learningLogId);

            var expectedMatchingCompetencies = new[] { 2, 3, 5, 6, 8 };

            // When
            actionPlanService.AddResourceToActionPlan(learningResourceReferenceId, delegateId, selfAssessmentId);

            // Then
            A.CallTo(
                () => learningLogItemsDataService.InsertLearningLogItem(
                    delegateId,
                    addedDate,
                    resourceName,
                    resourceLink,
                    learningResourceReferenceId
                    )
                ).MustHaveHappenedOnceExactly();
            A.CallTo(
                () => learningLogItemsDataService.InsertCandidateAssessmentLearningLogItem(
                    candidateAssessmentId,
                    learningLogId
                    )
                ).MustHaveHappenedOnceExactly();

            foreach (var competencyId in expectedMatchingCompetencies)
            {
                A.CallTo(
                    () => learningLogItemsDataService.InsertLearningLogItemCompetencies(
                        learningLogId,
                        competencyId,
                        addedDate
                        )
                    ).MustHaveHappenedOnceExactly();
            }

            A.CallTo(
                () => learningLogItemsDataService.InsertLearningLogItemCompetencies(learningLogId, A <int> ._, addedDate)
                ).MustHaveHappened(5, Times.Exactly);
        }