using EntitlementBLL.Onboarding; using Microsoft.AspNetCore.SignalR; namespace EntitlementSL.Hubs; /// /// Adapts IProvisioningHubContext (BLL) to the strongly-typed IHubContext<ProvisioningHub> — /// mirrors FrameworkSL.Hubs.DataSync.DataSyncHubContext exactly. Registered Scoped in /// Program.cs/EntitlementModule.cs so SignalR infrastructure is injected correctly. /// public class ProvisioningHubContext : IProvisioningHubContext { private readonly IHubContext _hub; public ProvisioningHubContext(IHubContext hub) { _hub = hub; } public async Task PushStageChangedAsync(int clientId, int provisioningJobId, string currentStep, string[] completedSteps, CancellationToken ct) { await _hub.Clients.Group(ProvisioningHub.ClientGroup(clientId)).ReceiveStageChanged( new ProvisioningStageEventDTO(clientId, provisioningJobId, currentStep, completedSteps, null)) .ConfigureAwait(false); } public async Task PushDdlProgressAsync(int clientId, int provisioningJobId, int swChangeRequestId, int scriptsDone, int scriptsTotal, CancellationToken ct) { await _hub.Clients.Group(ProvisioningHub.ClientGroup(clientId)).ReceiveDdlProgress( new ProvisioningDdlProgressDTO(clientId, provisioningJobId, swChangeRequestId, scriptsDone, scriptsTotal)) .ConfigureAwait(false); } public async Task PushCompletedAsync(int clientId, int provisioningJobId, string currentStep, string[] completedSteps, CancellationToken ct) { await _hub.Clients.Group(ProvisioningHub.ClientGroup(clientId)).ReceiveCompleted( new ProvisioningStageEventDTO(clientId, provisioningJobId, currentStep, completedSteps, null)) .ConfigureAwait(false); } public async Task PushFailedAsync(int clientId, int provisioningJobId, string errorMessage, CancellationToken ct) { await _hub.Clients.Group(ProvisioningHub.ClientGroup(clientId)).ReceiveFailed( new ProvisioningStageEventDTO(clientId, provisioningJobId, string.Empty, Array.Empty(), errorMessage)) .ConfigureAwait(false); } }