From 230eddcc69f7f31cdc489ad3de21a46de958f605 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Wed, 6 Dec 2017 18:31:43 -0800 Subject: Add two automatic actions for subtasks - Action to create a subtask assigned to the creator and start the timer - Action to stop the timer of subtasks --- app/Action/StopSubtaskTimerMoveTaskColumn.php | 102 ++++++++++++++++++++++++ app/Action/SubtaskTimerMoveTaskColumn.php | 107 ++++++++++++++++++++++++++ 2 files changed, 209 insertions(+) create mode 100644 app/Action/StopSubtaskTimerMoveTaskColumn.php create mode 100644 app/Action/SubtaskTimerMoveTaskColumn.php (limited to 'app/Action') diff --git a/app/Action/StopSubtaskTimerMoveTaskColumn.php b/app/Action/StopSubtaskTimerMoveTaskColumn.php new file mode 100644 index 00000000..e6f9e436 --- /dev/null +++ b/app/Action/StopSubtaskTimerMoveTaskColumn.php @@ -0,0 +1,102 @@ + t('Column'), + ); + } + + /** + * Get the required parameter for the event + * + * @access public + * @return string[] + */ + public function getEventRequiredParameters() + { + return array( + 'task_id', + 'task' => array( + 'id', + 'column_id', + 'project_id', + ), + ); + } + + /** + * Execute the action (append to the task description). + * + * @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) + { + $subtasks = $this->subtaskModel->getAll($data['task']['id']); + $results = array(); + + foreach ($subtasks as $subtask) { + $results[] = $this->subtaskModel->update(array('id' => $subtask['id'], 'status' => SubtaskModel::STATUS_DONE)); + $results[] = $this->subtaskTimeTrackingModel->logEndTime($subtask['id'], $subtask['user_id']); + } + + return !in_array(false, $results, true); + } + + /** + * 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']['column_id'] == $this->getParam('column_id'); + } +} diff --git a/app/Action/SubtaskTimerMoveTaskColumn.php b/app/Action/SubtaskTimerMoveTaskColumn.php new file mode 100644 index 00000000..896f24b6 --- /dev/null +++ b/app/Action/SubtaskTimerMoveTaskColumn.php @@ -0,0 +1,107 @@ + t('Column'), + 'subtask' => t('Subtask Title'), + ); + } + + /** + * Get the required parameter for the event + * + * @access public + * @return string[] + */ + public function getEventRequiredParameters() + { + return array( + 'task_id', + 'task' => array( + 'id', + 'column_id', + 'project_id', + 'creator_id', + ), + ); + } + + /** + * Execute the action (append to the task description). + * + * @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) + { + $subtaskID = $this->subtaskModel->create(array( + 'title' => $this->getParam('subtask'), + 'user_id' => $data['task']['creator_id'], + 'task_id' => $data['task']['id'], + 'status' => SubtaskModel::STATUS_INPROGRESS, + )); + + if ($subtaskID !== false) { + return $this->subtaskTimeTrackingModel->toggleTimer($subtaskID, $data['task']['creator_id'], SubtaskModel::STATUS_INPROGRESS); + } + + return 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']['column_id'] == $this->getParam('column_id'); + } +} -- cgit v1.2.3