using CommunityToolkit.Mvvm.ComponentModel;
using HC_APTBS.Models;
using HC_APTBS.Services;
namespace HC_APTBS.ViewModels
{
///
/// ViewModel for a curated bank of auxiliary relay toggles on the Bench page.
/// Excludes relays driven by dedicated controls
/// (oil pump, direction, heater / cooler, counter).
///
public sealed partial class RelayBankViewModel : ObservableObject
{
private readonly IBenchService _bench;
/// Solenoid power / pump keep-alive relay.
[ObservableProperty] private bool _isElectronicOn;
/// Panel flasher relay (status lamp blink).
[ObservableProperty] private bool _isFlasherOn;
/// 4-pulse-per-revolution output signal relay.
[ObservableProperty] private bool _isPulse4SignalOn;
/// Bench service used to drive the relays.
public RelayBankViewModel(IBenchService benchService)
{
_bench = benchService;
}
partial void OnIsElectronicOnChanged(bool value)
=> _bench.SetRelay(RelayNames.Electronic, value);
partial void OnIsFlasherOnChanged(bool value)
=> _bench.SetRelay(RelayNames.Flasher, value);
partial void OnIsPulse4SignalOnChanged(bool value)
=> _bench.SetRelay(RelayNames.Pulse4Signal, value);
}
}