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:
31
api.php
31
api.php
@@ -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;
|
||||||
}
|
}
|
||||||
$todo['status'] = $status;
|
try {
|
||||||
$todo['muokkaaja'] = currentUser();
|
_dbExecute("UPDATE todos SET status = ?, muokattu = NOW(), muokkaaja = ? WHERE id = ?", [$status, currentUser(), $id]);
|
||||||
dbSaveTodo($companyId, $todo);
|
|
||||||
echo json_encode(['success' => true]);
|
echo json_encode(['success' => true]);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
http_response_code(500);
|
||||||
|
echo json_encode(['error' => 'Tallennus epäonnistui: ' . $e->getMessage()]);
|
||||||
|
}
|
||||||
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;
|
||||||
}
|
}
|
||||||
$todo['assigned_to'] = $input['assigned_to'] ?? '';
|
try {
|
||||||
$todo['muokkaaja'] = currentUser();
|
$assignedTo = $input['assigned_to'] ?? '';
|
||||||
dbSaveTodo($companyId, $todo);
|
_dbExecute("UPDATE todos SET assigned_to = ?, muokattu = NOW(), muokkaaja = ? WHERE id = ?", [$assignedTo, currentUser(), $id]);
|
||||||
echo json_encode(['success' => true]);
|
echo json_encode(['success' => true]);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
http_response_code(500);
|
||||||
|
echo json_encode(['error' => 'Tallennus epäonnistui: ' . $e->getMessage()]);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'todo_comment':
|
case 'todo_comment':
|
||||||
|
|||||||
Reference in New Issue
Block a user