diff --git a/Marco.Pms.Model/Dtos/Authentication/LoginDto.cs b/Marco.Pms.Model/Dtos/Authentication/LoginDto.cs
index ae25906..18ff0ae 100644
--- a/Marco.Pms.Model/Dtos/Authentication/LoginDto.cs
+++ b/Marco.Pms.Model/Dtos/Authentication/LoginDto.cs
@@ -4,6 +4,12 @@
{
public required string Username { get; set; }
public required string Password { get; set; }
- public string? FcmToken { get; set; }
+ }
+
+ public class MobileLoginDto
+ {
+ public required string Username { get; set; }
+ public required string Password { get; set; }
+ public required string FcmToken { get; set; }
}
}
diff --git a/Marco.Pms.Services/Controllers/AuthController.cs b/Marco.Pms.Services/Controllers/AuthController.cs
index 9d9c864..5a8305b 100644
--- a/Marco.Pms.Services/Controllers/AuthController.cs
+++ b/Marco.Pms.Services/Controllers/AuthController.cs
@@ -126,7 +126,7 @@ namespace MarcoBMS.Services.Controllers
/// An IActionResult containing the authentication tokens or an error response.
[HttpPost("login-mobile")]
- public async Task LoginMobile([FromBody] LoginDto loginDto)
+ public async Task LoginMobile([FromBody] MobileLoginDto loginDto)
{
// Log the start of the login attempt for traceability.
_logger.LogInfo("Login attempt initiated for user: {Username}", loginDto.Username ?? "N/A");
diff --git a/Marco.Pms.Services/Service/FirebaseService.cs b/Marco.Pms.Services/Service/FirebaseService.cs
index 4fa531d..e3b0cba 100644
--- a/Marco.Pms.Services/Service/FirebaseService.cs
+++ b/Marco.Pms.Services/Service/FirebaseService.cs
@@ -11,12 +11,12 @@ namespace Marco.Pms.Services.Service
public class FirebaseService : IFirebaseService
{
private readonly IDbContextFactory _dbContextFactory;
- private readonly ILoggingService _logger;
+ private readonly IServiceScopeFactory _serviceScopeFactory;
public FirebaseService(IDbContextFactory dbContextFactory,
- ILoggingService logger)
+ IServiceScopeFactory serviceScopeFactory)
{
_dbContextFactory = dbContextFactory ?? throw new ArgumentNullException(nameof(dbContextFactory));
- _logger = logger ?? throw new ArgumentNullException(nameof(logger));
+ _serviceScopeFactory = serviceScopeFactory ?? throw new ArgumentNullException(nameof(serviceScopeFactory));
}
public async Task SendLoginMessageAsync(string name)
@@ -37,7 +37,6 @@ namespace Marco.Pms.Services.Service
public async Task SendAttendanceMessageAsync(Guid projectId, string Name, ATTENDANCE_MARK_TYPE markType, Guid tenantId)
{
await using var _context = await _dbContextFactory.CreateDbContextAsync();
-
var projectTask = Task.Run(async () =>
{
await using var dbContext = await _dbContextFactory.CreateDbContextAsync();
@@ -143,7 +142,8 @@ namespace Marco.Pms.Services.Service
}
public async Task SendMessageToMultipleDevicesWithDataAsync(List registrationTokens, Notification notificationFirebase, Dictionary data)
{
-
+ using var scope = _serviceScopeFactory.CreateScope();
+ var _logger = scope.ServiceProvider.GetRequiredService();
try
{
var message = new MulticastMessage()
@@ -154,6 +154,7 @@ namespace Marco.Pms.Services.Service
};
// Send the multicast message
var response = await FirebaseMessaging.DefaultInstance.SendEachForMulticastAsync(message);
+
_logger.LogInfo("{SuccessCount} messages were sent successfully.", response.SuccessCount);
if (response.FailureCount > 0)
@@ -184,11 +185,16 @@ namespace Marco.Pms.Services.Service
// Example: await YourTokenService.DeleteTokenAsync(loginDto.DeviceToken);
}
}
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Exception Occured while sending notification to firebase");
+ }
}
public async Task SendMessageToMultipleDevicesAsync(List registrationTokens, Notification notificationFirebase)
{
-
+ using var scope = _serviceScopeFactory.CreateScope();
+ var _logger = scope.ServiceProvider.GetRequiredService();
try
{
var message = new MulticastMessage()