update
This commit is contained in:
parent
62bf4ebd92
commit
9826331545
File diff suppressed because one or more lines are too long
@ -5,11 +5,20 @@ error_reporting(E_ALL);
|
|||||||
ini_set('log_errors', 1);
|
ini_set('log_errors', 1);
|
||||||
ini_set('error_log', __DIR__ . '/logsapi/export_lims_error.log');
|
ini_set('error_log', __DIR__ . '/logsapi/export_lims_error.log');
|
||||||
|
|
||||||
// Includi il file con la connessione al database
|
// Includi il file con la connessione al database e Dotenv
|
||||||
require_once __DIR__ . '/include/headscript.php';
|
require_once __DIR__ . '/include/headscript.php';
|
||||||
require_once dirname(__DIR__, 2) . '/vendor/autoload.php';
|
require_once dirname(__DIR__, 2) . '/vendor/autoload.php';
|
||||||
require_once __DIR__ . '/class/VisualLimsApiClient.class.php';
|
require_once __DIR__ . '/class/VisualLimsApiClient.class.php';
|
||||||
|
|
||||||
|
use Dotenv\Dotenv;
|
||||||
|
|
||||||
|
// Carica il file .env
|
||||||
|
$dotenv = Dotenv::createImmutable(dirname(__DIR__, 3)); // Torna al livello di public
|
||||||
|
$dotenv->load();
|
||||||
|
|
||||||
|
// Leggi la variabile SIMULATE_EXPORT_LIMS
|
||||||
|
$simulate = filter_var($_ENV['SIMULATE_EXPORT_LIMS'] ?? true, FILTER_VALIDATE_BOOLEAN);
|
||||||
|
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -30,13 +39,6 @@ try {
|
|||||||
$db = DBHandlerSelect::getInstance();
|
$db = DBHandlerSelect::getInstance();
|
||||||
$pdo = $db->getConnection();
|
$pdo = $db->getConnection();
|
||||||
|
|
||||||
// Simula idcommessaweb per il test (sostituire con risposta API nel flusso reale)
|
|
||||||
$idcommessaweb = 10176; // Fittizio per il test
|
|
||||||
|
|
||||||
// Salva idcommessaweb in datadb (simulazione per il test)
|
|
||||||
$updateStmt = $pdo->prepare("UPDATE datadb SET idcommessaweb = :idcommessaweb WHERE iddatadb = :iddatadb");
|
|
||||||
$updateStmt->execute(['idcommessaweb' => $idcommessaweb, 'iddatadb' => $iddatadb]);
|
|
||||||
|
|
||||||
// Step 1: Creazione payload per CommessaWeb
|
// Step 1: Creazione payload per CommessaWeb
|
||||||
$queryCommessa = "
|
$queryCommessa = "
|
||||||
SELECT
|
SELECT
|
||||||
@ -56,6 +58,11 @@ try {
|
|||||||
throw new Exception("Nessun record trovato per iddatadb: {$iddatadb}");
|
throw new Exception("Nessun record trovato per iddatadb: {$iddatadb}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validazione payload
|
||||||
|
if (empty($recordCommessa['Cliente']) || empty($recordCommessa['SchemaCustomField'])) {
|
||||||
|
throw new Exception("Dati mancanti per CommessaWeb: Cliente o SchemaCustomField non validi");
|
||||||
|
}
|
||||||
|
|
||||||
// Payload per creazione CommessaWeb
|
// Payload per creazione CommessaWeb
|
||||||
$payloadCommessa = [
|
$payloadCommessa = [
|
||||||
'Cliente' => (int)$recordCommessa['Cliente'],
|
'Cliente' => (int)$recordCommessa['Cliente'],
|
||||||
@ -64,10 +71,6 @@ try {
|
|||||||
'Descrizione' => 'example'
|
'Descrizione' => 'example'
|
||||||
];
|
];
|
||||||
|
|
||||||
// Salva il payload di creazione CommessaWeb
|
|
||||||
$outputFileCommessa = $logDir . "/commessaweb_create_{$iddatadb}.json";
|
|
||||||
file_put_contents($outputFileCommessa, json_encode($payloadCommessa, JSON_PRETTY_PRINT));
|
|
||||||
|
|
||||||
// Step 2: Creazione payload per campi custom (CommesseCustomFields)
|
// Step 2: Creazione payload per campi custom (CommesseCustomFields)
|
||||||
$queryCustomFields = "
|
$queryCustomFields = "
|
||||||
SELECT
|
SELECT
|
||||||
@ -96,10 +99,6 @@ try {
|
|||||||
'CommesseCustomFields' => $commesseCustomFields
|
'CommesseCustomFields' => $commesseCustomFields
|
||||||
];
|
];
|
||||||
|
|
||||||
// Salva il payload dei campi custom
|
|
||||||
$outputFileCustomFields = $logDir . "/commessaweb_customfields_{$iddatadb}.json";
|
|
||||||
file_put_contents($outputFileCustomFields, json_encode($payloadCustomFields, JSON_PRETTY_PRINT));
|
|
||||||
|
|
||||||
// Step 3: Creazione payload per Campioni (da identification_parts)
|
// Step 3: Creazione payload per Campioni (da identification_parts)
|
||||||
$queryCampioni = "
|
$queryCampioni = "
|
||||||
SELECT
|
SELECT
|
||||||
@ -116,84 +115,129 @@ try {
|
|||||||
|
|
||||||
$payloadsCampioni = [];
|
$payloadsCampioni = [];
|
||||||
foreach ($campioni as $campione) {
|
foreach ($campioni as $campione) {
|
||||||
|
if (empty($campione['Matrice'])) {
|
||||||
|
throw new Exception("Matrice non valida per campione: {$campione['part_number']}");
|
||||||
|
}
|
||||||
$payloadCampione = [
|
$payloadCampione = [
|
||||||
'Commessa' => $idcommessaweb, // Usa idcommessaweb simulato
|
'Commessa' => null, // Sarà impostato dopo
|
||||||
'Matrice' => (int)$campione['Matrice'],
|
'Matrice' => (int)$campione['Matrice'],
|
||||||
'SottoMatrice' => null,
|
'SottoMatrice' => null,
|
||||||
'SchemaCustomField' => 1,
|
'SchemaCustomField' => 1,
|
||||||
'NoteWeb' => $campione['NoteWeb'] ?? ''
|
'NoteWeb' => $campione['NoteWeb'] ?? ''
|
||||||
];
|
];
|
||||||
|
|
||||||
// Salva il payload del campione
|
|
||||||
$outputFileCampione = $logDir . "/campione_{$iddatadb}_{$campione['part_number']}.json";
|
|
||||||
file_put_contents($outputFileCampione, json_encode($payloadCampione, JSON_PRETTY_PRINT));
|
|
||||||
$payloadsCampioni[] = $payloadCampione;
|
$payloadsCampioni[] = $payloadCampione;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 4: Creazione payload per InviaCommessa
|
// Step 4: Creazione payload per InviaCommessa
|
||||||
$payloadInviaCommessa = []; // Corpo vuoto, come tipico per azioni OData
|
$payloadInviaCommessa = [];
|
||||||
$outputFileInviaCommessa = $logDir . "/commessaweb_invia_{$iddatadb}.json";
|
|
||||||
file_put_contents($outputFileInviaCommessa, json_encode($payloadInviaCommessa, JSON_PRETTY_PRINT));
|
|
||||||
|
|
||||||
// Aggiorna lo status a 'l' (To LIMS)
|
// Variabile per idcommessaweb
|
||||||
$updateStmt = $pdo->prepare("UPDATE datadb SET status = 'l' WHERE iddatadb = :iddatadb");
|
$idcommessaweb = null;
|
||||||
$updateStmt->execute(['iddatadb' => $iddatadb]);
|
$commessaweb = '';
|
||||||
|
|
||||||
// Risposta di successo
|
if ($simulate) {
|
||||||
echo json_encode([
|
// Flusso simulato
|
||||||
'success' => true,
|
$idcommessaweb = 10176; // Fittizio per il test
|
||||||
'message' => "Payload generati e salvati in {$outputFileCommessa}, {$outputFileCustomFields}, file campioni e {$outputFileInviaCommessa}",
|
|
||||||
'idcommessaweb' => $idcommessaweb,
|
|
||||||
'payload_commessa' => $payloadCommessa,
|
|
||||||
'payload_customfields' => $payloadCustomFields,
|
|
||||||
'payload_campioni' => $payloadsCampioni,
|
|
||||||
'payload_invia_commessa' => $payloadInviaCommessa
|
|
||||||
]);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
// Log dell'errore
|
|
||||||
file_put_contents($logDir . '/export_lims_error.log', date('Y-m-d H:i:s') . ' - ' . $e->getMessage() . PHP_EOL, FILE_APPEND);
|
|
||||||
http_response_code(500);
|
|
||||||
echo json_encode([
|
|
||||||
'success' => false,
|
|
||||||
'message' => 'Errore: ' . $e->getMessage()
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Flusso reale (commentato, da attivare quando pronto)
|
|
||||||
try {
|
|
||||||
$apiClient = VisualLimsApiClient::getInstance();
|
|
||||||
|
|
||||||
// Step 1: Crea CommessaWeb
|
|
||||||
$response = $apiClient->post('/api/odata/CommessaWeb', $payloadCommessa);
|
|
||||||
if ($response['success'] && isset($response['CommessaId'])) {
|
|
||||||
$idcommessaweb = $response['CommessaId'];
|
|
||||||
// Salva idcommessaweb in datadb
|
// Salva idcommessaweb in datadb
|
||||||
$updateStmt = $pdo->prepare("UPDATE datadb SET idcommessaweb = :idcommessaweb WHERE iddatadb = :iddatadb");
|
$updateStmt = $pdo->prepare("UPDATE datadb SET idcommessaweb = :idcommessaweb WHERE iddatadb = :iddatadb");
|
||||||
$updateStmt->execute(['idcommessaweb' => $idcommessaweb, 'iddatadb' => $iddatadb]);
|
$updateStmt->execute(['idcommessaweb' => $idcommessaweb, 'iddatadb' => $iddatadb]);
|
||||||
|
|
||||||
|
// Salva i payload in file JSON
|
||||||
|
$outputFileCommessa = $logDir . "/commessaweb_create_{$iddatadb}.json";
|
||||||
|
file_put_contents($outputFileCommessa, json_encode($payloadCommessa, JSON_PRETTY_PRINT));
|
||||||
|
|
||||||
|
$outputFileCustomFields = $logDir . "/commessaweb_customfields_{$iddatadb}.json";
|
||||||
|
file_put_contents($outputFileCustomFields, json_encode($payloadCustomFields, JSON_PRETTY_PRINT));
|
||||||
|
|
||||||
|
foreach ($payloadsCampioni as $index => $payloadCampione) {
|
||||||
|
$payloadCampione['Commessa'] = $idcommessaweb;
|
||||||
|
$outputFileCampione = $logDir . "/campione_{$iddatadb}_{$campioni[$index]['part_number']}.json";
|
||||||
|
file_put_contents($outputFileCampione, json_encode($payloadCampione, JSON_PRETTY_PRINT));
|
||||||
|
}
|
||||||
|
|
||||||
|
$outputFileInviaCommessa = $logDir . "/commessaweb_invia_{$iddatadb}.json";
|
||||||
|
file_put_contents($outputFileInviaCommessa, json_encode($payloadInviaCommessa, JSON_PRETTY_PRINT));
|
||||||
|
|
||||||
|
// Aggiorna lo status a 'l' (To LIMS)
|
||||||
|
$updateStmt = $pdo->prepare("UPDATE datadb SET status = 'l' WHERE iddatadb = :iddatadb");
|
||||||
|
$updateStmt->execute(['iddatadb' => $iddatadb]);
|
||||||
|
|
||||||
|
// Risposta di successo (simulazione)
|
||||||
|
echo json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'mode' => 'simulated',
|
||||||
|
'message' => "Payload generati e salvati in {$outputFileCommessa}, {$outputFileCustomFields}, file campioni e {$outputFileInviaCommessa}",
|
||||||
|
'idcommessaweb' => $idcommessaweb,
|
||||||
|
'commessaweb' => $commessaweb,
|
||||||
|
'payload_commessa' => $payloadCommessa,
|
||||||
|
'payload_customfields' => $payloadCustomFields,
|
||||||
|
'payload_campioni' => $payloadsCampioni,
|
||||||
|
'payload_invia_commessa' => $payloadInviaCommessa
|
||||||
|
]);
|
||||||
} else {
|
} else {
|
||||||
throw new Exception('Errore nella creazione della CommessaWeb: ' . json_encode($response));
|
// Flusso reale
|
||||||
}
|
$apiClient = VisualLimsApiClient::getInstance();
|
||||||
|
|
||||||
// Step 2: Aggiorna CommesseCustomFields
|
// Step 1: Crea CommessaWeb
|
||||||
$apiClient->patch("/api/odata/CommessaWeb({$idcommessaweb})", $payloadCustomFields);
|
$response = $apiClient->post('/api/odata/CommessaWeb', $payloadCommessa);
|
||||||
|
if (!isset($response['success']) || !isset($response['CommessaId'])) {
|
||||||
|
throw new Exception('Errore nella creazione della CommessaWeb: ' . json_encode($response));
|
||||||
|
}
|
||||||
|
$idcommessaweb = (int)$response['CommessaId'];
|
||||||
|
|
||||||
// Step 3: Crea Campioni
|
// Salva idcommessaweb in datadb
|
||||||
foreach ($payloadsCampioni as $payloadCampione) {
|
$updateStmt = $pdo->prepare("UPDATE datadb SET idcommessaweb = :idcommessaweb WHERE iddatadb = :iddatadb");
|
||||||
$apiClient->post('/api/odata/Campione', $payloadCampione);
|
$updateStmt->execute(['idcommessaweb' => $idcommessaweb, 'iddatadb' => $iddatadb]);
|
||||||
}
|
|
||||||
|
|
||||||
// Step 4: Invia Commessa
|
// Logga il successo della creazione CommessaWeb
|
||||||
$apiClient->post("/api/odata/CommessaWeb({$idcommessaweb})/InviaCommessa", $payloadInviaCommessa);
|
file_put_contents($logDir . '/export_lims_success.log', date('Y-m-d H:i:s') . " - CommessaWeb creata: idcommessaweb {$idcommessaweb} per iddatadb {$iddatadb}\n", FILE_APPEND);
|
||||||
|
|
||||||
// (Opzionale) Recupera il numero commessaweb con una GET
|
// Step 2: Aggiorna CommesseCustomFields
|
||||||
$commessaData = $apiClient->get("/api/odata/CommessaWeb({$idcommessaweb})");
|
$apiClient->patch("/api/odata/CommessaWeb({$idcommessaweb})", $payloadCustomFields);
|
||||||
$commessaweb = $commessaData['Numero'] ?? ''; // Da confermare il nome del campo
|
|
||||||
if ($commessaweb) {
|
// Step 3: Crea Campioni
|
||||||
$updateStmt = $pdo->prepare("UPDATE datadb SET commessaweb = :commessaweb WHERE iddatadb = :iddatadb");
|
foreach ($payloadsCampioni as $index => $payloadCampione) {
|
||||||
$updateStmt->execute(['commessaweb' => $commessaweb, 'iddatadb' => $iddatadb]);
|
$payloadCampione['Commessa'] = $idcommessaweb;
|
||||||
|
$apiClient->post('/api/odata/Campione', $payloadCampione);
|
||||||
|
$payloadsCampioni[$index] = $payloadCampione; // Aggiorna il payload con Commessa
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step 4: Invia Commessa
|
||||||
|
$apiClient->post("/api/odata/CommessaWeb({$idcommessaweb})/InviaCommessa", $payloadInviaCommessa);
|
||||||
|
|
||||||
|
// Step 5: Recupera il numero commessaweb (opzionale)
|
||||||
|
$commessaData = $apiClient->get("/api/odata/CommessaWeb({$idcommessaweb})");
|
||||||
|
$commessaweb = $commessaData['Numero'] ?? '';
|
||||||
|
if ($commessaweb) {
|
||||||
|
$updateStmt = $pdo->prepare("UPDATE datadb SET commessaweb = :commessaweb WHERE iddatadb = :iddatadb");
|
||||||
|
$updateStmt->execute(['commessaweb' => $commessaweb, 'iddatadb' => $iddatadb]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aggiorna lo status a 'l' (To LIMS)
|
||||||
|
$updateStmt = $pdo->prepare("UPDATE datadb SET status = 'l' WHERE iddatadb = :iddatadb");
|
||||||
|
$updateStmt->execute(['iddatadb' => $iddatadb]);
|
||||||
|
|
||||||
|
// Risposta di successo (flusso reale)
|
||||||
|
echo json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'mode' => 'real',
|
||||||
|
'message' => "Dati inviati al LIMS con successo",
|
||||||
|
'idcommessaweb' => $idcommessaweb,
|
||||||
|
'commessaweb' => $commessaweb,
|
||||||
|
'payload_commessa' => $payloadCommessa,
|
||||||
|
'payload_customfields' => $payloadCustomFields,
|
||||||
|
'payload_campioni' => $payloadsCampioni,
|
||||||
|
'payload_invia_commessa' => $payloadInviaCommessa
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
file_put_contents($logDir . '/export_lims_error.log', date('Y-m-d H:i:s') . ' - Flusso reale fallito: ' . $e->getMessage() . PHP_EOL, FILE_APPEND);
|
// Log dell'errore
|
||||||
throw $e;
|
file_put_contents($logDir . '/export_lims_error.log', date('Y-m-d H:i:s') . ' - Flusso ' . ($simulate ? 'simulato' : 'reale') . ' fallito: ' . $e->getMessage() . PHP_EOL, FILE_APPEND);
|
||||||
|
http_response_code(500);
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'mode' => $simulate ? 'simulated' : 'real',
|
||||||
|
'message' => 'Errore: ' . $e->getMessage()
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user