using Microsoft.AspNetCore.Mvc; using SameBeat.Application.Interfejsy; namespace SameBeat.Api.Controllers; /// /// Zarzadzanie poczekalnia przez hosta. Trasa zaczyna sie od "api/host", wiec jest automatycznie /// chroniona [Authorize] przez KonwencjaAutoryzacjiHosta. /// [ApiController] [Route("api/host/waiting-room")] public class HostWaitingRoomController : ControllerBase { private readonly ISerwisPoczekalni _serwisPoczekalni; public HostWaitingRoomController(ISerwisPoczekalni serwisPoczekalni) { _serwisPoczekalni = serwisPoczekalni; } /// Lista oczekujacych (tylko Status=Oczekuje) dla biezacego wydarzenia. [HttpGet] public async Task PobierzOczekujacychAsync(CancellationToken token) { var wynik = await _serwisPoczekalni.PobierzOczekujacychAsync(token); if (!wynik.Sukces || wynik.Dane is null) { return BadRequest(new { blad = wynik.Blad }); } return Ok(wynik.Dane); } [HttpPost("{id:guid}/reject")] public async Task OdrzucAsync(Guid id, CancellationToken token) { var wynik = await _serwisPoczekalni.OdrzucAsync(id, token); if (!wynik.Sukces) { return NotFound(new { blad = wynik.Blad }); } return Ok(new { sukces = true }); } [HttpPost("{id:guid}/ban")] public async Task ZbanujAsync(Guid id, CancellationToken token) { var wynik = await _serwisPoczekalni.ZbanujAsync(id, token); if (!wynik.Sukces) { return NotFound(new { blad = wynik.Blad }); } return Ok(new { sukces = true }); } }