using Microsoft.Extensions.Logging; using Quartz; namespace Azaion.Repository.Jobs { [DisallowConcurrentExecution] public abstract class BaseJob(ILogger logger) : IJob { protected abstract Task ExecuteInner(IJobExecutionContext context); public async Task Execute(IJobExecutionContext context) { logger.LogDebug($"Start {GetType().Name}"); try { await ExecuteInner(context); } catch (Exception e) { logger.LogError(e, e.Message); throw; } logger.LogDebug($"{GetType().Name} Finished"); } } }