private async Task <EBuEfSession> QueryEBuEfSessionAsync(CancellationToken queryCancellationToken) { var result = default(EBuEfSession); if (!queryCancellationToken.IsCancellationRequested) { logger.LogDebug( "Suche in der EBuEf-DB nach der aktuellen Fahrplan-Session."); using var context = new SitzungContext(connectionString); var sitzung = await context.Sitzungen .Where(s => s.Status == Convert.ToByte(SessionStatusType.InPreparation) || s.Status == Convert.ToByte(SessionStatusType.IsRunning) || s.Status == Convert.ToByte(SessionStatusType.IsPaused)) .OrderByDescending(s => s.Status == Convert.ToByte(SessionStatusType.IsRunning)) .ThenByDescending(s => s.Status == Convert.ToByte(SessionStatusType.IsPaused)) .FirstOrDefaultAsync(queryCancellationToken); if (sitzung != default) { var timeshift = new TimeSpan( hours: 0, minutes: 0, seconds: sitzung.Verschiebung * -1); result = new EBuEfSession { FahrplanId = sitzung.FahrplanId, IVUDatum = sitzung.IvuDate ?? DateTime.Today, SessionKey = sitzung.SessionKey, SessionStart = sitzung.SimStartzeit.ToDateTime().ToLocalTime(), Verschiebung = timeshift, Wochentag = sitzung.SimWochentag.GetWochentag(), }; logger.LogDebug( "Aktuelle EBuEf-Sitzung gefunden: {session}", result); } else { logger.LogError( "Es wurde keine EBuEf-Session gefunden."); } } return(result); }
private async Task <bool> QueryEBuEfSessionActiveAsync(CancellationToken queryCancellationToken) { var result = false; if (!queryCancellationToken.IsCancellationRequested) { logger.LogDebug( "Suche in der EBuEf-DB nach dem Status der aktuellen Fahrplan-Session."); using var context = new SitzungContext(connectionString); result = await context.Sitzungen .Where(s => s.Status == Convert.ToByte(SessionStatusType.IsRunning)) .AnyAsync(queryCancellationToken); } return(result); }