58 lines
2.4 KiB
PHP
58 lines
2.4 KiB
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
require_once 'class/db-functions.php';
|
|
|
|
$response = ["success" => false, "message" => ""];
|
|
|
|
try {
|
|
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
|
|
throw new Exception("Invalid request method.");
|
|
}
|
|
|
|
// Recupera e sanifica i dati
|
|
$name = trim($_POST['name']);
|
|
$header_row = intval($_POST['header_row']);
|
|
$start_column = trim($_POST['start_column']);
|
|
$description = trim($_POST['description'] ?? '');
|
|
$target_table = trim($_POST['target_table']);
|
|
$button_size = trim($_POST['button_size'] ?? 'medium');
|
|
$button_bg_color = trim($_POST['button_bg_color'] ?? '#007bff');
|
|
$button_text_color = trim($_POST['button_text_color'] ?? '#ffffff');
|
|
$button_label = trim($_POST['button_label'] ?? 'Click Me');
|
|
$status = 'active'; // Default
|
|
|
|
// Recupera i client_specific_fields (JSON inviato dal form)
|
|
$client_specific_fields = trim($_POST['client_specific_fields'] ?? '{}');
|
|
// Decodifica il JSON per verificare che sia valido (opzionale, per sicurezza)
|
|
$decoded_fields = json_decode($client_specific_fields, true);
|
|
if (json_last_error() !== JSON_ERROR_NONE && !empty($client_specific_fields)) {
|
|
throw new Exception("Invalid JSON format for client-specific fields.");
|
|
}
|
|
|
|
// Controllo sui campi obbligatori
|
|
if (empty($name) || empty($header_row) || empty($start_column) || empty($target_table)) {
|
|
throw new Exception("All fields marked with * are required.");
|
|
}
|
|
|
|
// Connessione al database
|
|
$db = DBHandlerSelect::getInstance();
|
|
$pdo = $db->getConnection();
|
|
|
|
// Inserisci nel database, includendo client_specific_fields
|
|
$stmt = $pdo->prepare("INSERT INTO excel_templates
|
|
(name, header_row, start_column, description, target_table, button_size, button_bg_color, button_text_color, button_label, status, client_specific_fields, created_at, updated_at)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())");
|
|
$stmt->execute([$name, $header_row, $start_column, $description, $target_table, $button_size, $button_bg_color, $button_text_color, $button_label, $status, $client_specific_fields]);
|
|
|
|
if ($stmt->rowCount() > 0) {
|
|
$response["success"] = true;
|
|
} else {
|
|
throw new Exception("Failed to insert template.");
|
|
}
|
|
} catch (Exception $e) {
|
|
$response["message"] = $e->getMessage();
|
|
}
|
|
|
|
// Restituisce un JSON per il fetch
|
|
echo json_encode($response);
|