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); } }