private IJobDetail CreateJob(Type jobType, Type timeTaskType, TimeTaskBase timeTask) { return(JobBuilder .Create(jobType) .WithIdentity($"{timeTaskType.Name}-{timeTask.Id.ToString()}", timeTask.Type) .UsingJobData("TimeTask", JsonConvert.SerializeObject(timeTask, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All })) .Build()); }
private TimeSpan GetTimeSpan(TimeTaskBase timeTask) { var currentDateTime = _dateTimeProvider.GetCurrentDateTime(); if (timeTask.StartDate.CompareTo(currentDateTime) == -1) { throw new ArgumentException("Invalid task StartDate"); } var timeSpan = timeTask.StartDate - currentDateTime; return(timeSpan); }
public async Task <InfoResponse> ScheduleTimeTask(Type jobType, Type taskClassType, TimeTaskBase timeTask) { var job = CreateJob(jobType, taskClassType, timeTask); var trigger = _taskTriggerFactory.CreateTrigger(timeTask); var offset = await _scheduler.ScheduleJob(job, trigger); _logger.LogInformation($"{taskClassType} scheduled on {timeTask.StartDate} offset: {offset}"); return(timeTask.GetInfoResponse()); }