using adas_core.Application.Subscriptions;
using adas_core.Domain.Models;
using adas_core.Domain.Models.GroupedObservations;
using MongoDB.Bson;

namespace adas_core.Application.Services.Interfaces;

public interface ISubscriberGroupedService
{
    List<WsSubscriberGrouped> GetGrouped();
    void RemoveGroupedObsByPatientId(string patientId);
    void RemoveWsSubscriberByLocation(string patientId, PatientLocation? newLocation);
    void RemoveWsSubscriberPatientIdAndWsId(string patientId, string wsIdToRemove);
    List<string> CheckEmptySubscriberGroup(WsSubscriberGrouped wsl);
    void AddSubscriberGrouped(WsSubscriberGrouped wsSubscriberGrouped);

    void CheckOnSubscriptionGroup(GroupedField groupedField, ObjectId patientId, string timeZoneId, string connectionId,
        GroupedObservation go);

    void UpdateLastGroupedObsInGroup(string wsgHashCode, GroupedObservation newGroupedObservation);
}