From 9ce4812cd647c6139f1493d88141909185513c73 Mon Sep 17 00:00:00 2001 From: Thomas Rittson Date: Sat, 7 Mar 2026 14:13:59 +1000 Subject: [PATCH] Example sync code --- .../DisableSendSyncPolicyEvent.cs | 28 +++++++------------ .../SendOptionsSyncPolicyEvent.cs | 24 ++++++++-------- 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyValidators/DisableSendSyncPolicyEvent.cs b/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyValidators/DisableSendSyncPolicyEvent.cs index ea53ac0515b8..377d54519640 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyValidators/DisableSendSyncPolicyEvent.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyValidators/DisableSendSyncPolicyEvent.cs @@ -22,34 +22,26 @@ public async Task ExecutePostUpsertSideEffectAsync( Policy postUpsertedPolicyState, Policy? previousPolicyState) { - var policyUpdate = policyRequest.PolicyUpdate; + var organizationId = policyRequest.PolicyUpdate.OrganizationId; + // Step 1: sync DisableSend.Enabled -> SendControlsPolicy.Data.DisableSend var sendControlsPolicy = await policyRepository.GetByOrganizationIdTypeAsync( - policyUpdate.OrganizationId, PolicyType.SendControls) ?? new Policy + organizationId, PolicyType.SendControls) ?? new Policy { Id = CoreHelpers.GenerateComb(), - OrganizationId = policyUpdate.OrganizationId, + OrganizationId = organizationId, Type = PolicyType.SendControls, }; - var sendOptionsPolicy = await policyRepository.GetByOrganizationIdTypeAsync( - policyUpdate.OrganizationId, PolicyType.SendOptions) ?? new Policy - { - Id = CoreHelpers.GenerateComb(), - OrganizationId = policyUpdate.OrganizationId, - Type = PolicyType.SendOptions, - }; - - var sendControlsPolicyData = - sendControlsPolicy.GetDataModel(); - - var sendOptionsPolicyData = sendOptionsPolicy.GetDataModel(); - + var sendControlsPolicyData = sendControlsPolicy.GetDataModel(); sendControlsPolicyData.DisableSend = postUpsertedPolicyState.Enabled; - sendControlsPolicyData.DisableHideEmail = sendOptionsPolicy.Enabled && sendOptionsPolicyData.DisableHideEmail; - sendControlsPolicy.Enabled = sendControlsPolicyData.DisableSend || sendControlsPolicyData.DisableHideEmail; sendControlsPolicy.SetDataModel(sendControlsPolicyData); + // Step 2: sync Enabled status. SendControlsPolicy is enabled if either legacy policy is enabled + sendControlsPolicy.Enabled = postUpsertedPolicyState.Enabled || + ((await policyRepository.GetByOrganizationIdTypeAsync( + organizationId, PolicyType.SendOptions))?.Enabled ?? false); + await policyRepository.UpsertAsync(sendControlsPolicy); } } diff --git a/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyValidators/SendOptionsSyncPolicyEvent.cs b/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyValidators/SendOptionsSyncPolicyEvent.cs index f8504e556265..028f8c088b43 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyValidators/SendOptionsSyncPolicyEvent.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/Policies/PolicyValidators/SendOptionsSyncPolicyEvent.cs @@ -22,27 +22,27 @@ public async Task ExecutePostUpsertSideEffectAsync( Policy postUpsertedPolicyState, Policy? previousPolicyState) { - var policyUpdate = policyRequest.PolicyUpdate; + var organizationId = policyRequest.PolicyUpdate.OrganizationId; + // Step 1: sync SendOptionsPolicy.Data.DisableSend -> SendControlsPolicy.Data.DisableSend var sendControlsPolicy = await policyRepository.GetByOrganizationIdTypeAsync( - policyUpdate.OrganizationId, PolicyType.SendControls) ?? new Policy + organizationId, PolicyType.SendControls) ?? new Policy { Id = CoreHelpers.GenerateComb(), - OrganizationId = policyUpdate.OrganizationId, + OrganizationId = organizationId, Type = PolicyType.SendControls, }; - var sendControlsPolicyData = - sendControlsPolicy.GetDataModel(); - - var disableSendPolicyState = await policyRepository.GetByOrganizationIdTypeAsync( - policyUpdate.OrganizationId, PolicyType.DisableSend); - - sendControlsPolicyData.DisableSend = disableSendPolicyState?.Enabled ?? false; - sendControlsPolicyData.DisableHideEmail = postUpsertedPolicyState.Enabled && postUpsertedPolicyState.GetDataModel().DisableHideEmail; - sendControlsPolicy.Enabled = sendControlsPolicyData.DisableSend || sendControlsPolicyData.DisableHideEmail; + var sendControlsPolicyData = sendControlsPolicy.GetDataModel(); + sendControlsPolicyData.DisableHideEmail = postUpsertedPolicyState.GetDataModel().DisableHideEmail; sendControlsPolicy.SetDataModel(sendControlsPolicyData); + // Step 2: sync Enabled status. SendControlsPolicy is enabled if either legacy policy is enabled + // Optimization: DisableSendPolicy.Enabled maps to SendControlsPolicy.Data.DisableSend - so we can use that + // as a proxy for that legacy policy state + sendControlsPolicy.Enabled = postUpsertedPolicyState.Enabled || + sendControlsPolicyData.DisableSend; + await policyRepository.UpsertAsync(sendControlsPolicy); } }