using adas_core.Domain.Enums;
using adas_core.Domain.Models;
using adas_core.Domain.Models.Filter;
using adas_core.Domain.Models.MongoModels;
using adas_core.Domain.Models.Responses;
using MongoDB.Bson;

namespace adas_core.Application.Services.Interfaces;

public interface ILightBeaconService
{
    Task SendColor(ObjectId pocId, LightBeaconColor color);
    Task SendColor(PointOfCare pocId, LightBeaconColor color);
    Task SendBeaconBroadcast(PointOfCare poc, LightBeaconColor color);
    Task SendBeaconBroadcast(ObjectId poc, LightBeaconColor color);
    Task PowerOffLed(ObjectId pocId);
    Task PowerOffLed(PointOfCare poc);

    void GenerateColorAlert(PatientObservation obs);

    //TODO refactor, one patient can have multiple beacons
    public Task<LightBeaconColor> GetColor(ObjectId pocId);
    public Task<LightBeaconColor> GetColor(PointOfCare poc);
    Task<LightBeacon?> UpdateOne(LightBeacon beacon);
    Task<LightBeacon?> InsertOne(LightBeacon beacon);
    Task<PaginationResponse<LightBeacon>> GetPaginatedBeacons(PaginationFilter request);
    Task<List<LightBeacon>> GetSearchByName(string textToSearch);
}