11using System . Collections . Generic ;
22using System . Linq ;
3+ using System . Threading . Tasks ;
34using SnackTime . Core . Session ;
45using SnackTime . MediaServer . Models . ProtoGenerated ;
56using SnackTime . MediaServer . Storage . ProtoGenerated ;
@@ -8,34 +9,38 @@ namespace SnackTime.Core.Media.Episodes
89{
910 public class EpisodeBuilder
1011 {
11- private readonly SessionService _sessionService ;
12+ private readonly ISessionRepoFactory _sessionRepoFactory ;
1213
13- public EpisodeBuilder ( SessionService sessionService )
14+ public EpisodeBuilder ( ISessionRepoFactory sessionRepoFactory )
1415 {
15- _sessionService = sessionService ;
16+ _sessionRepoFactory = sessionRepoFactory ;
1617 }
1718
18- public List < Episode > Build ( IEnumerable < SonarrSharp . Models . Episode > episodes )
19+ public async Task < List < Episode > > Build ( IEnumerable < SonarrSharp . Models . Episode > episodes )
1920 {
20- return episodes . Select ( Build )
21+ var tasks = episodes . Select ( Build ) . ToList ( ) ;
22+ await Task . WhenAll ( tasks ) ;
23+
24+ return tasks . Select ( task => task . Result )
2125 . OrderByDescending ( episode => episode . SeasonNumber )
2226 . ToList ( ) ;
2327 }
2428
25- public Episode Build ( SonarrSharp . Models . Episode episode )
29+ public async Task < Episode > Build ( SonarrSharp . Models . Episode episode )
2630 {
2731 var mediaFileId = new MediaFileId
2832 {
2933 Provider = Providers . Sonarr ,
3034 MediaId = episode . SeriesId ,
3135 FileId = episode . EpisodeFileId ,
3236 } ;
37+ var sessionRepo = await _sessionRepoFactory . GetRepo ( ) ;
3338
34- var allSessionsForCurrentEpisode = _sessionService . GetAll ( )
39+ var allSessionsForCurrentEpisode = ( await sessionRepo . GetAll ( ) )
3540 . Where ( session => session . MediaId == mediaFileId . ToString ( ) )
3641 . ToList ( ) ;
3742
38- var lastSession = allSessionsForCurrentEpisode . OrderBy ( session => session . EndUTC ) . FirstOrDefault ( ) ;
43+ var lastSession = allSessionsForCurrentEpisode . OrderByDescending ( session => session . EndUTC ) . FirstOrDefault ( ) ;
3944
4045 return new Episode
4146 {
0 commit comments