MH x Claude: Optimierung der Dienstsuche zur Pausenberechnung

This commit is contained in:
2026-07-14 10:26:11 +02:00
parent cf20c425f8
commit 9451777280
3 changed files with 48 additions and 24 deletions

View File

@@ -85,23 +85,30 @@ namespace BS.Shared.DataContracts
return dauer > 0 ? dauer : 0;
}
// Claude: Überladung, die den Dienst anhand der DienstOid aus einer Liste sucht (unbekannte Oid => kein Abzug)
public static double DauerAbzueglichPause(double dauerInStunden, long dienstOid, IEnumerable<DienstInfoDC> dienste)
// Claude: Überladung mit Dictionary (DienstOid => Dienst) für schnelle Lookups in Schleifen (unbekannte Oid => kein Abzug)
public static double DauerAbzueglichPause(double dauerInStunden, long dienstOid, IDictionary<long, DienstInfoDC> dienstProOid)
{
DienstInfoDC dienst = null;
if (dienstProOid != null)
dienstProOid.TryGetValue(dienstOid, out dienst);
return DauerAbzueglichPause(dauerInStunden, dienst);
}
// Claude: Baut das Lookup-Dictionary für die Überladung oben einmalig auf
public static Dictionary<long, DienstInfoDC> BuildDienstProOidDictionary(IEnumerable<DienstInfoDC> dienste)
{
var dict = new Dictionary<long, DienstInfoDC>();
if (dienste != null)
{
foreach (var d in dienste)
{
if (d != null && d.Oid == dienstOid)
{
dienst = d;
break;
}
if (d != null && d.Oid.HasValue && !dict.ContainsKey(d.Oid.Value))
dict.Add(d.Oid.Value, d);
}
}
return DauerAbzueglichPause(dauerInStunden, dienst);
return dict;
}
public string DarstellungInPopUp