added sheet and config API in insert edit template
This commit is contained in:
@@ -3,9 +3,20 @@
|
||||
// Retrieve all routines from database
|
||||
$db = DBHandlerSelect::getInstance();
|
||||
$pdo = $db->getConnection();
|
||||
|
||||
$stmt = $pdo->prepare("SELECT * FROM routine");
|
||||
$stmt->execute();
|
||||
$routines = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
// Retrieve active API/JSON configurations
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT id, name, provider_code, api_type, php_class_name
|
||||
FROM api_configurations
|
||||
WHERE is_active = 1
|
||||
ORDER BY name ASC
|
||||
");
|
||||
$stmt->execute();
|
||||
$apiConfigurations = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
@@ -40,7 +51,8 @@ $routines = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
<li>Template Name</li>
|
||||
<li>Source Type</li>
|
||||
<li>Schema and Client</li>
|
||||
<li>Row Header and Column Header only for XLS templates</li>
|
||||
<li>Row Header, Column Header and Sheet Number only for XLS templates</li>
|
||||
<li>API / JSON Configuration only for API / JSON templates</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -67,7 +79,8 @@ $routines = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
<label class="form-label">Source Type *</label>
|
||||
<select name="source_type" id="sourceType" class="form-control" required>
|
||||
<option value="XLS" selected>XLS</option>
|
||||
<option value="API">API</option>
|
||||
<option value="API">API / JSON</option>
|
||||
<option value="PDF">PDF</option>
|
||||
</select>
|
||||
<small class="text-muted">Choose the source used by this template</small>
|
||||
</div>
|
||||
@@ -82,6 +95,58 @@ $routines = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
<input type="text" name="start_column" id="startColumn" class="form-control" value="A" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-3" id="xlsSheetNumberWrapper">
|
||||
<label class="form-label">XLS Sheet Number</label>
|
||||
<input
|
||||
type="number"
|
||||
name="xls_sheet_index"
|
||||
id="xlsSheetIndex"
|
||||
class="form-control"
|
||||
min="0"
|
||||
value="0">
|
||||
<small class="text-muted">
|
||||
Use 0 for the first sheet, 1 for the second sheet, 2 for the third sheet, and so on.
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="mb-3" id="apiConfigWrapper" style="display: none;">
|
||||
<label class="form-label">API / JSON Configuration *</label>
|
||||
<select name="api_config_id" id="apiConfigSelect" class="form-control">
|
||||
<option value="">Select an API configuration...</option>
|
||||
|
||||
<?php foreach ($apiConfigurations as $apiConfig): ?>
|
||||
<?php
|
||||
$apiLabelParts = [];
|
||||
|
||||
if (!empty($apiConfig['name'])) {
|
||||
$apiLabelParts[] = $apiConfig['name'];
|
||||
}
|
||||
|
||||
if (!empty($apiConfig['provider_code'])) {
|
||||
$apiLabelParts[] = '[' . $apiConfig['provider_code'] . ']';
|
||||
}
|
||||
|
||||
if (!empty($apiConfig['api_type'])) {
|
||||
$apiLabelParts[] = '(' . $apiConfig['api_type'] . ')';
|
||||
}
|
||||
|
||||
if (!empty($apiConfig['php_class_name'])) {
|
||||
$apiLabelParts[] = '- ' . $apiConfig['php_class_name'];
|
||||
}
|
||||
|
||||
$apiLabel = implode(' ', $apiLabelParts);
|
||||
?>
|
||||
|
||||
<option value="<?php echo (int)$apiConfig['id']; ?>">
|
||||
<?php echo htmlspecialchars($apiLabel, ENT_QUOTES, 'UTF-8'); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<small class="text-muted">
|
||||
Select the API/JSON configuration linked to this template.
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label"><?= htmlspecialchars($desctemplate, ENT_QUOTES, 'UTF-8'); ?></label>
|
||||
<textarea name="description" class="form-control"></textarea>
|
||||
@@ -185,10 +250,16 @@ $routines = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
const routineAction3 = document.getElementById("routineAction3");
|
||||
|
||||
const sourceType = document.getElementById("sourceType");
|
||||
|
||||
const headerRowWrapper = document.getElementById("headerRowWrapper");
|
||||
const startColumnWrapper = document.getElementById("startColumnWrapper");
|
||||
const xlsSheetNumberWrapper = document.getElementById("xlsSheetNumberWrapper");
|
||||
const apiConfigWrapper = document.getElementById("apiConfigWrapper");
|
||||
|
||||
const headerRow = document.getElementById("headerRow");
|
||||
const startColumn = document.getElementById("startColumn");
|
||||
const xlsSheetIndex = document.getElementById("xlsSheetIndex");
|
||||
const apiConfigSelect = document.getElementById("apiConfigSelect");
|
||||
|
||||
if (!form || !clientLoadingStatus || !schemaLoadingStatus || !routineSelect || !routineDetails) {
|
||||
alert("Errore: Uno o più elementi della pagina non sono stati trovati. Contatta l'amministratore.");
|
||||
@@ -210,27 +281,57 @@ $routines = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
allowClear: true
|
||||
});
|
||||
|
||||
$('#apiConfigSelect').select2({
|
||||
placeholder: "Select an API configuration...",
|
||||
allowClear: true
|
||||
});
|
||||
|
||||
function updateSourceFields() {
|
||||
const selectedSource = sourceType.value;
|
||||
|
||||
if (selectedSource === 'API') {
|
||||
headerRowWrapper.style.opacity = '0.6';
|
||||
startColumnWrapper.style.opacity = '0.6';
|
||||
const isXls = selectedSource === 'XLS';
|
||||
const isApiJson = selectedSource === 'API';
|
||||
|
||||
headerRow.required = false;
|
||||
startColumn.required = false;
|
||||
|
||||
headerRow.disabled = true;
|
||||
startColumn.disabled = true;
|
||||
} else {
|
||||
headerRowWrapper.style.opacity = '1';
|
||||
startColumnWrapper.style.opacity = '1';
|
||||
if (isXls) {
|
||||
headerRowWrapper.style.display = 'block';
|
||||
startColumnWrapper.style.display = 'block';
|
||||
xlsSheetNumberWrapper.style.display = 'block';
|
||||
|
||||
headerRow.required = true;
|
||||
startColumn.required = true;
|
||||
xlsSheetIndex.required = true;
|
||||
|
||||
headerRow.disabled = false;
|
||||
startColumn.disabled = false;
|
||||
xlsSheetIndex.disabled = false;
|
||||
|
||||
apiConfigWrapper.style.display = 'none';
|
||||
apiConfigSelect.required = false;
|
||||
apiConfigSelect.disabled = true;
|
||||
$('#apiConfigSelect').val(null).trigger('change');
|
||||
} else {
|
||||
headerRowWrapper.style.display = 'none';
|
||||
startColumnWrapper.style.display = 'none';
|
||||
xlsSheetNumberWrapper.style.display = 'none';
|
||||
|
||||
headerRow.required = false;
|
||||
startColumn.required = false;
|
||||
xlsSheetIndex.required = false;
|
||||
|
||||
headerRow.disabled = true;
|
||||
startColumn.disabled = true;
|
||||
xlsSheetIndex.disabled = true;
|
||||
|
||||
if (isApiJson) {
|
||||
apiConfigWrapper.style.display = 'block';
|
||||
apiConfigSelect.required = true;
|
||||
apiConfigSelect.disabled = false;
|
||||
} else {
|
||||
apiConfigWrapper.style.display = 'none';
|
||||
apiConfigSelect.required = false;
|
||||
apiConfigSelect.disabled = true;
|
||||
$('#apiConfigSelect').val(null).trigger('change');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,7 +362,12 @@ $routines = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
data.value.forEach(client => {
|
||||
const nome = client.Nominativo || "Nome non disponibile";
|
||||
const id = client.IdCliente || "ID non disponibile";
|
||||
const option = new Option(`${nome.trim()} (ID: ${id})`, id);
|
||||
|
||||
const codiceCliente = (client.CodiceCliente ?? client.codiceCliente ?? "").toString().trim();
|
||||
const suffix = (codiceCliente.split("_")[1] || "").trim();
|
||||
const shortCode = suffix || (codiceCliente ? codiceCliente.charAt(0) : "--");
|
||||
|
||||
const option = new Option(`${nome.trim()} - ${shortCode} (ID: ${id})`, id);
|
||||
select.add(option);
|
||||
});
|
||||
|
||||
@@ -388,6 +494,28 @@ $routines = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
let formData = new FormData(this);
|
||||
|
||||
const selectedSource = sourceType.value;
|
||||
|
||||
if (selectedSource === 'XLS' && xlsSheetIndex.value === '') {
|
||||
Swal.fire({
|
||||
title: "Errore!",
|
||||
text: "Inserisci il numero del foglio XLS.",
|
||||
icon: "error",
|
||||
confirmButtonText: "OK"
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (selectedSource === 'API' && !apiConfigSelect.value) {
|
||||
Swal.fire({
|
||||
title: "Errore!",
|
||||
text: "Seleziona una configurazione API / JSON.",
|
||||
icon: "error",
|
||||
confirmButtonText: "OK"
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const clientSelect = document.getElementById("clientSelect");
|
||||
const clientId = clientSelect.value;
|
||||
const selectedClientOption = clientSelect.options[clientSelect.selectedIndex];
|
||||
|
||||
Reference in New Issue
Block a user