@@ -182,14 +182,23 @@ public async Task<Tuple<int, MyLearningDetailedItemViewModel>> GetResourceCertif
182182
183183 if ( activityEntities . Any ( ) )
184184 {
185- var filteredActivities = new List < ResourceActivity > { activityEntities . FirstOrDefault ( x => x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Completed ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Launched ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Passed ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Downloaded ) ) } ;
186- if ( filteredActivities . FirstOrDefault ( ) != null )
185+ ResourceActivity filteredActivity = null ;
186+ if ( activityEntities . FirstOrDefault ( ) ? . Resource . ResourceTypeEnum == ResourceTypeEnum . Audio || activityEntities . FirstOrDefault ( ) ? . Resource . ResourceTypeEnum == ResourceTypeEnum . Video )
187187 {
188- var result = await this . PopulateMyLearningDetailedItemViewModels ( filteredActivities , userId ) ;
188+ filteredActivity = activityEntities . Where ( x => x . MediaResourceActivity != null && x . MediaResourceActivity . Any ( x => x . PercentComplete == 100 ) ) . OrderByDescending ( x => x . ActivityStart ) . FirstOrDefault ( ) ;
189+ }
190+ else
191+ {
192+ filteredActivity = activityEntities . Where ( x => x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Completed ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Launched ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Passed ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Downloaded ) ) . OrderByDescending ( x => x . ActivityStart ) . FirstOrDefault ( ) ;
193+ }
194+
195+ if ( filteredActivity != null )
196+ {
197+ var result = await this . PopulateMyLearningDetailedItemViewModels ( new List < ResourceActivity > { filteredActivity } , userId ) ;
189198 myLearningDetailedItemViewModel = result . FirstOrDefault ( ) ;
190- if ( filteredActivities . FirstOrDefault ( ) . Resource . ResourceTypeEnum == ResourceTypeEnum . Scorm )
199+ if ( filteredActivity . Resource . ResourceTypeEnum == ResourceTypeEnum . Scorm )
191200 {
192- var sa = this . scormActivityRepository . GetAll ( ) . OrderByDescending ( x => x . Id ) . Where ( x => x . ResourceActivity . ResourceVersionId == filteredActivities . FirstOrDefault ( ) . ResourceVersionId && x . CreateUserId == filteredActivities . FirstOrDefault ( ) . UserId ) ;
201+ var sa = this . scormActivityRepository . GetAll ( ) . OrderByDescending ( x => x . Id ) . Where ( x => x . ResourceActivity . ResourceVersionId == filteredActivity . ResourceVersionId && x . CreateUserId == filteredActivity . UserId ) ;
193202 if ( sa . Any ( ) )
194203 {
195204 myLearningDetailedItemViewModel . ActivityDurationSeconds = 0 ;
@@ -199,9 +208,9 @@ public async Task<Tuple<int, MyLearningDetailedItemViewModel>> GetResourceCertif
199208 }
200209 }
201210 }
202- else if ( filteredActivities . FirstOrDefault ( ) . Resource . ResourceTypeEnum == ResourceTypeEnum . Video || filteredActivities . FirstOrDefault ( ) . Resource . ResourceTypeEnum == ResourceTypeEnum . Audio )
211+ else if ( filteredActivity . Resource . ResourceTypeEnum == ResourceTypeEnum . Video || filteredActivity . Resource . ResourceTypeEnum == ResourceTypeEnum . Audio )
203212 {
204- var ma = this . mediaResourceActivity . GetAll ( ) . OrderByDescending ( x => x . Id ) . Where ( x => x . ResourceActivity . ResourceVersionId == filteredActivities . FirstOrDefault ( ) . ResourceVersionId && x . CreateUserId == filteredActivities . FirstOrDefault ( ) . UserId ) ;
213+ var ma = this . mediaResourceActivity . GetAll ( ) . OrderByDescending ( x => x . Id ) . Where ( x => x . ResourceActivity . ResourceVersionId == filteredActivity . ResourceVersionId && x . CreateUserId == filteredActivity . UserId ) ;
205214 if ( ma . Any ( ) )
206215 {
207216 myLearningDetailedItemViewModel . ActivityDurationSeconds = 0 ;
@@ -259,11 +268,19 @@ public async Task<List<MyLearningDetailedItemViewModel>> PopulateMyLearningDetai
259268 latestActivityCheck = latestActivityCheck . Where ( x => x . AssessmentResourceActivity . FirstOrDefault ( ) != null && x . AssessmentResourceActivity . FirstOrDefault ( ) . Score . HasValue && ( ( int ) Math . Round ( x . AssessmentResourceActivity . FirstOrDefault ( ) . Score . Value , MidpointRounding . AwayFromZero ) >= x . ResourceVersion . AssessmentResourceVersion . PassMark ) ) . ToList ( ) ;
260269 }
261270
262- var expectedActivities = latestActivityCheck . Where ( x => x . Id == resourceActivity . Id && ( x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Completed ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Launched ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Passed ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Downloaded ) ) ) . OrderByDescending ( x => x . ActivityStart ) . FirstOrDefault ( ) ;
271+ ResourceActivity expectedActivity = null ;
272+ if ( resourceActivity . Resource . ResourceTypeEnum == ResourceTypeEnum . Audio || resourceActivity . Resource . ResourceTypeEnum == ResourceTypeEnum . Video )
273+ {
274+ expectedActivity = latestActivityCheck . Where ( x => x . Id == resourceActivity . Id && x . MediaResourceActivity != null && x . MediaResourceActivity . Any ( x => x . PercentComplete == 100 ) ) . OrderByDescending ( x => x . ActivityStart ) . FirstOrDefault ( ) ;
275+ }
276+ else
277+ {
278+ expectedActivity = latestActivityCheck . Where ( x => x . Id == resourceActivity . Id && ( x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Completed ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Launched ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Passed ) || x . ActivityStatusId == ( ( int ) ActivityStatusEnum . Downloaded ) ) ) . OrderByDescending ( x => x . ActivityStart ) . FirstOrDefault ( ) ;
279+ }
263280
264- if ( latestActivityCheck . Any ( ) && expectedActivities != null )
281+ if ( latestActivityCheck . Any ( ) && expectedActivity != null )
265282 {
266- if ( latestActivityCheck . OrderByDescending ( x => x . ActivityStart ) . FirstOrDefault ( ) . Id == expectedActivities . Id )
283+ if ( latestActivityCheck . OrderByDescending ( x => x . ActivityStart ) . FirstOrDefault ( ) . Id == expectedActivity . Id )
267284 {
268285 viewModel . CertificateEnabled = resourceActivity . ResourceVersion . CertificateEnabled . GetValueOrDefault ( false ) ;
269286 }
0 commit comments