diff --git a/Admin/Install/db.json b/Admin/Install/db.json index 2dc42c7..9159586 100755 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -77,6 +77,11 @@ "type": "VARCHAR(255)", "null": false }, + "task_trigger": { + "name": "task_trigger", + "type": "VARCHAR(255)", + "null": false + }, "task_schedule": { "name": "task_schedule", "type": "INT", diff --git a/Controller/ApiController.php b/Controller/ApiController.php index e75eae3..4d09cec 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -320,6 +320,11 @@ final class ApiController extends Controller /** @var Task $new */ $new = $this->updateTaskFromRequest($request); $this->updateModel($request->header->account, $old, $new, TaskMapper::class, 'task', $request->getOrigin()); + + if (!empty($new->trigger)) { + $this->app->eventManager->triggerSimilar($new->trigger, '', $new); + } + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Task', 'Task successfully updated.', $new); } @@ -415,6 +420,11 @@ final class ApiController extends Controller } $this->updateModel($request->header->account, $task, $task, TaskMapper::class, 'task', $request->getOrigin()); + + if (!empty($task->trigger)) { + $this->app->eventManager->triggerSimilar($task->trigger, '', $task); + } + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Task element', 'Task element successfully created.', $element); } @@ -607,6 +617,10 @@ final class ApiController extends Controller $task->due = $new->due; $this->updateModel($request->header->account, $task, $task, TaskMapper::class, 'task', $request->getOrigin()); + + if (!empty($task->trigger)) { + $this->app->eventManager->triggerSimilar($task->trigger, '', $task); + } } $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Task element', 'Task element successfully updated.', $new); diff --git a/Models/Task.php b/Models/Task.php index c99f24a..c8776c2 100755 --- a/Models/Task.php +++ b/Models/Task.php @@ -59,6 +59,16 @@ class Task implements \JsonSerializable */ public string $redirect = ''; + /** + * Trigger + * + * Event trigger to execute on task change. + * + * @var string + * @since 1.0.0 + */ + public string $trigger = ''; + /** * Creator. * diff --git a/Models/TaskMapper.php b/Models/TaskMapper.php index c3c0a46..60bf698 100755 --- a/Models/TaskMapper.php +++ b/Models/TaskMapper.php @@ -55,6 +55,7 @@ final class TaskMapper extends DataMapperFactory 'task_schedule' => ['name' => 'task_schedule', 'type' => 'int', 'internal' => 'schedule'], 'task_start' => ['name' => 'task_start', 'type' => 'DateTime', 'internal' => 'start'], 'task_redirect' => ['name' => 'task_redirect', 'type' => 'string', 'internal' => 'redirect'], + 'task_trigger' => ['name' => 'task_trigger', 'type' => 'string', 'internal' => 'trigger'], 'task_created_by' => ['name' => 'task_created_by', 'type' => 'int', 'internal' => 'createdBy', 'readonly' => true], 'task_created_at' => ['name' => 'task_created_at', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt', 'readonly' => true], ];