Beispiel #1
0
        public async Task <IEnumerable <Jobs.Model.Enums.JobType> > GetJobs(bool removeOldDates, CancellationToken cancellationToken)
        {
            DateTime nowUtc = _dateTimeProvider.GetNowUtc().TrimSeconds();

            HashSet <int> jobs = new HashSet <int>();

            try
            {
                using (JobQueueDataContext db = new JobQueueDataContext(_contextOptions))
                {
                    IQueryable <Schedule> nonRun = db.Schedule.Where(x => x.Enabled);
                    foreach (Schedule schedule in nonRun)
                    {
                        if (!_scheduleService.CanExecuteSchedule(schedule, nowUtc, removeOldDates))
                        {
                            continue;
                        }

                        jobs.Add(schedule.JobTypeId);
                        if (schedule.ExecuteOnceOnly)
                        {
                            db.Schedule.Remove(schedule);
                        }
                        else
                        {
                            schedule.LastExecuteDateTime = nowUtc;
                        }
                    }

                    await db.SaveChangesAsync(cancellationToken);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Failed to retrieve and process external data schedules", ex);
            }

            return(jobs.Select(x => (Jobs.Model.Enums.JobType)x));
        }