290 lines
9.9 KiB
PHP
290 lines
9.9 KiB
PHP
<?php
|
|
require_once "class/VisualLimsApiClient.class.php";
|
|
include('include/headscript.php');
|
|
|
|
// Force HTML response
|
|
header('Content-Type: text/html; charset=UTF-8');
|
|
|
|
// Initialize variables
|
|
$error = null;
|
|
$result = null;
|
|
$entityType = $_GET['entity_type'] ?? 'CommessaWeb';
|
|
$entityId = isset($_GET['entity_id']) ? (int)$_GET['entity_id'] : 0;
|
|
$customExpand = trim($_GET['expand'] ?? '');
|
|
$rawEndpoint = null;
|
|
|
|
function h($value)
|
|
{
|
|
return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
|
|
}
|
|
|
|
function renderArrayAsTable(array $items)
|
|
{
|
|
if (empty($items)) {
|
|
echo '<div class="alert alert-secondary">No records found</div>';
|
|
return;
|
|
}
|
|
|
|
$firstRow = reset($items);
|
|
if (!is_array($firstRow)) {
|
|
echo '<pre class="bg-light p-3 border rounded">' . h(json_encode($items, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)) . '</pre>';
|
|
return;
|
|
}
|
|
|
|
$headers = [];
|
|
foreach ($items as $row) {
|
|
if (is_array($row)) {
|
|
$headers = array_unique(array_merge($headers, array_keys($row)));
|
|
}
|
|
}
|
|
|
|
echo '<div class="table-responsive">';
|
|
echo '<table class="table table-striped table-bordered table-sm align-middle">';
|
|
echo '<thead class="table-dark"><tr>';
|
|
foreach ($headers as $header) {
|
|
echo '<th>' . h($header) . '</th>';
|
|
}
|
|
echo '</tr></thead><tbody>';
|
|
|
|
foreach ($items as $row) {
|
|
echo '<tr>';
|
|
foreach ($headers as $header) {
|
|
$value = $row[$header] ?? '';
|
|
if (is_array($value) || is_object($value)) {
|
|
$value = json_encode($value, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
echo '<td><pre style="white-space:pre-wrap; margin:0;">' . h($value) . '</pre></td>';
|
|
} else {
|
|
echo '<td>' . h($value) . '</td>';
|
|
}
|
|
}
|
|
echo '</tr>';
|
|
}
|
|
|
|
echo '</tbody></table>';
|
|
echo '</div>';
|
|
}
|
|
|
|
try {
|
|
if ($entityId > 0) {
|
|
$api = VisualLimsApiClient::getInstance();
|
|
|
|
// Default expands for better debugging
|
|
if ($customExpand !== '') {
|
|
$expand = $customExpand;
|
|
} else {
|
|
if ($entityType === 'CommessaWeb') {
|
|
$expand = implode(',', [
|
|
'CommesseCustomFields($expand=CustomField)',
|
|
'Campioni'
|
|
]);
|
|
} else {
|
|
$expand = implode(',', [
|
|
'CommesseCustomFields($expand=CustomField)',
|
|
'Campioni'
|
|
]);
|
|
}
|
|
}
|
|
|
|
$rawEndpoint = $entityType . '(' . $entityId . ')?$expand=' . $expand;
|
|
$result = $api->get($rawEndpoint);
|
|
}
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
}
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Debug Commessa API</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<style>
|
|
body {
|
|
background: #f5f7fb;
|
|
font-family: Arial, sans-serif;
|
|
}
|
|
|
|
.debug-card {
|
|
background: #fff;
|
|
border-radius: 12px;
|
|
box-shadow: 0 4px 18px rgba(0, 0, 0, 0.08);
|
|
padding: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.section-title {
|
|
font-size: 18px;
|
|
font-weight: 700;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
pre {
|
|
background: #f8f9fa;
|
|
border: 1px solid #ddd;
|
|
border-radius: 8px;
|
|
padding: 12px;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.label-box {
|
|
display: inline-block;
|
|
padding: 6px 10px;
|
|
border-radius: 8px;
|
|
background: #eef3ff;
|
|
color: #2446a8;
|
|
font-weight: 600;
|
|
margin-right: 8px;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.mini-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
gap: 12px;
|
|
}
|
|
|
|
.mini-box {
|
|
background: #f8fafc;
|
|
border: 1px solid #e4e7eb;
|
|
border-radius: 10px;
|
|
padding: 12px;
|
|
}
|
|
|
|
.mini-box strong {
|
|
display: block;
|
|
margin-bottom: 6px;
|
|
color: #1f2937;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container py-4">
|
|
<div class="debug-card">
|
|
<h2 class="mb-3">Commessa / CommessaWeb API Inspector</h2>
|
|
|
|
<form method="GET" class="row g-3">
|
|
<div class="col-md-3">
|
|
<label class="form-label">Entity Type</label>
|
|
<select name="entity_type" class="form-select">
|
|
<option value="CommessaWeb" <?= $entityType === 'CommessaWeb' ? 'selected' : '' ?>>CommessaWeb</option>
|
|
<option value="Commessa" <?= $entityType === 'Commessa' ? 'selected' : '' ?>>Commessa</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="col-md-2">
|
|
<label class="form-label">Entity ID</label>
|
|
<input type="number" name="entity_id" class="form-control" value="<?= h($entityId) ?>" required>
|
|
</div>
|
|
|
|
<div class="col-md-5">
|
|
<label class="form-label">Expand</label>
|
|
<input type="text" name="expand" class="form-control" value="<?= h($customExpand) ?>" placeholder="CommesseCustomFields($expand=CustomField),Campioni">
|
|
</div>
|
|
|
|
<div class="col-md-2 d-flex align-items-end">
|
|
<button type="submit" class="btn btn-primary w-100">Load Data</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<?php if ($rawEndpoint): ?>
|
|
<div class="debug-card">
|
|
<div class="section-title">Requested Endpoint</div>
|
|
<pre><?= h($rawEndpoint) ?></pre>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php if ($error): ?>
|
|
<div class="debug-card">
|
|
<div class="alert alert-danger mb-0">
|
|
<strong>API Error:</strong><br>
|
|
<?= h($error) ?>
|
|
</div>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php if ($result && is_array($result)): ?>
|
|
<div class="debug-card">
|
|
<div class="section-title">Main Information</div>
|
|
<div class="mini-grid">
|
|
<div class="mini-box">
|
|
<strong>ID</strong>
|
|
<?= h($result['IdCommessa'] ?? $result['IdCommessaWeb'] ?? '') ?>
|
|
</div>
|
|
<div class="mini-box">
|
|
<strong>Code</strong>
|
|
<?= h($result['CodiceCommessa'] ?? '') ?>
|
|
</div>
|
|
<div class="mini-box">
|
|
<strong>Cliente</strong>
|
|
<?= h($result['Cliente'] ?? '') ?>
|
|
</div>
|
|
<div class="mini-box">
|
|
<strong>SchemaCustomField</strong>
|
|
<?= h($result['SchemaCustomField'] ?? '') ?>
|
|
</div>
|
|
<div class="mini-box">
|
|
<strong>Richiedente</strong>
|
|
<?= h($result['Richiedente'] ?? '') ?>
|
|
</div>
|
|
<div class="mini-box">
|
|
<strong>Descrizione</strong>
|
|
<?= h($result['Descrizione'] ?? '') ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="debug-card">
|
|
<div class="section-title">Direct Properties</div>
|
|
<pre><?= h(json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)) ?></pre>
|
|
</div>
|
|
|
|
<?php if (!empty($result['CommesseCustomFields']) && is_array($result['CommesseCustomFields'])): ?>
|
|
<div class="debug-card">
|
|
<div class="section-title">CommesseCustomFields</div>
|
|
<?php
|
|
$fieldsRows = [];
|
|
foreach ($result['CommesseCustomFields'] as $field) {
|
|
$fieldsRows[] = [
|
|
'IdCommesseCustomFields' => $field['IdCommesseCustomFields'] ?? '',
|
|
'Valore' => $field['Valore'] ?? '',
|
|
'CustomFieldId' => $field['CustomField']['IdCustomField'] ?? '',
|
|
'Label' => $field['CustomField']['Descrizione'] ?? ($field['CustomField']['Name'] ?? ''),
|
|
'Tipo' => $field['CustomField']['Tipo'] ?? '',
|
|
];
|
|
}
|
|
renderArrayAsTable($fieldsRows);
|
|
?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php if (!empty($result['Campioni']) && is_array($result['Campioni'])): ?>
|
|
<div class="debug-card">
|
|
<div class="section-title">Campioni</div>
|
|
<?php renderArrayAsTable($result['Campioni']); ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<div class="debug-card">
|
|
<div class="section-title">Raw JSON</div>
|
|
<pre><?= h(json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)) ?></pre>
|
|
</div>
|
|
<?php elseif ($entityId > 0 && !$error): ?>
|
|
<div class="debug-card">
|
|
<div class="alert alert-warning mb-0">No data returned from API</div>
|
|
</div>
|
|
<?php endif; ?>
|
|
</div>
|
|
</body>
|
|
|
|
</html>
|
|
|
|
<!-- Example of use
|
|
debug_commessa_api.php?entity_type=CommessaWeb&entity_id=564779
|
|
debug_commessa_api.php?entity_type=Commessa&entity_id=12345
|
|
debug_commessa_api.php?entity_type=CommessaWeb&entity_id=564779&expand=CommesseCustomFields($expand=CustomField),Campioni
|
|
-->
|