using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SameBeat.Application.Interfejsy; namespace SameBeat.Api.Controllers; [ApiController] [Route("api/events")] public class EventsController : ControllerBase { private readonly ISerwisWydarzen _serwisWydarzen; public EventsController(ISerwisWydarzen serwisWydarzen) { _serwisWydarzen = serwisWydarzen; } /// Status pokazywany na stronie glownej -- czy impreza trwa teraz. Dostepne bez logowania. [HttpGet("current")] [AllowAnonymous] public async Task PobierzBiezacyAsync(CancellationToken token) { var status = await _serwisWydarzen.PobierzBiezacyStatusAsync(token); // ukladSceny, sloty, muzyka i mikrofon pozwalaja widzowi na /party znac poczatkowy stan sceny, // muzyki i mikrofonu od razu po wejsciu, zanim przyjdzie pierwszy event SignalR // (ScenaZmieniona/UkladScenyZmieniony/StanMuzykiZmieniony/MikrofonPrzyznany). // Nazwa pola "uklad" (nie "ukladSceny") -- zgodnie z tym, czego oczekuje frontend // (Impreza.tsx) i z tym, jak nazywa to juz GET /api/host/stage (StanScenyDto). // "muzyka" ma dokladnie ten sam ksztalt, co payload SignalR "StanMuzykiZmieniony"; "mikrofon" // ten sam ksztalt co "MikrofonPrzyznany"/"MikrofonOdebrany". return Ok(new { live = status.Live, nazwa = status.Nazwa, uklad = status.UkladSceny, sloty = status.Sloty, muzyka = status.Muzyka, mikrofon = status.Mikrofon }); } }