public virtual async Task <IActionResult> TaskUpdate(ScheduleTaskModel model) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageScheduleTasks)) { return(AccessDeniedView()); } //try to get a schedule task with the specified id var scheduleTask = await _scheduleTaskService.GetTaskByIdAsync(model.Id) ?? throw new ArgumentException("Schedule task cannot be loaded"); //To prevent inject the XSS payload in Schedule tasks ('Name' field), we must disable editing this field, //but since it is required, we need to get its value before updating the entity. if (!string.IsNullOrEmpty(scheduleTask.Name)) { model.Name = scheduleTask.Name; ModelState.Remove(nameof(model.Name)); } if (!ModelState.IsValid) { return(ErrorJson(ModelState.SerializeErrors())); } scheduleTask = model.ToEntity(scheduleTask); await _scheduleTaskService.UpdateTaskAsync(scheduleTask); //activity log await _customerActivityService.InsertActivityAsync("EditTask", string.Format(await _localizationService.GetResourceAsync("ActivityLog.EditTask"), scheduleTask.Id), scheduleTask); return(new NullJsonResult()); }
public async Task <IActionResult> InsertCronTask([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.InsertCronTaskAsync(scheduleTask.Id, model.CronExpression); return(Json(new { Result = true })); }
public async Task InsertCronTaskAsync(int scheduleTaskId, string cronExpression) { var ga = _genericAttributeRepository.Table .FirstOrDefault(gar => gar.KeyGroup == nameof(ScheduleTask) && gar.Key == CronTasksDefaults.CronExpressionGenericAttributeKey && gar.EntityId == scheduleTaskId); if (ga == null) { ga = new GenericAttribute() { StoreId = 0, KeyGroup = nameof(ScheduleTask), Key = CronTasksDefaults.CronExpressionGenericAttributeKey, EntityId = scheduleTaskId, Value = cronExpression }; await _genericAttributeService.InsertAttributeAsync(ga); } else { ga.Value = cronExpression; await _genericAttributeService.UpdateAttributeAsync(ga); } var scheduledTask = await _scheduleTaskService.GetTaskByIdAsync(scheduleTaskId); if (scheduledTask != null) { scheduledTask.Enabled = false; await _scheduleTaskService.UpdateTaskAsync(scheduledTask); } await RescheduleQuartzJobAsync(scheduleTaskId, cronExpression); }
public async Task <IActionResult> Index(int id) { var scheduleTask = await _scheduleTaskService.GetTaskByIdAsync(id); if (scheduleTask == null) { return(NoContent()); } await _cronTaskService.ExecuteCronTaskAsync(scheduleTask); return(NoContent()); }
public async System.Threading.Tasks.Task CanInsertAndGetTask() { _task.Id = 0; await _scheduleTaskService.InsertTaskAsync(_task); var task = await _scheduleTaskService.GetTaskByIdAsync(_task.Id); await _scheduleTaskService.DeleteTaskAsync(_task); _task.Id.Should().NotBe(0); task.Id.Should().Be(_task.Id); task.Name.Should().Be(_task.Name); }