summaryrefslogtreecommitdiff
path: root/app/Formatter/TaskListSubtaskAssigneeFormatter.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Formatter/TaskListSubtaskAssigneeFormatter.php')
-rw-r--r--app/Formatter/TaskListSubtaskAssigneeFormatter.php43
1 files changed, 43 insertions, 0 deletions
diff --git a/app/Formatter/TaskListSubtaskAssigneeFormatter.php b/app/Formatter/TaskListSubtaskAssigneeFormatter.php
new file mode 100644
index 00000000..50b08cd8
--- /dev/null
+++ b/app/Formatter/TaskListSubtaskAssigneeFormatter.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Kanboard\Formatter;
+
+/**
+ * Class TaskListSubtaskAssigneeFormatter
+ *
+ * @package Kanboard\Formatter
+ * @author Frederic Guillot
+ */
+class TaskListSubtaskAssigneeFormatter extends TaskListFormatter
+{
+ protected $userId = 0;
+
+ /**
+ * Set assignee
+ *
+ * @param integer $userId
+ * @return $this
+ */
+ public function withUserId($userId)
+ {
+ $this->userId = $userId;
+ return $this;
+ }
+
+ /**
+ * Apply formatter
+ *
+ * @access public
+ * @return array
+ */
+ public function format()
+ {
+ $tasks = parent::format();
+ $taskIds = array_column($tasks, 'id');
+ $subtasks = $this->subtaskModel->getAllByTaskIdsAndAssignee($taskIds, $this->userId);
+ $subtasks = array_column_index($subtasks, 'task_id');
+ array_merge_relation($tasks, $subtasks, 'subtasks', 'id');
+
+ return $tasks;
+ }
+}