using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Repositories; using static ErsatzTV.Application.Television.Mapper; namespace ErsatzTV.Application.Television; public class GetTelevisionSeasonByIdHandler : IRequestHandler> { private readonly IMediaSourceRepository _mediaSourceRepository; private readonly ITelevisionRepository _televisionRepository; public GetTelevisionSeasonByIdHandler( ITelevisionRepository televisionRepository, IMediaSourceRepository mediaSourceRepository) { _televisionRepository = televisionRepository; _mediaSourceRepository = mediaSourceRepository; } public async Task> Handle( GetTelevisionSeasonById request, CancellationToken cancellationToken) { Option maybeJellyfin = await _mediaSourceRepository.GetAllJellyfin() .Map(list => list.HeadOrNone()); Option maybeEmby = await _mediaSourceRepository.GetAllEmby() .Map(list => list.HeadOrNone()); return await _televisionRepository.GetSeason(request.SeasonId) .MapT(s => ProjectToViewModel(s, maybeJellyfin, maybeEmby)); } }