From 886d0bb3b1bc4250a5c130ff8653d21f02ddddcf Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Fri, 10 Oct 2025 18:32:01 +0530 Subject: [PATCH] Clearing the employee profile cache when selecting the tenant --- .../CacheHelper/EmployeeCache.cs | 21 +++++++++++++++++++ .../Controllers/AuthController.cs | 4 ++++ .../Helpers/CacheUpdateHelper.cs | 11 ++++++++++ 3 files changed, 36 insertions(+) diff --git a/Marco.Pms.Helpers/CacheHelper/EmployeeCache.cs b/Marco.Pms.Helpers/CacheHelper/EmployeeCache.cs index 55d1675..2cb9d14 100644 --- a/Marco.Pms.Helpers/CacheHelper/EmployeeCache.cs +++ b/Marco.Pms.Helpers/CacheHelper/EmployeeCache.cs @@ -212,6 +212,27 @@ namespace Marco.Pms.Helpers.CacheHelper return true; } + public async Task ClearAllEmployeesFromCacheByOnlyEmployeeId(Guid employeeId) + { + var employeeIdString = employeeId.ToString(); + + try + { + var filter = Builders.Filter.Eq(e => e.Id, employeeIdString); + + var result = await _collection.DeleteManyAsync(filter); + + if (result.DeletedCount == 0) + return false; + + return true; + } + catch (Exception ex) + { + _logger.LogError(ex, "Error occured while deleting employee profile"); + return false; + } + } public async Task ClearAllEmployeesFromCacheByTenantId(Guid tenantId) { var tenantIdString = tenantId.ToString(); diff --git a/Marco.Pms.Services/Controllers/AuthController.cs b/Marco.Pms.Services/Controllers/AuthController.cs index 426c12d..43a5703 100644 --- a/Marco.Pms.Services/Controllers/AuthController.cs +++ b/Marco.Pms.Services/Controllers/AuthController.cs @@ -7,6 +7,7 @@ using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Utilities; using Marco.Pms.Model.ViewModels.Tenant; +using Marco.Pms.Services.Helpers; using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Service; using Microsoft.AspNetCore.Authorization; @@ -1469,6 +1470,9 @@ namespace MarcoBMS.Services.Controllers // Generate and store refresh token var refreshToken = await _refreshTokenService.CreateRefreshToken(loggedInEmployee.ApplicationUserId, tenantId.ToString(), loggedInEmployee.OrganizationId, _jwtSettings); + var _cache = scope.ServiceProvider.GetRequiredService(); + await _cache.ClearAllEmployeesFromCacheByOnlyEmployeeId(loggedInEmployee.Id); + _logger.LogInfo("Tenant selected and tokens generated for TenantId: {TenantId} and Employee: {EmployeeEmail}", tenantId, loggedInEmployee.Email ?? string.Empty); // Return success response including tokens diff --git a/Marco.Pms.Services/Helpers/CacheUpdateHelper.cs b/Marco.Pms.Services/Helpers/CacheUpdateHelper.cs index 4bea62e..a769991 100644 --- a/Marco.Pms.Services/Helpers/CacheUpdateHelper.cs +++ b/Marco.Pms.Services/Helpers/CacheUpdateHelper.cs @@ -956,6 +956,17 @@ namespace Marco.Pms.Services.Helpers _logger.LogError(ex, "Error occured while deleting all employees from Cache"); } } + public async Task ClearAllEmployeesFromCacheByOnlyEmployeeId(Guid employeeId) + { + try + { + var response = await _employeeCache.ClearAllEmployeesFromCacheByOnlyEmployeeId(employeeId); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error occured while deleting all employees from Cache"); + } + } public async Task ClearAllEmployeesFromCacheByTenantId(Guid tenantId) { try