feat: implement task API for status retrieval and expand task assignment logic to support custom assignee names

This commit is contained in:
root
2026-03-29 14:33:15 +07:00
parent 99f948ba5d
commit 2a670d80d1
2 changed files with 148 additions and 2 deletions

View File

@@ -176,7 +176,17 @@ $all_g = query("SELECT id, name FROM groups")->fetchAll();
$group_in = implode(',', array_fill(0, count($my_group_ids), '?')) ?: '0';
$params = array_merge([$user_id], $my_group_ids, $my_group_ids, [$user_id]);
$custom_tokens = [];
if(!empty($current_user['username'])) $custom_tokens[] = (string)$current_user['username'];
foreach($user_groups as $g) {
if(!empty($g['name'])) $custom_tokens[] = (string)$g['name'];
}
$custom_tokens = array_values(array_unique(array_filter(array_map('trim', $custom_tokens), fn($v) => $v !== '')));
$custom_in = implode(',', array_fill(0, count($custom_tokens), '?')) ?: '0';
$custom_like = $custom_tokens ? implode(' OR ', array_fill(0, count($custom_tokens), "(','||lower(replace(t.custom_assignee_name,' ',''))||',') LIKE ('%,'||lower(replace(?,' ',''))||',%')")) : '0';
$params = array_merge([$user_id], $my_group_ids, $my_group_ids, [$user_id], $custom_tokens, $custom_tokens);
$sql = "SELECT t.*, u.username as assignor_user_name, g.name as assignor_group_name, au.username as assignee_user_name, ag.name as assignee_group_name
FROM tasks t
@@ -188,6 +198,14 @@ $sql = "SELECT t.*, u.username as assignor_user_name, g.name as assignor_group_n
OR (t.assignee_type='group' AND t.assignee_id IN ($group_in))
OR (t.assignor_type='group' AND t.assignor_group_id IN ($group_in))
OR (t.assignor_type='user' AND t.assignor_id = ?)
OR (
COALESCE(t.assignee_type,'custom')='custom'
AND t.custom_assignee_name IS NOT NULL
AND (
t.custom_assignee_name IN ($custom_in)
OR ($custom_like)
)
)
ORDER BY t.created_at DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute($params);