using AutomationDAL.DTO.Schedule; using AutomationDAL.Query.Schedule; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AutomationDAL.CustomCode.Schedule; public class ScheduleDAL : IScheduleDAL { private readonly IQueryExecutor _qe; public ScheduleDAL(IQueryExecutor qe) => _qe = qe; public async Task GetByTarget(int targetId, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync(login, ScheduleQB.GET_BY_TARGET, new { TargetId = targetId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return rows.FirstOrDefault(); } public async Task GetByJobEngineJobId(int jobEngineJobId, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync(login, ScheduleQB.GET_BY_JOBENGINE_JOBID, new { JobEngineJobId = jobEngineJobId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return rows.FirstOrDefault(); } public async Task Insert(ScheduleDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteIdentityAsync(login, ScheduleQB.INSERT, new { dto.TargetId, dto.CronExpression, dto.SkipHolidays, dto.DependsOnScriptId, dto.TriggerType, TenantId = login.ClientId, CreatedById = login.UserId }).ConfigureAwait(false); public async Task Update(ScheduleDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, ScheduleQB.UPDATE, new { dto.TargetId, dto.CronExpression, dto.SkipHolidays, dto.DependsOnScriptId, dto.TriggerType, TenantId = login.ClientId, ModifiedById = login.UserId }, cancellationToken: ct).ConfigureAwait(false); public async Task UpdateJobEngineJobId(int scheduleId, int? jobEngineJobId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, ScheduleQB.UPDATE_JOBENGINE_JOBID, new { ScheduleId = scheduleId, JobEngineJobId = jobEngineJobId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); }