0) { $stmt = $pdo->prepare("UPDATE tasks SET object_id=?, assigned_to=?, title=?, description=?, priority=?, deadline=? WHERE id=?"); $stmt->execute([$objectId, $assignedTo ?: null, $title, $desc, $priority, $deadline ?: null, $id]); } else { $stmt = $pdo->prepare("INSERT INTO tasks (object_id, assigned_to, created_by, title, description, priority, deadline) VALUES (?,?,?,?,?,?,?)"); $stmt->execute([$objectId, $assignedTo ?: null, $userId, $title, $desc, $priority, $deadline ?: null]); } $message = 'Задача сохранена.'; auth_log($userId, 'task_save', "Title: $title"); } catch (\PDOException $e) { $message = 'Ошибка: ' . $e->getMessage(); } } } // Close task if (isset($_GET['close'])) { $id = (int)$_GET['close']; $csrf = $_GET['csrf'] ?? ''; if (auth_csrf_verify($csrf)) { $pdo->prepare("UPDATE tasks SET status='completed', closed_at=NOW() WHERE id=? AND (assigned_to=? OR ? IN ('owner','engineer'))") ->execute([$id, $userId, $role]); $message = 'Задача закрыта.'; } } $editTask = null; if (isset($_GET['edit']) && $role !== 'technician') { $stmt = $pdo->prepare("SELECT * FROM tasks WHERE id=?"); $stmt->execute([(int)$_GET['edit']]); $editTask = $stmt->fetch(); } // Filter $statusFilter = $_GET['status'] ?? ''; $search = trim($_GET['search'] ?? ''); $sql = "SELECT t.*, o.name as object_name, u.full_name as assigned_name FROM tasks t JOIN objects o ON o.id = t.object_id LEFT JOIN users u ON u.id = t.assigned_to WHERE 1=1"; $params = []; if ($role === 'technician') { $sql .= " AND t.assigned_to = ?"; $params[] = $userId; } if ($statusFilter) { $sql .= " AND t.status = ?"; $params[] = $statusFilter; } if ($search) { $sql .= " AND (t.title LIKE ? OR o.name LIKE ?)"; $params[] = "%$search%"; $params[] = "%$search%"; } $sql .= " ORDER BY FIELD(t.priority,'P1','P2','P3','P4'), t.deadline ASC, t.created_at DESC"; $stmt = $pdo->prepare($sql); $stmt->execute($params); $tasks = $stmt->fetchAll(); $activeObjects = $pdo->query("SELECT id, name FROM objects WHERE status='active' ORDER BY name")->fetchAll(); $engineers = $pdo->query("SELECT id, full_name FROM users WHERE role IN ('engineer','technician') AND is_active=1 ORDER BY full_name")->fetchAll(); $csrf = auth_csrf_token(); require __DIR__ . '/../../inc/header.php'; ?>

Задачи

Сброс
time(); } ?>
Приоритет Название Объект Назначена Статус Дедлайн Результат Действия
Нет задач
OK' : '') : '—' ?> ✏️