From b0c9817aaa26d7c05264a518fb9ac87a3c719a44 Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Wed, 11 Mar 2026 13:49:49 +0200 Subject: [PATCH] Korjaa todo status/assign: suora UPDATE dbSaveTodo:n sijaan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- api.php | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/api.php b/api.php index 5dc1e21..f6954aa 100644 --- a/api.php +++ b/api.php @@ -2295,7 +2295,9 @@ switch ($action) { $status = $input['status'] ?? ''; $todo = dbLoadTodo($id); 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 if ($todo['type'] === 'feature_request' && !isAdmin()) { @@ -2305,12 +2307,17 @@ switch ($action) { } // Task status: vain admin 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; case 'todo_assign': @@ -2322,12 +2329,18 @@ switch ($action) { $id = $input['id'] ?? ''; $todo = dbLoadTodo($id); 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; case 'todo_comment':