@@ -8,6 +8,7 @@ namespace LearningHub.Nhs.OpenApi.Services.Services
88 using System . Threading . Tasks ;
99 using LearningHub . Nhs . Models . Entities . Activity ;
1010 using LearningHub . Nhs . Models . Entities . Resource ;
11+ using LearningHub . Nhs . Models . ViewModels . Helpers ;
1112 using LearningHub . Nhs . OpenApi . Models . Exceptions ;
1213 using LearningHub . Nhs . OpenApi . Models . ViewModels ;
1314 using LearningHub . Nhs . OpenApi . Repositories . Interface . Repositories ;
@@ -76,7 +77,7 @@ public async Task<ResourceReferenceWithResourceDetailsViewModel> GetResourceRefe
7677 resourceActivities = ( await this . resourceRepository . GetResourceActivityPerResourceMajorVersion ( resourceIds , userIds ) ) ? . ToList ( ) ?? new List < ResourceActivityDTO > ( ) { } ;
7778 }
7879
79- return this . GetResourceReferenceWithResourceDetailsViewModel ( resourceReference ) ;
80+ return this . GetResourceReferenceWithResourceDetailsViewModel ( resourceReference , resourceActivities ) ;
8081 }
8182 catch ( InvalidOperationException exception )
8283 {
@@ -92,6 +93,9 @@ public async Task<ResourceReferenceWithResourceDetailsViewModel> GetResourceRefe
9293 /// <returns>the resource.</returns>
9394 public async Task < BulkResourceReferenceViewModel > GetResourceReferencesByOriginalIds ( List < int > originalResourceReferenceIds , int ? currentUserId )
9495 {
96+ List < ResourceActivityDTO > resourceActivities = new List < ResourceActivityDTO > ( ) { } ;
97+ List < MajorVersionIdActivityStatusDescription > majorVersionIdActivityStatusDescription = new List < MajorVersionIdActivityStatusDescription > ( ) { } ;
98+
9599 var resourceReferences = await this . resourceRepository . GetResourceReferencesByOriginalResourceReferenceIds ( originalResourceReferenceIds ) ;
96100 var resourceReferencesList = resourceReferences . ToList ( ) ;
97101 var matchedIds = resourceReferencesList . Select ( r => r . OriginalResourceReferenceId ) . ToList ( ) ;
@@ -107,18 +111,33 @@ public async Task<BulkResourceReferenceViewModel> GetResourceReferencesByOrigina
107111 this . logger . LogWarning ( $ "Multiple resource references found with OriginalResourceReferenceId { duplicateIds . First ( ) } ") ;
108112 }
109113
110- var matchedResources = resourceReferencesList
111- . Select ( this . GetResourceReferenceWithResourceDetailsViewModel )
112- . ToList ( ) ;
114+ if ( currentUserId . HasValue )
115+ {
116+ List < int > resourceIds = resourceReferencesList . Select ( rrl => rrl . ResourceId ) . ToList ( ) ;
117+ List < int > userIds = new List < int > ( ) { currentUserId . Value } ;
118+
119+ resourceActivities = ( await this . resourceRepository . GetResourceActivityPerResourceMajorVersion ( resourceIds , userIds ) ) ? . ToList ( ) ?? new List < ResourceActivityDTO > ( ) { } ;
120+ }
121+
122+ List < ResourceReferenceWithResourceDetailsViewModel > matchedResources = resourceReferencesList
123+ . Select ( rr => this . GetResourceReferenceWithResourceDetailsViewModel ( rr , resourceActivities . Where ( ra => ra . ResourceId == rr . ResourceId ) . ToList ( ) ) )
124+ . ToList < ResourceReferenceWithResourceDetailsViewModel > ( ) ;
113125
114126 return new BulkResourceReferenceViewModel ( matchedResources , unmatchedIds ) ;
115127 }
116128
117- private ResourceReferenceWithResourceDetailsViewModel GetResourceReferenceWithResourceDetailsViewModel ( ResourceReference resourceReference )
129+ private ResourceReferenceWithResourceDetailsViewModel GetResourceReferenceWithResourceDetailsViewModel ( ResourceReference resourceReference , List < ResourceActivityDTO > resourceActivities )
118130 {
119131 var hasCurrentResourceVersion = resourceReference . Resource . CurrentResourceVersion != null ;
120132 var hasRating = resourceReference . Resource . CurrentResourceVersion ? . ResourceVersionRatingSummary != null ;
121133
134+ List < MajorVersionIdActivityStatusDescription > majorVersionIdActivityStatusDescription = new List < MajorVersionIdActivityStatusDescription > ( ) { } ;
135+
136+ if ( resourceActivities != null && resourceActivities . Count != 0 )
137+ {
138+ majorVersionIdActivityStatusDescription = ActivityStatusHelper . GetMajorVersionIdActivityStatusDescriptionLSPerResource ( resourceReference . Resource , resourceActivities ) . ToList ( ) ;
139+ }
140+
122141 if ( resourceReference . Resource == null )
123142 {
124143 throw new Exception ( "No matching resource" ) ;
@@ -147,8 +166,10 @@ private ResourceReferenceWithResourceDetailsViewModel GetResourceReferenceWithRe
147166 resourceReference . Resource . CurrentResourceVersion ? . Description ?? string . Empty ,
148167 resourceReference . GetCatalogue ( ) ,
149168 resourceTypeNameOrEmpty ,
169+ resourceReference . Resource ? . CurrentResourceVersion ? . MajorVersion ?? 0 ,
150170 resourceReference . Resource ? . CurrentResourceVersion ? . ResourceVersionRatingSummary ? . AverageRating ?? 0 ,
151- this . learningHubService . GetResourceLaunchUrl ( resourceReference . OriginalResourceReferenceId ) ) ;
171+ this . learningHubService . GetResourceLaunchUrl ( resourceReference . OriginalResourceReferenceId ) ,
172+ majorVersionIdActivityStatusDescription ) ;
152173 }
153174 }
154175}
0 commit comments