From 990b928a633dcf02689a2cdf565f8ec0846287f4 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 14 Aug 2025 11:46:40 +0530 Subject: [PATCH] Added proper logs in firebase service --- .../Dtos/Authentication/LoginDto.cs | 8 +++++++- .../Controllers/AuthController.cs | 2 +- Marco.Pms.Services/Service/FirebaseService.cs | 18 ++++++++++++------ 3 files changed, 20 insertions(+), 8 deletions(-) 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()