0) { $stmt = $pdo->prepare("UPDATE incidents SET object_id=?, title=?, description=?, severity=?, assigned_to=? WHERE id=?"); $stmt->execute([$objectId, $title, $desc, $severity, $assignedTo ?: null, $id]); } else { $stmt = $pdo->prepare("INSERT INTO incidents (object_id, reported_by, assigned_to, title, description, severity) VALUES (?,?,?,?,?,?)"); $stmt->execute([$objectId, $userId, $assignedTo ?: null, $title, $desc, $severity]); } $message = 'Инцидент сохранён.'; auth_log($userId, 'incident_save', "Title: $title"); } catch (\PDOException $e) { $message = 'Ошибка: ' . $e->getMessage(); } } } // Resolve incident if (isset($_GET['resolve'])) { $id = (int)$_GET['resolve']; $csrf = $_GET['csrf'] ?? ''; if (auth_csrf_verify($csrf)) { $resolution = trim($_GET['resolution'] ?? ''); $pdo->prepare("UPDATE incidents SET status='resolved', resolution=?, resolved_at=NOW() WHERE id=?") ->execute([$resolution ?: 'Выполнено', $id]); $message = 'Инцидент закрыт.'; } } $editInc = null; if (isset($_GET['edit'])) { $stmt = $pdo->prepare("SELECT * FROM incidents WHERE id=?"); $stmt->execute([(int)$_GET['edit']]); $editInc = $stmt->fetch(); } $statusFilter = $_GET['status'] ?? ''; $severityFilter = $_GET['severity'] ?? ''; $sql = "SELECT i.*, o.name as object_name, u.full_name as assigned_name, r.full_name as reported_name FROM incidents i JOIN objects o ON o.id = i.object_id LEFT JOIN users u ON u.id = i.assigned_to LEFT JOIN users r ON r.id = i.reported_by WHERE 1=1"; $params = []; if ($role === 'technician') { $sql .= " AND (i.assigned_to = ? OR i.reported_by = ?)"; $params[] = $userId; $params[] = $userId; } if ($statusFilter) { $sql .= " AND i.status = ?"; $params[] = $statusFilter; } if ($severityFilter) { $sql .= " AND i.severity = ?"; $params[] = $severityFilter; } $sql .= " ORDER BY FIELD(i.severity,'P1','P2','P3'), i.created_at DESC"; $stmt = $pdo->prepare($sql); $stmt->execute($params); $incidents = $stmt->fetchAll(); $objects = $pdo->query("SELECT id, name FROM objects WHERE status='active' ORDER BY name")->fetchAll(); $engineers = $pdo->query("SELECT id, full_name FROM users WHERE is_active=1 ORDER BY full_name")->fetchAll(); $csrf = auth_csrf_token(); require __DIR__ . '/../../inc/header.php'; ?>
| Уровень | Название | Объект | Назначен | Статус | Создан | Действия |
|---|---|---|---|---|---|---|
| Нет инцидентов | ||||||
| = $inc['severity'] ?> | = htmlspecialchars($inc['title']) ?> | = htmlspecialchars($inc['object_name']) ?> | = htmlspecialchars($inc['assigned_name'] ?: '—') ?> | = $inc['status'] ?> | = date('d.m.Y H:i', strtotime($inc['created_at'])) ?> | ✏️ ✓ |