Пример #1
0
        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);
        }
Пример #2
0
        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);
        }