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 }));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        public async Task <IActionResult> Index(int id)
        {
            var scheduleTask = await _scheduleTaskService.GetTaskByIdAsync(id);

            if (scheduleTask == null)
            {
                return(NoContent());
            }

            await _cronTaskService.ExecuteCronTaskAsync(scheduleTask);

            return(NoContent());
        }
Exemple #5
0
        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);
        }