示例#1
0
        private async Task <IEnumerable <CronTaskModel> > GetCronTaskModelsAsync(IDictionary <int, string> cronTasks)
        {
            var result = new List <CronTaskModel>();

            foreach (var ct in cronTasks)
            {
                var scheduleTask = await _scheduleTaskService.GetTaskByIdAsync(ct.Key);

                if (scheduleTask == null)
                {
                    continue;
                }

                var scheduleTaskModel = scheduleTask.ToModel <ScheduleTaskModel>();

                //convert dates to the user time
                if (scheduleTask.LastStartUtc.HasValue)
                {
                    scheduleTaskModel.LastStartUtc = (await _dateTimeHelper
                                                      .ConvertToUserTimeAsync(scheduleTask.LastStartUtc.Value, DateTimeKind.Utc)).ToString("G");
                }

                if (scheduleTask.LastEndUtc.HasValue)
                {
                    scheduleTaskModel.LastEndUtc = (await _dateTimeHelper
                                                    .ConvertToUserTimeAsync(scheduleTask.LastEndUtc.Value, DateTimeKind.Utc)).ToString("G");
                }

                if (scheduleTask.LastSuccessUtc.HasValue)
                {
                    scheduleTaskModel.LastSuccessUtc = (await _dateTimeHelper
                                                        .ConvertToUserTimeAsync(scheduleTask.LastSuccessUtc.Value, DateTimeKind.Utc)).ToString("G");
                }

                var cronNextOccurence = _cronTaskService.GetQuartzJobNextOccurrence(scheduleTask.Id);

                var model = new CronTaskModel()
                {
                    ScheduleTaskId     = scheduleTask.Id,
                    ScheduleTaskModel  = scheduleTaskModel,
                    CronExpression     = ct.Value,
                    ExecutionStatus    = _cronTaskService.GetQuartzJobExecutionStatus(scheduleTask.Id),
                    CronNextOccurrence = cronNextOccurence.HasValue ?
                                         (await _dateTimeHelper.ConvertToUserTimeAsync(cronNextOccurence.Value, DateTimeKind.Utc)).ToString("G") :
                                         string.Empty
                };

                result.Add(model);
            }

            return(result);
        }
示例#2
0
        public async Task <IActionResult> UpdateCronTask([Validate] CronTaskModel model)
        {
            if (!ModelState.IsValid)
            {
                return(ErrorJson(ModelState.SerializeErrors()));
            }

            var scheduleTask = await _scheduleTaskService.GetTaskByIdAsync(model.ScheduleTaskId)
                               ?? throw new ArgumentException("No schedule task found with the specified id");

            await _cronTaskService.UpdateCronTaskAsync(scheduleTask.Id, model.CronExpression);

            return(new NullJsonResult());
        }