39 Zeilen
1.1 KiB
C#
39 Zeilen
1.1 KiB
C#
using PrinterMonitor.Models;
|
|
|
|
namespace PrinterMonitor.Models;
|
|
|
|
/// <summary>
|
|
/// Berechnet den aggregierten (ODER-verknüpften) Druckerzustand
|
|
/// über alle überwachten Drucker hinweg.
|
|
/// </summary>
|
|
public static class AggregatedPrinterState
|
|
{
|
|
/// <summary>
|
|
/// Gibt einen <see cref="SimplePrinterState"/> zurück, dessen Felder
|
|
/// jeweils das logische ODER aller übergebenen Einzelzustände sind.
|
|
/// Gibt null zurück wenn keine Zustände übergeben wurden.
|
|
/// </summary>
|
|
public static SimplePrinterState? Aggregate(IEnumerable<SimplePrinterState> states)
|
|
{
|
|
SimplePrinterState? result = null;
|
|
|
|
foreach (var s in states)
|
|
{
|
|
if (result == null)
|
|
{
|
|
result = s;
|
|
continue;
|
|
}
|
|
|
|
result = new SimplePrinterState
|
|
{
|
|
LtsSensor = result.LtsSensor || s.LtsSensor,
|
|
Druckerklappe = result.Druckerklappe || s.Druckerklappe,
|
|
KeineEtiketten = result.KeineEtiketten || s.KeineEtiketten
|
|
};
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|