diff --git a/public/userarea/apilogic/process_import.php b/public/userarea/apilogic/process_import.php
index 0bb510e..e5c929a 100644
--- a/public/userarea/apilogic/process_import.php
+++ b/public/userarea/apilogic/process_import.php
@@ -1,235 +1,370 @@
connect_error) {
- die("Connection failed: " . $conn->connect_error);
+try {
+ $pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+} catch (PDOException $e) {
+ die("Connection failed: " . $e->getMessage());
}
-// Recover processed JSON
+// Fetch unprocessed JSON files
$query = "SELECT * FROM temp_json_queue WHERE processed = 0";
-$result = $conn->query($query);
+$stmt = $pdo->prepare($query);
+$stmt->execute();
+$jsonEntries = $stmt->fetchAll(PDO::FETCH_ASSOC);
-if (!$result) {
- die("Database query error: " . $conn->error);
-}
+foreach ($jsonEntries as $entry) {
+ $data = json_decode($entry['json_data'], true);
+ $uuid = $entry['uuid'];
+ $analysis = array();
+ $compounds = array();
-if ($result->num_rows > 0) {
- while ($row = $result->fetch_assoc()) {
- $uuid = $row['uuid'];
- $lab_id = $row['lab_id'];
- $json_data = $row['json_data'];
- $data = json_decode($json_data, true);
-
-
- if (json_last_error() !== JSON_ERROR_NONE) {
- continue;
+ // check for result_TestName
+ foreach ($data['product']['reports'] as $report) {
+ foreach ($report['parts'] as $part) {
+ foreach ($part['analyses'] as $analysis) {
+ $analysisgroupcode = $analysis['analysisgroupcode'];
+ $result_TestName = $analysis['result_TestName'];
+ // groupcode validation
+ if($analysisgroupcode == '-' || $analysisgroupcode == '' || $analysisgroupcode == ' '){
+ $analysisgroupcode = 'NO_GROUPCODE';
+ }
+ // check in vocabulary
+ $query = "SELECT idanalysisvocabulary FROM analysisvocabulary WHERE analysiscode LIKE '$analysisgroupcode'";
+ $stmt = $pdo->prepare($query);
+ $result = $stmt->execute();
+ $result = $stmt->fetchColumn();
+ if(!$result){
+ // check for result_TestName
+ $query = "SELECT idanalysisvocabulary FROM analysisvocabulary WHERE nameanalysisvoc LIKE '$result_TestName'";
+ $stmt = $pdo->prepare($query);
+ $result = $stmt->execute();
+ $result = $stmt->fetchColumn();
+ if(!$result){
+ // add 0 to analysis array
+ array_push($analysis, 0);
+ }else{
+ // add 1 to analysis array
+ array_push($analysis, 1);
+ }
+ }else{
+ // add 1 to analysis array
+ array_push($analysis, 1);
+ }
+ }
}
+ }
- // 1. Insert data in products
- $product = $data['product'];
- $products_refnumber = isset($product['products_refnumber']) ? $conn->real_escape_string($product['products_refnumber']) : null;
- $products_description = isset($product['products_description']) ? $conn->real_escape_string($product['products_description']) : null;
- $products_style = isset($product['products_style']) ? $conn->real_escape_string($product['products_style']) : null;
- $products_styledescription = isset($product['products_styledescription']) ? $conn->real_escape_string($product['products_styledescription']) : null;
- $products_sku = isset($product['products_sku']) ? $conn->real_escape_string($product['products_sku']) : null;
- $products_color = isset($product['products_color']) ? $conn->real_escape_string($product['products_color']) : null;
- $products_season = isset($product['products_season']) ? $conn->real_escape_string($product['products_season']) : null;
- $products_market = isset($product['products_market']) ? $conn->real_escape_string($product['products_market']) : null;
- $products_order = isset($product['products_order']) ? $conn->real_escape_string($product['products_order']) : null;
- $product_buyer = isset($product['product_buyer']) ? $conn->real_escape_string($product['product_buyer']) : null;
- $product_claimedfiber = isset($product['product_claimedfiber']) ? $conn->real_escape_string($product['product_claimedfiber']) : null;
- $products_fibercontentresult = isset($product['products_fibercontentresult']) ? $conn->real_escape_string($product['products_fibercontentresult']) : null;
- $namesupplier = isset($product['namesupplier']) ? $conn->real_escape_string($product['namesupplier']) : null;
- $agerange = isset($product['agerange']) ? $conn->real_escape_string($product['agerange']) : null;
- $products_billto = isset($product['products_billto']) ? $conn->real_escape_string($product['products_billto']) : null;
- $products_billtocde = isset($product['products_billtocde']) ? $conn->real_escape_string($product['products_billtocde']) : null;
- $products_codeanddesc = isset($product['products_codeanddesc']) ? $conn->real_escape_string($product['products_codeanddesc']) : null;
- $products_division = isset($product['products_division']) ? $conn->real_escape_string($product['products_division']) : null;
- $products_phase = isset($product['products_phase']) ? $conn->real_escape_string($product['products_phase']) : null;
- $timestampinsert = isset($product['timestampinsert']) ? $conn->real_escape_string($product['timestampinsert']) : null;
- $products_country = isset($product['products_country']) ? $conn->real_escape_string($product['products_country']) : null;
- $products_region = isset($product['products_region']) ? $conn->real_escape_string($product['products_region']) : null;
- $dateprod = isset($product['dateprod']) ? $conn->real_escape_string($product['dateprod']) : null;
- $dateinlab = isset($product['dateinlab']) ? $conn->real_escape_string($product['dateinlab']) : null;
- $dateoutlab = isset($product['dateoutlab']) ? $conn->real_escape_string($product['dateoutlab']) : null;
- $labservice = isset($product['labservice']) ? $conn->real_escape_string($product['labservice']) : null;
+ // check for result_AnalytsName
+ foreach ($data['product']['reports'] as $report) {
+ foreach ($report['parts'] as $part) {
+ foreach ($part['analyses'] as $analysis) {
+ foreach ($analysis['results'] as $result) {
+ $result_AnalytsName = $result['result_AnalytsName'];
+ $cas = $result['cas'];
- // Recover id products
- $query_product = "INSERT INTO products (
- products_refnumber, products_description, products_style, products_styledescription, products_sku,
- products_color, products_season, products_market, products_order, product_buyer, product_claimedfiber,
- products_fibercontentresult, namesupplier, agerange, products_billto, products_billtocde,
- products_codeanddesc, products_division, products_phase, timestampinsert, products_country, products_region,
- dateprod, dateinlab, dateoutlab, labservice, idcompany
- ) VALUES (
- '$products_refnumber', '$products_description', '$products_style', '$products_styledescription', '$products_sku',
- '$products_color', '$products_season', '$products_market', '$products_order', '$product_buyer', '$product_claimedfiber',
- '$products_fibercontentresult', '$namesupplier', '$agerange', '$products_billto', '$products_billtocde',
- '$products_codeanddesc', '$products_division', '$products_phase', '$timestampinsert', '$products_country', '$products_region',
- '$dateprod', '$dateinlab', '$dateoutlab', '$labservice', $idcompany
- ) ON DUPLICATE KEY UPDATE
- products_description = '$products_description', products_style = '$products_style',
- products_styledescription = '$products_styledescription', products_sku = '$products_sku',
- products_color = '$products_color', products_season = '$products_season', products_market = '$products_market',
- products_order = '$products_order', product_buyer = '$product_buyer', product_claimedfiber = '$product_claimedfiber',
- products_fibercontentresult = '$products_fibercontentresult', namesupplier = '$namesupplier',
- agerange = '$agerange', products_billto = '$products_billto', products_billtocde = '$products_billtocde',
- products_codeanddesc = '$products_codeanddesc', products_division = '$products_division',
- products_phase = '$products_phase', timestampinsert = '$timestampinsert', products_country = '$products_country',
- products_region = '$products_region', dateprod = '$dateprod', dateinlab = '$dateinlab', dateoutlab = '$dateoutlab',
- labservice = '$labservice'";
+ // cas validation
+ if($cas == '-' || $cas == '' || $cas == ' '){
+ $cas = 'NO_CAS';
+ }
- if ($conn->query($query_product)) {
- $idproducts = $conn->insert_id;
+ // check in vocabulary
+ $query = "SELECT idcompoundsvocabulary FROM compundsvocabulary WHERE cascompoundvocabulary LIKE '%$cas%'";
+ $stmt = $pdo->prepare($query);
+ $result = $stmt->execute();
+ $result = $stmt->fetchColumn();
+ if(!$result){
+ // check for result_AnalytsName
+ $query = "SELECT idcompoundsvocabulary FROM compundsvocabulary WHERE namecompoundsvocabulary LIKE '$result_AnalytsName'";
+ $stmt = $pdo->prepare($query);
+ $result = $stmt->execute();
+ $result = $stmt->fetchColumn();
+ if(!$result){
+ // add 0 to compounds array
+ array_push($compounds, 0);
+ }else{
+ // add 1 to compounds array
+ array_push($compounds, 1);
+ }
+ }else{
+ // add 1 to compounds array
+ array_push($compounds, 1);
+ }
- // 2.Insert Reports
- foreach ($product['reports'] as $report) {
- $reportsNumberLab = $conn->real_escape_string($report['reportsNumberLab']);
- $reportDateIn = isset($report['reportDateIn']) ? $conn->real_escape_string($report['reportDateIn']) : null;
- $reportsDateOut = isset($report['reportsDateOut']) ? $conn->real_escape_string($report['reportsDateOut']) : null;
- $reportsDateDue = isset($report['reportsDateDue']) ? $conn->real_escape_string($report['reportsDateDue']) : null;
- $reportsRating = isset($report['reportsRating']) ? $conn->real_escape_string($report['reportsRating']) : null;
- $reportsRating2 = isset($report['reportsRating2']) ? $conn->real_escape_string($report['reportsRating2']) : null;
- $pdffilename = isset($report['pdffilename']) ? $conn->real_escape_string($report['pdffilename']) : null;
- $reports_LabName = isset($report['reports_LabName']) ? $conn->real_escape_string($report['reports_LabName']) : null;
- $reports_testype = isset($report['reports_testype']) ? $conn->real_escape_string($report['reports_testype']) : null;
- $reports_invoicenumber = isset($report['reports_invoicenumber']) ? $conn->real_escape_string($report['reports_invoicenumber']) : null;
- $reports_invoiceamount = isset($report['reports_invoiceamount']) ? $conn->real_escape_string($report['reports_invoiceamount']) : null;
- $reports_invoiceadate = isset($report['reports_invoiceadate']) ? $conn->real_escape_string($report['reports_invoiceadate']) : null;
+ }
+ }
+ }
+ }
+
+ // Validate lab reference
+ $labId = getLaboratoryId($data['reflab'], $pdo);
+ if (!$labId) {
+ markForIntervention($entry['id'], $pdo);
+ continue;
+ }
+
+ if(validateJson($data) && !in_array(0, $analysis) && !in_array(0, $compounds)){
+ // Validate and insert product
+ $productId = insertProduct($data['product'], $pdo, $uuid);
+
+ if ($productId) {
+ // Insert reports, parts, analyses, and results
+ foreach ($data['product']['reports'] as $report) {
+ $reportId = insertReport($report, $productId, $labId, $pdo, $uuid);
+ foreach ($report['parts'] as $part) {
+ $partId = insertPart($part, $reportId, $productId, $pdo, $uuid);
- $query_report = "INSERT INTO reports (
- idproducts, reportsNumberLab, reportDateIn, reportsDateOut, reportsDateDue,
- reportsRating, reportsRating2, pdffilename, reports_LabName, reports_testype,
- reports_invoicenumber, reports_invoiceamount, reports_invoiceadate, idcompany
- ) VALUES (
- $idproducts, '$reportsNumberLab', '$reportDateIn', '$reportsDateOut', '$reportsDateDue',
- '$reportsRating', '$reportsRating2', '$pdffilename', '$reports_LabName', '$reports_testype',
- '$reports_invoicenumber', '$reports_invoiceamount', '$reports_invoiceadate', $idcompany
- ) ON DUPLICATE KEY UPDATE
- reportDateIn = '$reportDateIn', reportsDateOut = '$reportsDateOut', reportsDateDue = '$reportsDateDue',
- reportsRating = '$reportsRating', reportsRating2 = '$reportsRating2', pdffilename = '$pdffilename',
- reports_LabName = '$reports_LabName', reports_testype = '$reports_testype',
- reports_invoicenumber = '$reports_invoicenumber', reports_invoiceamount = '$reports_invoiceamount',
- reports_invoiceadate = '$reports_invoiceadate'";
+ foreach ($part['analyses'] as $analysis) {
+ $result_TestName = $analysis['result_TestName'];
+ $groupcode = $analysis['analysisgroupcode'];
+
+ $query = "SELECT idanalysisvocabulary FROM analysisvocabulary WHERE analysiscode LIKE '$groupcode'";
+ $stmt = $pdo->prepare($query);
+ $res = $stmt->execute();
+ $res = $stmt->fetchColumn();
+ if($res){
+ $analysisCodeId = $res;
+ }else{
+ $query = "SELECT idanalysisvocabulary FROM analysisvocabulary WHERE nameanalysisvoc LIKE '$result_TestName'";
+ $stmt = $pdo->prepare($query);
+ $res = $stmt->execute();
+ $res = $stmt->fetchColumn();
+ if($res){
+ $analysisCodeId = $res;
+ }else{
+ $analysisCodeId = 'NO ANALYSIS ID FOUND';
+ }
+ }
- if ($conn->query($query_report)) {
- $idreports = $conn->insert_id;
+ $analysisId = insertAnalysis($analysis, $partId, $productId, $reportId, $pdo, $uuid, $analysisCodeId);
- // 3. Insert Parts
- foreach ($report['parts'] as $part) {
- $partsCode = $conn->real_escape_string($part['partsCode']);
- $partsDescription = isset($part['partsDescription']) ? $conn->real_escape_string($part['partsDescription']) : null;
- $partsColor = isset($part['partsColor']) ? $conn->real_escape_string($part['partsColor']) : null;
- $partsMaterial = isset($part['partsMaterial']) ? $conn->real_escape_string($part['partsMaterial']) : null;
+ foreach ($analysis['results'] as $result) {
+ $result_AnalytsName = $result['result_AnalytsName'];
+ $cas = $result['cas'];
-
- $query_part = "INSERT INTO parts (
- idreports, idproducts, partsCode, partsDescription, partsColor, partsMaterial, idcompany
- ) VALUES (
- $idreports, $idproducts, '$partsCode', '$partsDescription', '$partsColor', '$partsMaterial', $idcompany
- ) ON DUPLICATE KEY UPDATE
- partsDescription = '$partsDescription', partsColor = '$partsColor', partsMaterial = '$partsMaterial'";
-
- if ($conn->query($query_part)) {
- $idPart = $conn->insert_id;
-
- // 4. Insert `analyses`
- foreach ($part['analyses'] as $analysis) {
- $result_TestName = $conn->real_escape_string($analysis['result_TestName']);
- $test_Rating = isset($analysis['test_Rating']) ? $conn->real_escape_string($analysis['test_Rating']) : null;
- $test_Rating2 = isset($analysis['test_Rating2']) ? $conn->real_escape_string($analysis['test_Rating2']) : null;
- $requirements = isset($analysis['requirements']) ? $conn->real_escape_string($analysis['requirements']) : null;
- $reference = isset($analysis['reference']) ? $conn->real_escape_string($analysis['reference']) : null;
- $analysisgroupcode = isset($analysis['analysisgroupcode']) ? $conn->real_escape_string($analysis['analysisgroupcode']) : null;
- $packagecode = isset($analysis['packagecode']) ? $conn->real_escape_string($analysis['packagecode']) : null;
-
- // Connessione al database già esistente
- $idanalysisvocabulary = null;
- $temp_TestName = null;
- $requires_intervention = 0;
-
- // Controllo nella tabella analysisvocabulary
- $sql_vocabulary = "SELECT idanalysisvocabulary
- FROM analysisvocabulary
- WHERE analysiscode = '$analysisgroupcode'
- AND preferred = 'Y'
- LIMIT 1";
- $result_vocabulary = $conn->query($sql_vocabulary);
-
- if ($result_vocabulary && $result_vocabulary->num_rows > 0) {
- // Prende l'idanalysisvocabulary se presente
- $row = $result_vocabulary->fetch_assoc();
- $idanalysisvocabulary = $row['idanalysisvocabulary'];
- $analysis['result_TestName'] = $idanalysisvocabulary;
- } else {
- // Se non presente, necessita di intervento e salva in temp_TestName
- $temp_TestName = $conn->real_escape_string($analysis['result_TestName']);
- $requires_intervention = 1;
- }
-
- // Inserimento nella tabella analysis_project con il flag di intervento
- $query_analysis = "INSERT INTO analysis_project (
- test_Rating, test_Rating2, requirements, reference, analysisgroupcode, idPart,
- idreports, idproducts, idcompany, requires_intervention, temp_TestName
- ) VALUES (
- '$test_Rating', '$test_Rating2', '$requirements', '$reference', '$analysisgroupcode',
- '$idPart', '$idreports', '$idproducts', $idcompany, $requires_intervention, '$temp_TestName'
- ) ON DUPLICATE KEY UPDATE
- test_Rating = '$test_Rating', test_Rating2 = '$test_Rating2',
- requires_intervention = $requires_intervention, temp_TestName = '$temp_TestName'";
-
-
- if ($conn->query($query_analysis)) {
- $idAnalysis_Project = $conn->insert_id;
-
- // 5. Insert results
- foreach ($analysis['results'] as $result) {
- $result_AnalytsName = $conn->real_escape_string($result['result_AnalytsName']);
- $result_AnalytsRating = isset($result['result_AnalytsRating']) ? $conn->real_escape_string($result['result_AnalytsRating']) : null;
- $result_Value = isset($result['result_Value']) ? $conn->real_escape_string($result['result_Value']) : null;
- $result_Comment = isset($result['result_Comment']) ? $conn->real_escape_string($result['result_Comment']) : null;
- $test_Rating = isset($result['test_Rating']) ? $conn->real_escape_string($result['test_Rating']) : null;
- $test_Rating2 = isset($result['test_Rating2']) ? $conn->real_escape_string($result['test_Rating2']) : null;
- $result_UnitofMeasure = isset($result['result_UnitofMeasure']) ? $conn->real_escape_string($result['result_UnitofMeasure']) : null;
- $cas = isset($result['cas']) ? $conn->real_escape_string($result['cas']) : null;
- $requirements = isset($result['requirements']) ? $conn->real_escape_string($result['requirements']) : null;
- $reference = isset($result['reference']) ? $conn->real_escape_string($result['reference']) : null;
-
-
- $query_result = "INSERT INTO result_project (
- idPart, idAnalysis, idproducts, idreports, result_AnalytsName, result_AnalytsRating,
- result_Value, result_Comment, test_Rating, test_Rating2, result_UnitofMeasure, cas,
- requirements, reference, idcompany
- ) VALUES (
- $idPart, $idAnalysis_Project, $idproducts, $idreports, '$result_AnalytsName', '$result_AnalytsRating',
- '$result_Value', '$result_Comment', '$test_Rating', '$test_Rating2', '$result_UnitofMeasure', '$cas',
- '$requirements', '$reference', $idcompany
- ) ON DUPLICATE KEY UPDATE
- result_AnalytsName = '$result_AnalytsName', result_AnalytsRating = '$result_AnalytsRating',
- result_Value = '$result_Value', result_Comment = '$result_Comment', test_Rating = '$test_Rating',
- test_Rating2 = '$test_Rating2', result_UnitofMeasure = '$result_UnitofMeasure', cas = '$cas',
- requirements = '$requirements', reference = '$reference'";
-
- $conn->query($query_result);
- }
+ $query = "SELECT idcompoundsvocabulary FROM compundsvocabulary WHERE cascompoundvocabulary LIKE '%$cas%'";
+ $stmt = $pdo->prepare($query);
+ $res = $stmt->execute();
+ $res = $stmt->fetchColumn();
+ if($res){
+ $compoundId = $res;
+ }else{
+ $query = "SELECT idcompoundsvocabulary FROM compundsvocabulary WHERE namecompoundsvocabulary LIKE '$result_AnalytsName'";
+ $stmt = $pdo->prepare($query);
+ $res = $stmt->execute();
+ $res = $stmt->fetchColumn();
+ if($res){
+ $compoundId = $res;
+ }else{
+ $compoundId = 'NO COMPOUND ID FOUND';
}
}
+ insertResult($result, $analysisId, $partId, $productId, $reportId, $pdo, $uuid, $compoundId);
}
}
}
}
- // Change into processed
- $update_query = "UPDATE temp_json_queue SET processed = 1 WHERE uuid = '$uuid'";
- $conn->query($update_query);
+ markAsProcessed($entry['id'], $pdo);
+ } else {
+ markForIntervention($entry['id'], $pdo);
}
+ } else {
+ markForIntervention($entry['id'], $pdo);
}
-} else {
- echo "No unprocessed JSON data found.";
+
}
-$conn->close();
+// Function definitions
+
+function validateJson($json){
+ $checkData = json_encode($json);
+ if(json_decode($checkData) !== null){
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function getLaboratoryId($reflab, $pdo) {
+ $query = "SELECT idlab FROM laboratories WHERE reflab = :reflab";
+ $stmt = $pdo->prepare($query);
+ $stmt->execute(['reflab' => $reflab]);
+ return $stmt->fetchColumn();
+}
+
+function insertProduct($product, $pdo, $uuid) {
+ $query = "SELECT idproducts FROM products WHERE products_refnumber = :refnumber";
+ $stmt = $pdo->prepare($query);
+ $stmt->execute(['refnumber' => $product['products_refnumber']]);
+ $productId = $stmt->fetchColumn();
+
+ if (!$productId) {
+ $query = "INSERT INTO products (products_refnumber, products_description, products_style, products_sku, products_color, products_season, products_market, products_order, product_buyer, product_claimedfiber, products_fibercontentresult, dateprod, namesupplier, agerange, products_billto, products_billtocde, products_codeanddesc, products_division, products_phase, products_country, products_region, importcode)
+ VALUES (:refnumber, :description, :style, :sku, :color, :season, :market, :order, :buyer, :claimedfiber, :fibercontentresult, :dateprod, :supplier, :agerange, :billto, :billtocde, :codeanddesc, :division, :phase, :country, :region, :importcode)";
+ $stmt = $pdo->prepare($query);
+ $stmt->execute([
+ 'refnumber' => $product['products_refnumber'],
+ 'description' => $product['products_description'],
+ 'style' => $product['products_style'],
+ 'sku' => $product['products_sku'],
+ 'color' => $product['products_color'],
+ 'season' => $product['products_season'],
+ 'market' => $product['products_market'],
+ 'order' => $product['products_order'],
+ 'buyer' => $product['product_buyer'],
+ 'claimedfiber' => $product['product_claimedfiber'],
+ 'fibercontentresult' => $product['products_fibercontentresult'],
+ 'dateprod' => $product['dateprod'],
+ 'supplier' => $product['namesupplier'],
+ 'agerange' => $product['agerange'],
+ 'billto' => $product['products_billto'],
+ 'billtocde' => $product['products_billtocde'],
+ 'codeanddesc' => $product['products_codeanddesc'],
+ 'division' => $product['products_division'],
+ 'phase' => $product['products_phase'],
+ 'country' => $product['products_country'],
+ 'region' => $product['products_region'],
+ 'importcode' => $uuid
+ ]);
+ return $pdo->lastInsertId();
+ }
+ return $productId; // Return existing product ID
+}
+
+function insertReport($report, $productId, $labId, $pdo, $uuid) {
+ // Check if the report already exists
+ $query = "SELECT idreports FROM reports WHERE reportsNumberLab = :reportsNumberLab AND idLabs = :idlaboratories";
+ $stmt = $pdo->prepare($query);
+ $stmt->execute([
+ 'reportsNumberLab' => $report['reportsNumberLab'],
+ 'idlaboratories' => $labId
+ ]);
+ $reportId = $stmt->fetchColumn();
+
+ if ($reportId) {
+ // Report already exists, return the existing ID
+ return $reportId;
+ } else {
+ // Insert new report
+ $query = "INSERT INTO reports (reportsNumberLab, reportDateIn, reportsDateOut, reportsDateDue, reportsRating, reportsRating2, pdffilename, reports_LabName, reports_testype, reports_invoicenumber, reports_invoiceamount, reports_invoiceadate, idproducts, idLabs, importcode)
+ VALUES (:reportsNumberLab, :reportDateIn, :reportsDateOut, :reportsDateDue, :reportsRating, :reportsRating2, :pdffilename, :reports_LabName, :reports_testype, :reports_invoicenumber, :reports_invoiceamount, :reports_invoiceadate, :idproducts, :idlaboratories, :importcode)";
+
+ $stmt = $pdo->prepare($query);
+ $stmt->execute([
+ 'reportsNumberLab' => $report['reportsNumberLab'],
+ 'reportDateIn' => $report['reportDateIn'],
+ 'reportsDateOut' => $report['reportsDateOut'],
+ 'reportsDateDue' => $report['reportsDateDue'],
+ 'reportsRating' => $report['reportsRating'],
+ 'reportsRating2' => $report['reportsRating2'],
+ 'pdffilename' => $report['pdffilename'],
+ 'reports_LabName' => $report['reports_LabName'],
+ 'reports_testype' => $report['reports_testype'],
+ 'reports_invoicenumber' => $report['reports_invoicenumber'],
+ 'reports_invoiceamount' => $report['reports_invoiceamount'],
+ 'reports_invoiceadate' => $report['reports_invoiceadate'],
+ 'idproducts' => $productId,
+ 'idlaboratories' => $labId,
+ 'importcode' => $uuid
+ ]);
+ return $pdo->lastInsertId();
+ }
+}
+
+function insertPart($part, $reportId,$productId, $pdo, $uuid) {
+ // Check if the part already exists
+ $query = "SELECT idparts FROM parts WHERE partsCode = :partsCode AND idreports = :idreports";
+ $stmt = $pdo->prepare($query);
+ $stmt->execute([
+ 'partsCode' => $part['partsCode'],
+ 'idreports' => $reportId
+ ]);
+ $partId = $stmt->fetchColumn();
+
+ if ($partId) {
+ // Part already exists, return the existing ID
+ return $partId;
+ } else {
+ // Insert new part
+ $query = "INSERT INTO parts (partsCode, partsDescription, partsColor, partsMaterial, idreports, idproducts, importcode)
+ VALUES (:partsCode, :partsDescription, :partsColor, :partsMaterial, :idreports, :idproducts, :importcode)";
+
+ $stmt = $pdo->prepare($query);
+ $stmt->execute([
+ 'idproducts' => $productId,
+ 'partsCode' => $part['partsCode'],
+ 'partsDescription' => $part['partsDescription'],
+ 'partsColor' => $part['partsColor'],
+ 'partsMaterial' => $part['partsMaterial'],
+ 'idreports' => $reportId,
+ 'importcode' => $uuid
+ ]);
+ return $pdo->lastInsertId();
+ }
+}
+
+
+function insertAnalysis($analysis, $partId, $productId, $reportId, $pdo, $uuid, $analysisCodeId) {
+ $query = "INSERT INTO analysis_project (result_TestName, test_Rating, test_Rating2, requirements, reference, analysisgroupcode, idpart, idproducts, idreports, importcode)
+ VALUES (:result_TestName, :test_Rating, :test_Rating2, :requirements, :reference, :analysisgroupcode, :idpart , :idproducts, :idreports, :importcode)";
+
+ $stmt = $pdo->prepare($query);
+ $stmt->execute([
+ 'idproducts' => $productId,
+ 'idreports' => $reportId,
+ 'result_TestName' => $analysisCodeId,
+ 'test_Rating' => $analysis['test_Rating'],
+ 'test_Rating2' => $analysis['test_Rating2'],
+ 'requirements' => $analysis['requirements'],
+ 'reference' => $analysis['reference'],
+ 'analysisgroupcode' => $analysis['analysisgroupcode'],
+ 'idpart' => $partId,
+ 'importcode' => $uuid
+ ]);
+ return $pdo->lastInsertId();
+}
+
+function insertResult($result, $analysisId, $partId, $productId, $reportId, $pdo, $uuid, $compoundId) {
+ $query = "INSERT INTO result_project (result_AnalytsName, result_AnalytsRating, result_Value, result_Comment, test_Rating, test_Rating2, result_UnitofMeasure, cas, requirements, reference, idanalysis_project, idpart, idproducts, idreports, importcode)
+ VALUES (:result_AnalytsName, :result_AnalytsRating, :result_Value, :result_Comment, :test_Rating, :test_Rating2, :result_UnitofMeasure, :cas, :requirements, :reference, :idanalysis_project, :idpart, :idproducts, :idreports, :importcode)";
+
+ $stmt = $pdo->prepare($query);
+ $stmt->execute([
+ 'result_AnalytsName' => $compoundId,
+ 'result_AnalytsRating' => $result['result_AnalytsRating'],
+ 'result_Value' => $result['result_Value'],
+ 'result_Comment' => $result['result_Comment'],
+ 'test_Rating' => $result['test_Rating'],
+ 'test_Rating2' => $result['test_Rating2'],
+ 'result_UnitofMeasure' => $result['result_UnitofMeasure'],
+ 'cas' => $result['cas'],
+ 'requirements' => $result['requirements'],
+ 'reference' => $result['reference'],
+ 'idanalysis_project' => $analysisId,
+ 'idpart' => $partId,
+ 'idproducts' => $productId,
+ 'idreports' => $reportId,
+ 'importcode' => $uuid
+ ]);
+}
+
+function markAsProcessed($id, $pdo) {
+ $query = "UPDATE temp_json_queue SET processed = 1 WHERE id = :id";
+ $stmt = $pdo->prepare($query);
+ $stmt->execute(['id' => $id]);
+}
+
+function markForIntervention($id, $pdo) {
+ $query = "UPDATE temp_json_queue SET processed = 2 WHERE id = :id";
+ $stmt = $pdo->prepare($query);
+ $stmt->execute(['id' => $id]);
+}
+?>
diff --git a/public/userarea/importify/delete_json.php b/public/userarea/importify/delete_json.php
new file mode 100644
index 0000000..9a288dd
--- /dev/null
+++ b/public/userarea/importify/delete_json.php
@@ -0,0 +1,41 @@
+connect_error) {
+ echo "error"; // Errore di connessione
+ exit;
+ }
+
+ // Prepara la query di cancellazione
+ $sql = "DELETE FROM temp_json_queue WHERE id = ?";
+
+ // Utilizza una prepared statement per evitare SQL injection
+ $stmt = $conn->prepare($sql);
+ $stmt->bind_param("i", $id);
+
+ // Esegui la query e verifica il risultato
+ if ($stmt->execute()) {
+ // Imposta header per evitare output non necessari
+ header('Content-Type: text/plain');
+ echo "success"; // Cancellazione riuscita
+ } else {
+ echo "error"; // Errore durante la cancellazione
+ }
+
+ // Chiude la connessione e la prepared statement
+ $stmt->close();
+ $conn->close();
+} else {
+ echo "error"; // Errore: nessun ID passato
+}
diff --git a/public/userarea/importify/interventionlist.php b/public/userarea/importify/interventionlist.php
new file mode 100644
index 0000000..e63eb58
--- /dev/null
+++ b/public/userarea/importify/interventionlist.php
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Intervention necessary
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | ID |
+ UUID |
+ Lab ID |
+ Received At |
+ Actions |
+
+
+
+ connect_error) {
+ die("Connection failed: " . $conn->connect_error);
+ }
+
+ // Query for rows with processed = 2
+ $sql = "SELECT * FROM temp_json_queue WHERE processed = 2";
+ $result = $conn->query($sql);
+
+ if ($result->num_rows > 0) {
+ while ($row = $result->fetch_assoc()) {
+ echo "";
+ echo "| " . $row['id'] . " | ";
+ echo "" . $row['uuid'] . " | ";
+ echo "" . $row['lab_id'] . " | ";
+ echo "" . $row['received_at'] . " | ";
+ echo "
+ Import
+
+ | ";
+ echo "
";
+ }
+ } else {
+ echo "| No records found |
";
+ }
+
+ $conn->close();
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file