summaryrefslogtreecommitdiff
path: root/app/Model/SubtaskModel.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/SubtaskModel.php')
-rw-r--r--app/Model/SubtaskModel.php81
1 files changed, 30 insertions, 51 deletions
diff --git a/app/Model/SubtaskModel.php b/app/Model/SubtaskModel.php
index c62ddb53..1e652ae2 100644
--- a/app/Model/SubtaskModel.php
+++ b/app/Model/SubtaskModel.php
@@ -70,35 +70,6 @@ class SubtaskModel extends Base
}
/**
- * Get the query to fetch subtasks assigned to a user
- *
- * @access public
- * @param integer $userId
- * @param array $status
- * @return \PicoDb\Table
- */
- public function getUserQuery($userId, array $status)
- {
- return $this->db->table(SubtaskModel::TABLE)
- ->columns(
- SubtaskModel::TABLE.'.*',
- TaskModel::TABLE.'.project_id',
- TaskModel::TABLE.'.color_id',
- TaskModel::TABLE.'.title AS task_name',
- ProjectModel::TABLE.'.name AS project_name'
- )
- ->subquery($this->subtaskTimeTrackingModel->getTimerQuery($userId), 'timer_start_date')
- ->eq('user_id', $userId)
- ->eq(ProjectModel::TABLE.'.is_active', ProjectModel::ACTIVE)
- ->eq(ColumnModel::TABLE.'.hide_in_dashboard', 0)
- ->in(SubtaskModel::TABLE.'.status', $status)
- ->join(TaskModel::TABLE, 'id', 'task_id')
- ->join(ProjectModel::TABLE, 'id', 'project_id', TaskModel::TABLE)
- ->join(ColumnModel::TABLE, 'id', 'column_id', TaskModel::TABLE)
- ->callback(array($this, 'addStatusName'));
- }
-
- /**
* Get common query
*
* @return \PicoDb\Table
@@ -117,6 +88,15 @@ class SubtaskModel extends Base
->asc(self::TABLE.'.position');
}
+ public function countByAssigneeAndTaskStatus($userId)
+ {
+ return $this->db->table(self::TABLE)
+ ->eq('user_id', $userId)
+ ->eq(TaskModel::TABLE.'.is_active', TaskModel::STATUS_OPEN)
+ ->join(Taskmodel::TABLE, 'id', 'task_id')
+ ->count();
+ }
+
/**
* Get all subtasks for a given task
*
@@ -149,6 +129,24 @@ class SubtaskModel extends Base
}
/**
+ * Get subtasks for a list of tasks and a given assignee
+ *
+ * @param array $taskIds
+ * @param integer $userId
+ * @return array
+ */
+ public function getAllByTaskIdsAndAssignee(array $taskIds, $userId)
+ {
+ if (empty($taskIds)) {
+ return array();
+ }
+
+ return $this->subtaskListFormatter
+ ->withQuery($this->getQuery()->in('task_id', $taskIds)->eq(self::TABLE.'.user_id', $userId))
+ ->format();
+ }
+
+ /**
* Get a subtask by the id
*
* @access public
@@ -229,10 +227,11 @@ class SubtaskModel extends Base
$result = $this->db->table(self::TABLE)->eq('id', $values['id'])->save($values);
if ($result) {
- $this->subtaskTimeTrackingModel->updateTaskTimeTracking($values['task_id']);
+ $subtask = $this->getById($values['id']);
+ $this->subtaskTimeTrackingModel->updateTaskTimeTracking($subtask['task_id']);
if ($fireEvent) {
- $this->queueManager->push($this->subtaskEventJob->withParams($values['id'], self::EVENT_UPDATE, $values));
+ $this->queueManager->push($this->subtaskEventJob->withParams($subtask['id'], self::EVENT_UPDATE, $values));
}
}
@@ -310,24 +309,4 @@ class SubtaskModel extends Base
$values['user_id'] = isset($values['user_id']) ? $values['user_id'] : 0;
$this->hook->reference('model:subtask:creation:prepare', $values);
}
-
- /**
- * Add subtask status status to the resultset
- *
- * @access public
- * @param array $subtasks Subtasks
- * @return array
- */
- public function addStatusName(array $subtasks)
- {
- $status = $this->getStatusList();
-
- foreach ($subtasks as &$subtask) {
- $subtask['status_name'] = $status[$subtask['status']];
- $subtask['timer_start_date'] = isset($subtask['timer_start_date']) ? $subtask['timer_start_date'] : 0;
- $subtask['is_timer_started'] = ! empty($subtask['timer_start_date']);
- }
-
- return $subtasks;
- }
}