prepare("SELECT role FROM users WHERE id=?"); $stmt->execute([$userId]); $userRole = $stmt->fetchColumn(); if ($userRole) { $stmt = $pdo->prepare("INSERT INTO object_assignments (object_id, user_id, role) VALUES (?,?,?)"); $stmt->execute([$objectId, $userId, $userRole]); $message = 'Назначение добавлено.'; auth_log($session['user_id'], 'assignment_create', "Object: $objectId, User: $userId"); } else { $message = 'Сотрудник не найден.'; } } } // Unassign if (isset($_GET['remove'])) { $id = (int)$_GET['remove']; if (auth_csrf_verify($_GET['csrf'] ?? '')) { $pdo->prepare("UPDATE object_assignments SET unassigned_at=NOW() WHERE id=?")->execute([$id]); $message = 'Назначение завершено.'; } } $objects = $pdo->query("SELECT id, name FROM objects WHERE status='active' ORDER BY name")->fetchAll(); $engineers = $pdo->query("SELECT id, full_name, role FROM users WHERE role IN ('engineer','technician') AND is_active=1 ORDER BY full_name")->fetchAll(); // Get active assignments $assignments = $pdo->query(" SELECT oa.*, o.name as object_name, u.full_name as user_name, u.role as user_role FROM object_assignments oa JOIN objects o ON o.id = oa.object_id JOIN users u ON u.id = oa.user_id WHERE oa.unassigned_at IS NULL ORDER BY o.name, u.full_name ")->fetchAll(); $csrf = auth_csrf_token(); require __DIR__ . '/../../inc/header.php'; ?>

Назначения

Новое назначение

Текущие назначения

Объект Сотрудник Роль на объекте Назначен Действия
Нет активных назначений
Отвязать