/
kunda
/
gantt-test-task
Обзор
Документация
Войти
/
kunda
/
gantt-test-task
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
api/tasks.php
101 строка
3 KB
Kekovich-kw
init
20 май 2026, 09:48
20 май 2026, 09:48
f395d5f
Код
Авторство
О чём код?
<?php require __DIR__ . '/bootstrap.php'; $method = $_SERVER['REQUEST_METHOD']; $id = isset($_GET['id']) ? (int) $_GET['id'] : null; switch ($method) { case 'GET': if ($id) { $stmt = $pdo->prepare('SELECT * FROM gantt_tasks WHERE id = ?'); $stmt->execute([$id]); $row = $stmt->fetch(); if (!$row) { respond(['error' => 'Task not found'], 404); } respond(row_to_task($row)); } $rows = $pdo->query('SELECT * FROM gantt_tasks ORDER BY start_date ASC')->fetchAll(); respond(array_map('row_to_task', $rows)); break; case 'POST': $body = json_body(); $name = trim($body['name'] ?? ''); $start = $body['start'] ?? ''; $end = $body['end'] ?? ''; if ($name === '' || $start === '' || $end === '') { respond(['error' => 'name, start and end are required'], 422); } $stmt = $pdo->prepare( 'INSERT INTO gantt_tasks (name, start_date, end_date, progress, dependencies, custom_class) VALUES (?, ?, ?, ?, ?, ?)', ); $stmt->execute([ $name, $start, $end, $body['progress'] ?? 0, $body['dependencies'] ?? null, $body['custom_class'] ?? null, ]); $newId = (int) $pdo->lastInsertId(); $stmt = $pdo->prepare('SELECT * FROM gantt_tasks WHERE id = ?'); $stmt->execute([$newId]); respond(row_to_task($stmt->fetch()), 201); break; case 'PUT': if (!$id) { respond(['error' => 'id is required'], 422); } $body = json_body(); $fields = []; $params = []; $map = [ 'name' => 'name', 'start' => 'start_date', 'end' => 'end_date', 'progress' => 'progress', 'dependencies' => 'dependencies', 'custom_class' => 'custom_class', ]; foreach ($map as $key => $column) { if (array_key_exists($key, $body)) { $fields[] = "$column = ?"; $params[] = $body[$key]; } } if (!$fields) { respond(['error' => 'No fields to update'], 422); } $params[] = $id; $stmt = $pdo->prepare( 'UPDATE gantt_tasks SET ' . implode(', ', $fields) . ' WHERE id = ?', ); $stmt->execute($params); $stmt = $pdo->prepare('SELECT * FROM gantt_tasks WHERE id = ?'); $stmt->execute([$id]); $row = $stmt->fetch(); if (!$row) { respond(['error' => 'Task not found'], 404); } respond(row_to_task($row)); break; case 'DELETE': if (!$id) { respond(['error' => 'id is required'], 422); } $stmt = $pdo->prepare('DELETE FROM gantt_tasks WHERE id = ?'); $stmt->execute([$id]); if ($stmt->rowCount() === 0) { respond(['error' => 'Task not found'], 404); } respond(['ok' => true, 'id' => (string) $id]); break; default: respond(['error' => 'Method not allowed'], 405); }