using Furion.DatabaseAccessor;
using Furion.Schedule;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
///
/// 定时按日期计算任务发布状态
///
public class CalcTaskSatusByDateJob(
IRepository rep
) : IJob
{
private readonly IRepository rep = rep;
public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
{
var now = DateTime.Now;
var entities = await rep.AsQueryable()
.Where(it => it.EndTime < now && it.ReleaseStatus != EnumTaskReleaseStatus.Stopped)
.ToListAsync();
if (entities.IsNotNull())
{
foreach (var entity in entities)
{
entity.ReleaseStatus = EnumTaskReleaseStatus.Stopped;
}
await rep.UpdateNowAsync(entities);
}
}
}
}