using Akka.Actor;
using ScadaLink.Commons.Messages.Health;
using ScadaLink.HealthMonitoring;
using ScadaLink.Host.Actors;

namespace ScadaLink.Host;

/// <summary>
/// Sends SiteHealthReport to the local SiteCommunicationActor via Akka ActorSelection.
/// The SiteCommunicationActor forwards it to central.
/// </summary>
public class AkkaHealthReportTransport : IHealthReportTransport
{
    private readonly AkkaHostedService _akkaService;

    public AkkaHealthReportTransport(AkkaHostedService akkaService)
    {
        _akkaService = akkaService;
    }

    public void Send(SiteHealthReport report)
    {
        var actorSystem = _akkaService.ActorSystem;
        if (actorSystem == null) return;

        var siteComm = actorSystem.ActorSelection("/user/site-communication");
        siteComm.Tell(report, ActorRefs.NoSender);
    }
}
