using SameBeat.Application.DTO;
using SameBeat.Domain.Encje;
namespace SameBeat.Application.Interfejsy;
public interface IRepozytoriumSceny
{
/// Wiersz slotu (zajety albo wolny) dla danego wydarzenia i numeru, jesli kiedykolwiek zostal utworzony.
Task ZnajdzPoNumerzeAsync(Guid wydarzenieId, int numerSlotu, CancellationToken token = default);
///
/// Slot, ktory aktualnie zajmuje dany uczestnik (jesli w ogole) -- uzywane przez SerwisMikrofonu,
/// zeby dolaczyc numer slotu do StanMikrofonuDto bez ujawniania UczestnikOczekujacyId na zewnatrz.
///
Task ZnajdzPoUczestnikuAsync(Guid wydarzenieId, Guid uczestnikOczekujacyId, CancellationToken token = default);
/// Wszystkie AKTUALNIE zajete sloty danego wydarzenia -- do korekty po zmianie ukladu.
Task> PobierzZajeteDlaWydarzeniaAsync(Guid wydarzenieId, CancellationToken token = default);
///
/// Zajete sloty danego wydarzenia z nickiem uczestnika, gotowe do publicznego zwrotu (SignalR,
/// GET /api/events/current, GET /api/host/stage) -- BEZ UczestnikOczekujacyId, patrz SlotScenyDto.
///
Task> PobierzZajeteZNickamiAsync(Guid wydarzenieId, CancellationToken token = default);
void Dodaj(SlotSceny slot);
}