select('task_assignees.*, users.name as user_name, users.email as user_email') ->join('users', 'task_assignees.user_id = users.id', 'left') ->where('task_id', $taskId) ->findAll(); } /** * Получить задачи пользователя */ public function getTasksByUser(int $userId, int $organizationId): array { return $this->select('tasks.*') ->join('tasks', 'task_assignees.task_id = tasks.id') ->where('task_assignees.user_id', $userId) ->where('tasks.organization_id', $organizationId) ->findAll(); } /** * Добавить исполнителя */ public function addAssignee(int $taskId, int $userId, string $role = 'assignee'): int { return $this->insert([ 'task_id' => $taskId, 'user_id' => $userId, 'role' => $role, 'assigned_at' => date('Y-m-d H:i:s'), ]); } /** * Удалить исполнителя */ public function removeAssignee(int $taskId, int $userId): bool { return $this->where('task_id', $taskId) ->where('user_id', $userId) ->delete() > 0; } /** * Проверить, является ли пользователь исполнителем */ public function isAssignee(int $taskId, int $userId): bool { return $this->where('task_id', $taskId) ->where('user_id', $userId) ->countAllResults() > 0; } }