using SameBeat.Application.DTO;
using SameBeat.Application.Interfejsy;
using SameBeat.Domain.Encje;
namespace SameBeat.Application.Serwisy;
///
/// Buduje StanMuzykiDto z aktualnego stanu Wydarzenie -- wspolne dla SerwisMuzyki (po kazdej akcji
/// hosta / GET stanu) i SerwisWydarzen (GET /api/events/current), zeby ksztalt danych zawsze byl
/// identyczny w obu miejscach (dokladnie ten sam powod, dla ktorego SerwisWydarzen juz dzis dolacza
/// uklad+sloty sceny z IRepozytoriumSceny zamiast miec wlasna kopie logiki).
///
public static class BudowniczyStanuMuzyki
{
public static async Task ZbudujAsync(Wydarzenie wydarzenie, IRepozytoriumUtworow repozytoriumUtworow, CancellationToken token)
{
Utwor? utwor = wydarzenie.UtworId is Guid utworId
? await repozytoriumUtworow.ZnajdzPoIdAsync(utworId, token)
: null;
return new StanMuzykiDto(
wydarzenie.UtworId,
utwor?.Tytul,
utwor?.Wykonawca,
utwor?.Url,
wydarzenie.CzasStartuUtc,
wydarzenie.PozycjaStartowaMs,
wydarzenie.StanOdtwarzania,
wydarzenie.GlosnoscMaster);
}
}