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); }
public LearningHubLoginWarningViewModel( ResourceReferenceWithResourceDetails resource, bool learningHubAccountLinked, bool apiIsAccessible ) { ResourceRefId = resource.RefId; ResourceTitle = resource.Title; LearningHubLoginWarningDismissed = false; LearningHubAccountLinked = learningHubAccountLinked; ApiIsAccessible = apiIsAccessible; }
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; }
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 ) )); }
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; }
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" ); }
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); }