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