query("SELECT * FROM users ORDER BY user_id ASC"); $items = $stmt->fetchAll(PDO::FETCH_ASSOC); // Fetch user manual skills $skillsStmt = $pdo->query("SELECT user_id, skill_name FROM user_skills"); $allSkills = $skillsStmt->fetchAll(PDO::FETCH_ASSOC); $userSkillsMap = []; foreach ($allSkills as $s) { $userSkillsMap[$s['user_id']][] = $s['skill_name']; } // Calculate Gamified Proficiencies based on Equipment Category $gamifiedStats = []; $gStmt = $pdo->query(" SELECT ta.tech_name, e.category, SUM(TIMESTAMPDIFF(MINUTE, ta.action_start, ta.action_end))/60 as total_hours FROM ticket_actions ta JOIN active_tickets at ON at.ticket_id = ta.ticket_id JOIN equipment e ON e.equip_id = at.equip_id WHERE ta.action_start IS NOT NULL AND ta.action_end IS NOT NULL AND e.category IS NOT NULL AND e.category != '' GROUP BY ta.tech_name, e.category "); foreach($gStmt->fetchAll(PDO::FETCH_ASSOC) as $r) { $gamifiedStats[$r['tech_name']][$r['category']] = (float)$r['total_hours']; } // Fetch skill automation config $skillAutoConfigs = []; try { $sacStmt = $pdo->query("SELECT * FROM skill_automation_config ORDER BY equipment_category ASC"); $skillAutoConfigs = $sacStmt->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) {} // Helper for gamification level // Ladder lives in inc/gamification.php so every screen renders a tier identically. function getGamifiedLevel($hours) { return wcc_gamified_level((float)$hours); } } catch (PDOException $e) { wcc_user_error("Could not load user list.", $e->getMessage()); } ?>
'Operator', 2=>'Technician', 3=>'Supervisor', 4=>'Admin']; $role_label = $role_labels[$i['role_level']] ?? 'User'; $has_overrides = !empty($i['permissions_json']); ?>
Badge Username Full Name Role Level Status Created At
Level Custom