diff --git a/Marco.Pms.Helpers/CacheHelper/FeatureDetailsHelper.cs b/Marco.Pms.Helpers/Utility/FeatureDetailsHelper.cs similarity index 98% rename from Marco.Pms.Helpers/CacheHelper/FeatureDetailsHelper.cs rename to Marco.Pms.Helpers/Utility/FeatureDetailsHelper.cs index da17988..b8d4096 100644 --- a/Marco.Pms.Helpers/CacheHelper/FeatureDetailsHelper.cs +++ b/Marco.Pms.Helpers/Utility/FeatureDetailsHelper.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using MongoDB.Driver; -namespace Marco.Pms.CacheHelper +namespace Marco.Pms.Helpers.Utility { public class FeatureDetailsHelper { diff --git a/Marco.Pms.Services/Controllers/TenantController.cs b/Marco.Pms.Services/Controllers/TenantController.cs index e6a23e9..64f6a17 100644 --- a/Marco.Pms.Services/Controllers/TenantController.cs +++ b/Marco.Pms.Services/Controllers/TenantController.cs @@ -1,9 +1,10 @@ using AutoMapper; -using Marco.Pms.CacheHelper; using Marco.Pms.DataAccess.Data; +using Marco.Pms.Helpers.Utility; using Marco.Pms.Model.Dtos.Tenant; using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; +using Marco.Pms.Model.MongoDBModels.Utility; using Marco.Pms.Model.Projects; using Marco.Pms.Model.Roles; using Marco.Pms.Model.TenantModels; @@ -922,6 +923,7 @@ namespace Marco.Pms.Services.Controllers // 3. Get PermissionServices from DI inside a fresh scope (rarely needed, but retained for your design). using var scope = _serviceScopeFactory.CreateScope(); var permissionService = scope.ServiceProvider.GetRequiredService(); + var _updateLogHelper = scope.ServiceProvider.GetRequiredService(); // 4. Check user permissions: must be both Root user and have ManageTenants permission. var isRootUser = loggedInEmployee.ApplicationUser?.IsRootUser ?? false; @@ -967,6 +969,7 @@ namespace Marco.Pms.Services.Controllers // 6. If the tenant already has this plan, extend/renew it. if (currentSubscription != null && currentSubscription.PlanId == subscriptionPlan.Id) { + var existingEntityBson = _updateLogHelper.EntityToBsonDocument(currentSubscription); DateTime newEndDate; // 6a. If the subscription is still active, extend from current EndDate; else start from now. if (currentSubscription.EndDate.Date >= utcNow.Date) @@ -1009,6 +1012,14 @@ namespace Marco.Pms.Services.Controllers _logger.LogInfo("Subscription renewed: Tenant={TenantId}, Plan={PlanId}, NewEnd={EndDate}", model.TenantId, model.PlanId, newEndDate); + await _updateLogHelper.PushToUpdateLogsAsync(new UpdateLogsObject + { + EntityId = currentSubscription.Id.ToString(), + UpdatedById = loggedInEmployee.Id.ToString(), + OldObject = existingEntityBson, + UpdatedAt = DateTime.UtcNow + }, "SubscriptionPlanModificationLog"); + return Ok(ApiResponse.SuccessResponse(currentSubscription, "Subscription renewed/extended", 200)); } diff --git a/Marco.Pms.Services/Program.cs b/Marco.Pms.Services/Program.cs index 4ca90bc..a5c9ac8 100644 --- a/Marco.Pms.Services/Program.cs +++ b/Marco.Pms.Services/Program.cs @@ -1,4 +1,3 @@ -using Marco.Pms.CacheHelper; using Marco.Pms.DataAccess.Data; using Marco.Pms.Helpers; using Marco.Pms.Helpers.CacheHelper;