using FBCKBLL.Interfaces; using FBCKDAL.DTOs; using FBCKSL.Hubs; using GB5Shared.DTO.Framework.Login; using Microsoft.AspNetCore.SignalR; namespace FBCKSL.Infrastructure; public class FBCKNotificationService : IFBCKNotificationService { private readonly IHubContext _hub; public FBCKNotificationService(IHubContext hub) => _hub = hub; public async Task NotifyMemoSentAsync(MemoDTO memo, CancellationToken ct) { var group = $"fbck:user:{memo.ToEmployeeId}"; await _hub.Clients.Group(group).ReceiveMemoNotification(memo); } public async Task NotifyRecognitionGivenAsync(RecognitionDTO recognition, LoginDTO login, CancellationToken ct) { // Always push to the recipient's user group await _hub.Clients.Group($"fbck:user:{recognition.ToEmployeeId}").ReceiveRecognitionNotification(recognition); // Public recognitions also broadcast to tenant-wide group (recognition wall feed) if (recognition.IsPublic) await _hub.Clients.Group($"fbck:client:{login.ClientId}").ReceiveRecognitionNotification(recognition); } }