id; $sql .= " AND entity IN (" . getEntity('task') . ")"; if ($status !== null) { $sql .= " AND status = " . (int) $status; } $sql .= " ORDER BY priority DESC, date_start ASC"; $sql .= " LIMIT " . (int) $limit; $resql = $db->query($sql); $tasks = []; $mapper = new dmTask(); while ($obj = $db->fetch_object($resql)) { $task = new \Task($db); $task->fetch($obj->rowid); $tasks[] = $mapper->exportMappedData($task); } return [['tasks' => $tasks], 200]; } public function show($payload = null) { global $db, $user; $id = $payload['id'] ?? null; require_once DOL_DOCUMENT_ROOT . '/custom/monmodule/class/task.class.php'; $task = new \Task($db); $res = $task->fetch($id); if ($res <= 0) { return ['Task not found', 404]; } // Vérifier que c'est bien la tâche de l'utilisateur if ($task->fk_user != $user->id) { return ['Forbidden', 403]; } $mapper = new dmTask(); return [$mapper->exportMappedData($task), 200]; } public function create($payload = null) { global $db, $user; if (empty($payload['label'])) { return ['Label required', 400]; } require_once DOL_DOCUMENT_ROOT . '/custom/monmodule/class/task.class.php'; $task = new \Task($db); $task->label = $payload['label']; $task->description = $payload['description'] ?? ''; $task->status = $payload['status'] ?? 1; $task->priority = $payload['priority'] ?? 0; $task->date_start = $payload['date_start'] ?? null; $task->date_end = $payload['date_end'] ?? null; $res = $task->create($user); if ($res < 0) { return ['Error: ' . $task->error, 500]; } return [['id' => $res], 201]; } public function update($payload = null) { global $db, $user; $id = $payload['id'] ?? null; require_once DOL_DOCUMENT_ROOT . '/custom/monmodule/class/task.class.php'; $task = new \Task($db); $res = $task->fetch($id); if ($res <= 0) { return ['Task not found', 404]; } if ($task->fk_user != $user->id) { return ['Forbidden', 403]; } // Mise à jour des champs if (isset($payload['label'])) $task->label = $payload['label']; if (isset($payload['description'])) $task->description = $payload['description']; if (isset($payload['status'])) $task->status = $payload['status']; if (isset($payload['priority'])) $task->priority = $payload['priority']; if (isset($payload['date_start'])) $task->date_start = $payload['date_start']; if (isset($payload['date_end'])) $task->date_end = $payload['date_end']; $res = $task->update($user); if ($res < 0) { return ['Error: ' . $task->error, 500]; } return ['Updated', 200]; } public function delete($payload = null) { global $db, $user; $id = $payload['id'] ?? null; require_once DOL_DOCUMENT_ROOT . '/custom/monmodule/class/task.class.php'; $task = new \Task($db); $res = $task->fetch($id); if ($res <= 0) { return ['Task not found', 404]; } if ($task->fk_user != $user->id) { return ['Forbidden', 403]; } $res = $task->delete($user); if ($res < 0) { return ['Error: ' . $task->error, 500]; } return ['Deleted', 200]; } }