using VigilCare.Simulation;

public class ApiPoller : IApiPoller
{
    private readonly VigilCareApiClient _client;
    private readonly HashSet<Guid> _seenAlertIds = new();

    public ApiPoller(VigilCareApiClient client) => _client = client;

    public async Task PollAndDisplayAsync(Guid encounterId, string simTime)
    {
        var news2 = await _client.GetCurrentNews2Async(encounterId);
        var gcs = await _client.GetCurrentGcsAsync(encounterId);
        var sofa = await _client.GetCurrentSofaAsync(encounterId);
        var qsofa = await _client.GetCurrentQsofaAsync(encounterId);

        var allAlerts = await _client.GetAlertsAsync(encounterId);
        var newAlerts = allAlerts.Where(a => _seenAlertIds.Add(a.Id)).ToList();

        var bundle = await _client.GetSepsisBundleAsync(encounterId);

        var result = new PollResult(news2, gcs, sofa, qsofa, newAlerts, bundle);
        SimulatorConsole.PollResults(simTime, result);
    }
}
