This commit is contained in:
@@ -1,72 +0,0 @@
|
||||
namespace TaxBaik.Web.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Notification service for real-time admin updates
|
||||
/// SOLID: Single Responsibility - Event notification only
|
||||
/// Uses Blazor Server's built-in SignalR for real-time communication
|
||||
/// </summary>
|
||||
public interface INotificationService
|
||||
{
|
||||
event Func<int, string, Task>? OnInquiryStatusChanged;
|
||||
event Func<int, string, Task>? OnInquiryCreated;
|
||||
event Func<int, string, Task>? OnClientCreated;
|
||||
event Func<int, string, Task>? OnAnnouncementPublished;
|
||||
event Func<int, string, Task>? OnFilingCompleted;
|
||||
|
||||
Task TriggerInquiryStatusChanged(int inquiryId, string status);
|
||||
Task TriggerInquiryCreated(int inquiryId, string name);
|
||||
Task TriggerClientCreated(int clientId, string name);
|
||||
Task TriggerAnnouncementPublished(int announcementId, string title);
|
||||
Task TriggerFilingCompleted(int filingId, string filingType);
|
||||
}
|
||||
|
||||
public class NotificationService : INotificationService
|
||||
{
|
||||
private readonly ILogger<NotificationService> _logger;
|
||||
|
||||
public NotificationService(ILogger<NotificationService> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public event Func<int, string, Task>? OnInquiryStatusChanged;
|
||||
public event Func<int, string, Task>? OnInquiryCreated;
|
||||
public event Func<int, string, Task>? OnClientCreated;
|
||||
public event Func<int, string, Task>? OnAnnouncementPublished;
|
||||
public event Func<int, string, Task>? OnFilingCompleted;
|
||||
|
||||
public async Task TriggerInquiryStatusChanged(int inquiryId, string status)
|
||||
{
|
||||
_logger.LogInformation($"Inquiry {inquiryId} status changed to {status}");
|
||||
if (OnInquiryStatusChanged != null)
|
||||
await OnInquiryStatusChanged(inquiryId, status);
|
||||
}
|
||||
|
||||
public async Task TriggerInquiryCreated(int inquiryId, string name)
|
||||
{
|
||||
_logger.LogInformation($"New inquiry {inquiryId} from {name}");
|
||||
if (OnInquiryCreated != null)
|
||||
await OnInquiryCreated(inquiryId, name);
|
||||
}
|
||||
|
||||
public async Task TriggerClientCreated(int clientId, string name)
|
||||
{
|
||||
_logger.LogInformation($"New client {clientId}: {name}");
|
||||
if (OnClientCreated != null)
|
||||
await OnClientCreated(clientId, name);
|
||||
}
|
||||
|
||||
public async Task TriggerAnnouncementPublished(int announcementId, string title)
|
||||
{
|
||||
_logger.LogInformation($"Announcement {announcementId} published: {title}");
|
||||
if (OnAnnouncementPublished != null)
|
||||
await OnAnnouncementPublished(announcementId, title);
|
||||
}
|
||||
|
||||
public async Task TriggerFilingCompleted(int filingId, string filingType)
|
||||
{
|
||||
_logger.LogInformation($"Filing {filingId} ({filingType}) completed");
|
||||
if (OnFilingCompleted != null)
|
||||
await OnFilingCompleted(filingId, filingType);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user