query("SELECT COUNT(*) FROM laptop_assets")->fetchColumn(); $laptop_assigned = $db->query("SELECT COUNT(*) FROM laptop_assets WHERE status = 'assigned'")->fetchColumn(); // Cards $card_total = $db->query("SELECT COUNT(*) FROM access_cards")->fetchColumn(); $card_assigned = $db->query("SELECT COUNT(*) FROM access_cards WHERE status = 'assigned'")->fetchColumn(); // MFP $mfp_total = $db->query("SELECT COUNT(*) FROM mfp_accounts")->fetchColumn(); $mfp_active = $db->query("SELECT COUNT(*) FROM mfp_accounts WHERE status = 'active'")->fetchColumn(); // Users $users_general = $db->query("SELECT COUNT(*) FROM users WHERE accounting_type = '일반회계'")->fetchColumn(); $users_special = $db->query("SELECT COUNT(*) FROM users WHERE accounting_type = '특별회계'")->fetchColumn(); echo json_encode([ 'laptops' => ['total' => (int) $laptop_total, 'assigned' => (int) $laptop_assigned], 'cards' => ['total' => (int) $card_total, 'assigned' => (int) $card_assigned], 'mfp' => ['total' => (int) $mfp_total, 'assigned' => (int) $mfp_active], 'users' => ['general' => (int) $users_general, 'special' => (int) $users_special] ]); break; case 'get_users': $query = "SELECT u.*, d.name as dept_name FROM users u LEFT JOIN departments d ON u.department_id = d.id"; $search = $_GET['search'] ?? ''; if ($search) { $query .= " WHERE u.name LIKE :search OR u.emp_id LIKE :search OR u.email LIKE :search"; $stmt = $db->prepare($query); $stmt->execute(['search' => "%$search%"]); } else { $stmt = $db->query($query); } echo json_encode($stmt->fetchAll()); break; case 'get_laptops': $query = "SELECT a.*, m.model_name, m.manufacturer, u.name as user_name FROM laptop_assets a LEFT JOIN laptop_models m ON a.model_id = m.id LEFT JOIN users u ON a.current_user_id = u.id"; echo json_encode($db->query($query)->fetchAll()); break; default: echo json_encode(['error' => 'Invalid action']); break; } } catch (Exception $e) { http_response_code(500); echo json_encode(['error' => $e->getMessage()]); }