diff --git a/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/Services/InstanceService.cs b/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/Services/InstanceService.cs index 0e7ed342..0d4a497e 100644 --- a/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/Services/InstanceService.cs +++ b/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/Services/InstanceService.cs @@ -213,6 +213,7 @@ public class InstanceService /// Override JSON for the trigger configuration. /// Override priority level, or null to use template value. /// Username of the user setting the override. + /// Override for the alarm's MES-reportable flag, or null to use the template value. /// Cancellation token. /// Result containing the alarm override or failure message. public async Task> SetAlarmOverrideAsync( @@ -221,6 +222,7 @@ public class InstanceService string? triggerConfigurationOverride, int? priorityLevelOverride, string user, + bool? isMesReportableOverride = null, CancellationToken cancellationToken = default) { var instance = await _repository.GetInstanceByIdAsync(instanceId, cancellationToken); @@ -254,6 +256,7 @@ public class InstanceService { existingOverride.TriggerConfigurationOverride = triggerConfigurationOverride; existingOverride.PriorityLevelOverride = priorityLevelOverride; + existingOverride.IsMesReportableOverride = isMesReportableOverride; await _repository.UpdateInstanceAlarmOverrideAsync(existingOverride, cancellationToken); await _repository.SaveChangesAsync(cancellationToken); @@ -268,7 +271,8 @@ public class InstanceService { InstanceId = instanceId, TriggerConfigurationOverride = triggerConfigurationOverride, - PriorityLevelOverride = priorityLevelOverride + PriorityLevelOverride = priorityLevelOverride, + IsMesReportableOverride = isMesReportableOverride }; await _repository.AddInstanceAlarmOverrideAsync(newOverride, cancellationToken); diff --git a/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/TemplateService.cs b/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/TemplateService.cs index c524a344..e559ab45 100644 --- a/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/TemplateService.cs +++ b/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/TemplateService.cs @@ -621,6 +621,7 @@ public class TemplateService existing.Description = proposed.Description; existing.OnTriggerScriptId = proposed.OnTriggerScriptId; existing.IsLocked = proposed.IsLocked; + existing.IsMesReportable = proposed.IsMesReportable; if (template?.IsDerived == true) existing.IsInherited = proposed.IsInherited; else diff --git a/tests/ZB.MOM.WW.ScadaBridge.TemplateEngine.Tests/Services/InstanceServiceTests.cs b/tests/ZB.MOM.WW.ScadaBridge.TemplateEngine.Tests/Services/InstanceServiceTests.cs index b7e0a7fc..ae38bade 100644 --- a/tests/ZB.MOM.WW.ScadaBridge.TemplateEngine.Tests/Services/InstanceServiceTests.cs +++ b/tests/ZB.MOM.WW.ScadaBridge.TemplateEngine.Tests/Services/InstanceServiceTests.cs @@ -220,6 +220,101 @@ public class InstanceServiceTests Assert.Contains("locked", result.Error, StringComparison.OrdinalIgnoreCase); } + [Fact] + public async Task SetAlarmOverrideAsync_StoresIsMesReportableOverride() + { + var instance = new Instance("Inst1") { Id = 1, TemplateId = 1 }; + _repoMock.Setup(r => r.GetInstanceByIdAsync(1, It.IsAny())) + .ReturnsAsync(instance); + _repoMock.Setup(r => r.GetAllTemplatesAsync(It.IsAny())) + .ReturnsAsync(new List