From e089d3059a1a4adc99ad18ce2b4dc66359d0283b Mon Sep 17 00:00:00 2001 From: teha-at <47043401+teha-at@users.noreply.github.com> Date: Thu, 23 Apr 2020 05:36:49 +0200 Subject: [PATCH] Add action to assign user when the swimlane change --- app/Action/TaskAssignUserSwimlaneChange.php | 99 +++++++++++++++++++++ app/ServiceProvider/ActionProvider.php | 2 + 2 files changed, 101 insertions(+) create mode 100644 app/Action/TaskAssignUserSwimlaneChange.php diff --git a/app/Action/TaskAssignUserSwimlaneChange.php b/app/Action/TaskAssignUserSwimlaneChange.php new file mode 100644 index 000000000..3f97b2041 --- /dev/null +++ b/app/Action/TaskAssignUserSwimlaneChange.php @@ -0,0 +1,99 @@ + t('Swimlane'), + 'user_id' => t('Assignee'), + ); + } + + /** + * Get the required parameter for the event + * + * @access public + * @return string[] + */ + public function getEventRequiredParameters() + { + return array( + 'task_id', + 'task' => array( + 'project_id', + 'swimlane_id', + ) + ); + } + + /** + * Execute the action (set the task category) + * + * @access public + * @param array $data Event data dictionary + * @return bool True if the action was executed or false when not executed + */ + public function doAction(array $data) + { + $values = array( + 'id' => $data['task_id'], + 'owner_id' => $this->getParam('user_id'), + ); + + return $this->taskModificationModel->update($values, false); + } + + /** + * Check if the event data meet the action condition + * + * @access public + * @param array $data Event data dictionary + * @return bool + */ + public function hasRequiredCondition(array $data) + { + return $data['task']['swimlane_id'] == $this->getParam('swimlane_id'); + } +} diff --git a/app/ServiceProvider/ActionProvider.php b/app/ServiceProvider/ActionProvider.php index bf36b4695..1cfa79570 100644 --- a/app/ServiceProvider/ActionProvider.php +++ b/app/ServiceProvider/ActionProvider.php @@ -27,6 +27,7 @@ use Kanboard\Action\TaskAssignCurrentUser; use Kanboard\Action\TaskAssignCurrentUserColumn; use Kanboard\Action\TaskAssignSpecificUser; use Kanboard\Action\TaskAssignUser; +use Kanboard\Action\TaskAssignUserSwimlaneChange; use Kanboard\Action\TaskClose; use Kanboard\Action\TaskCloseColumn; use Kanboard\Action\TaskCreation; @@ -85,6 +86,7 @@ class ActionProvider implements ServiceProviderInterface $container['actionManager']->register(new TaskAssignCurrentUserColumn($container)); $container['actionManager']->register(new TaskAssignSpecificUser($container)); $container['actionManager']->register(new TaskAssignUser($container)); + $container['actionManager']->register(new TaskAssignUserSwimlaneChange($container)); $container['actionManager']->register(new TaskClose($container)); $container['actionManager']->register(new TaskCloseColumn($container)); $container['actionManager']->register(new TaskCloseNoActivity($container));