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