'Unauthorized']); exit; } header('Content-Type: application/json'); try { // Read from matrici cache (populated by get_matrici.php / warm_cache.php) $cacheFile = __DIR__ . '/cache/matrici.json'; if (file_exists($cacheFile)) { $data = json_decode(file_get_contents($cacheFile), true); $matrici = $data['value'] ?? []; } else { // Fallback: trigger cache creation require_once __DIR__ . '/class/VisualLimsApiClient.class.php'; $api = VisualLimsApiClient::getInstance(); $apiData = $api->get('Matrice'); $matrici = []; foreach (($apiData['value'] ?? []) as $item) { $nome = $item['NomeMatrice'] ?? ''; if ($nome !== '' && substr($nome, 0, 1) !== '*') { $matrici[] = ['IdMatrice' => $item['IdMatrice'], 'NomeMatrice' => $nome, 'MacroMatrice' => $item['MacroMatrice'] ?? null]; } } if (!is_dir(__DIR__ . '/cache')) mkdir(__DIR__ . '/cache', 0777, true); file_put_contents($cacheFile, json_encode(['success' => true, 'value' => $matrici])); } // Extract unique MacroMatrice values $macroValues = []; foreach ($matrici as $m) { $macro = $m['MacroMatrice'] ?? null; if ($macro !== null && $macro !== '' && substr($macro, 0, 1) !== '*') { $macroValues[$macro] = true; } } $macroMatrici = array_keys($macroValues); sort($macroMatrici); echo json_encode(['success' => true, 'value' => $macroMatrici]); } catch (Exception $e) { http_response_code(500); echo json_encode(['success' => false, 'message' => $e->getMessage()]); }