Korjaa todo status/assign: suora UPDATE dbSaveTodo:n sijaan

dbSaveTodo kaatui koska dbLoadTodo palauttaa ylimääräisiä
kenttiä (comments, time_entries, total_hours). Vaihdettu
suoraan UPDATE-lauseeksi + lisätty JSON-virhevastaukset
kaikkiin virhetilanteisiin (404/403/500).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 13:49:49 +02:00
parent 3e1fe6e831
commit b0c9817aaa

35
api.php
View File

@@ -2295,7 +2295,9 @@ switch ($action) {
$status = $input['status'] ?? ''; $status = $input['status'] ?? '';
$todo = dbLoadTodo($id); $todo = dbLoadTodo($id);
if (!$todo || $todo['company_id'] !== $companyId) { if (!$todo || $todo['company_id'] !== $companyId) {
http_response_code(404); break; http_response_code(404);
echo json_encode(['error' => 'Tehtävää ei löytynyt']);
break;
} }
// Feature request status: vain admin // Feature request status: vain admin
if ($todo['type'] === 'feature_request' && !isAdmin()) { if ($todo['type'] === 'feature_request' && !isAdmin()) {
@@ -2305,12 +2307,17 @@ switch ($action) {
} }
// Task status: vain admin // Task status: vain admin
if ($todo['type'] === 'task' && !isAdmin()) { if ($todo['type'] === 'task' && !isAdmin()) {
http_response_code(403); break; http_response_code(403);
echo json_encode(['error' => 'Vain admin voi muuttaa tehtävän statusta']);
break;
}
try {
_dbExecute("UPDATE todos SET status = ?, muokattu = NOW(), muokkaaja = ? WHERE id = ?", [$status, currentUser(), $id]);
echo json_encode(['success' => true]);
} catch (\Throwable $e) {
http_response_code(500);
echo json_encode(['error' => 'Tallennus epäonnistui: ' . $e->getMessage()]);
} }
$todo['status'] = $status;
$todo['muokkaaja'] = currentUser();
dbSaveTodo($companyId, $todo);
echo json_encode(['success' => true]);
break; break;
case 'todo_assign': case 'todo_assign':
@@ -2322,12 +2329,18 @@ switch ($action) {
$id = $input['id'] ?? ''; $id = $input['id'] ?? '';
$todo = dbLoadTodo($id); $todo = dbLoadTodo($id);
if (!$todo || $todo['company_id'] !== $companyId) { if (!$todo || $todo['company_id'] !== $companyId) {
http_response_code(404); break; http_response_code(404);
echo json_encode(['error' => 'Tehtävää ei löytynyt']);
break;
}
try {
$assignedTo = $input['assigned_to'] ?? '';
_dbExecute("UPDATE todos SET assigned_to = ?, muokattu = NOW(), muokkaaja = ? WHERE id = ?", [$assignedTo, currentUser(), $id]);
echo json_encode(['success' => true]);
} catch (\Throwable $e) {
http_response_code(500);
echo json_encode(['error' => 'Tallennus epäonnistui: ' . $e->getMessage()]);
} }
$todo['assigned_to'] = $input['assigned_to'] ?? '';
$todo['muokkaaja'] = currentUser();
dbSaveTodo($companyId, $todo);
echo json_encode(['success' => true]);
break; break;
case 'todo_comment': case 'todo_comment':