getConnection();
// AJAX salvataggio singolo
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['ajax'] == '1') {
header('Content-Type: application/json');
if ($_POST['action'] === 'save_single_skill') {
$employee_id = (int)($_POST['employee_id'] ?? 0);
$skill_id = (int)($_POST['skill_id'] ?? 0);
$level = trim($_POST['level'] ?? '');
try {
$pdo->prepare("DELETE FROM employee_skills WHERE employee_id = ? AND skill_id = ?")
->execute([$employee_id, $skill_id]);
if ($level !== '' && $level !== '–') {
$pdo->prepare("INSERT INTO employee_skills (employee_id, skill_id, level) VALUES (?, ?, ?)")
->execute([$employee_id, $skill_id, $level]);
}
echo json_encode(['success' => true]);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}
exit;
}
echo json_encode(['success' => false, 'message' => 'Azione non valida']);
exit;
}
// DATI
$employees = $pdo->query("
SELECT id, CONCAT(first_name, ' ', last_name) AS nome
FROM employees
ORDER BY id
")->fetchAll(PDO::FETCH_ASSOC);
$skills = $pdo->query("
SELECT
s.id,
s.name,
COALESCE(s.abbreviato, SUBSTRING(s.name, 1, 12)) AS acronimo,
pl.line_number,
pl.name AS linea
FROM skills s
LEFT JOIN production_lines pl ON s.production_line_id = pl.id
ORDER BY s.ordinamento ASC, COALESCE(pl.line_number, 999), s.id
")->fetchAll(PDO::FETCH_ASSOC);
$livelli = [];
$stmt = $pdo->query("SELECT employee_id, skill_id, level FROM employee_skills");
while ($r = $stmt->fetch(PDO::FETCH_ASSOC)) {
$livelli[$r['employee_id']][$r['skill_id']] = $r['level'];
}
?>
Matrice Skills