From 836eb5881fe8c37e662a3ec4fa449eb69f34776f Mon Sep 17 00:00:00 2001 From: Claudio Date: Tue, 8 Oct 2024 14:52:54 +0200 Subject: [PATCH] added api to temp and process api --- public/userarea/apilogic/api-to-temp.php | 10 + .../apilogic/check-new-report-session.php | 15 ++ public/userarea/apilogic/process_import.php | 235 ++++++++++++++++++ public/userarea/include/headscript.php | 2 +- 4 files changed, 261 insertions(+), 1 deletion(-) create mode 100644 public/userarea/apilogic/check-new-report-session.php create mode 100644 public/userarea/apilogic/process_import.php diff --git a/public/userarea/apilogic/api-to-temp.php b/public/userarea/apilogic/api-to-temp.php index 0cdfbca..d00e1e3 100644 --- a/public/userarea/apilogic/api-to-temp.php +++ b/public/userarea/apilogic/api-to-temp.php @@ -1,6 +1,7 @@ bind_param("sss", $uuid, $lab_id, $json_data); if ($stmt->execute()) { + // Imposta una variabile di sessione per notificare l'importazione del report + $_SESSION['new_report'] = [ + 'report_number' => $report_number, + 'rating' => $rating, + 'timestamp' => time() // Puoi usare un timestamp per gestire la scadenza della notifica + ]; + echo json_encode([ "status" => "success", "message" => "Data successfully saved.", "uuid" => $uuid, "product_refnumber" => $product_refnumber, // Numero del prodotto "report_number" => $report_number, // Numero del report + "rating" => $rating, // Rating del report "saved_at" => $saved_at // Data del salvataggio ]); } else { diff --git a/public/userarea/apilogic/check-new-report-session.php b/public/userarea/apilogic/check-new-report-session.php new file mode 100644 index 0000000..a4892d4 --- /dev/null +++ b/public/userarea/apilogic/check-new-report-session.php @@ -0,0 +1,15 @@ + "new_report", + "report_number" => $_SESSION['new_report']['report_number'], + "rating" => $_SESSION['new_report']['rating'] + ]); + + // Resetta la variabile di sessione per evitare duplicati + unset($_SESSION['new_report']); +} else { + echo json_encode(["status" => "no_new_report"]); +} diff --git a/public/userarea/apilogic/process_import.php b/public/userarea/apilogic/process_import.php new file mode 100644 index 0000000..0bb510e --- /dev/null +++ b/public/userarea/apilogic/process_import.php @@ -0,0 +1,235 @@ +connect_error) { + die("Connection failed: " . $conn->connect_error); +} + +// Recover processed JSON +$query = "SELECT * FROM temp_json_queue WHERE processed = 0"; +$result = $conn->query($query); + +if (!$result) { + die("Database query error: " . $conn->error); +} + +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; + } + + // 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; + + // 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'"; + + if ($conn->query($query_product)) { + $idproducts = $conn->insert_id; + + // 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; + + + $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'"; + + if ($conn->query($query_report)) { + $idreports = $conn->insert_id; + + // 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; + + + $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); + } + } + } + } + } + } + } + + // Change into processed + $update_query = "UPDATE temp_json_queue SET processed = 1 WHERE uuid = '$uuid'"; + $conn->query($update_query); + } + } +} else { + echo "No unprocessed JSON data found."; +} + +$conn->close(); diff --git a/public/userarea/include/headscript.php b/public/userarea/include/headscript.php index 3f18e94..d818f6f 100644 --- a/public/userarea/include/headscript.php +++ b/public/userarea/include/headscript.php @@ -95,4 +95,4 @@ include(BASE_PATH . "/public/userarea/include/generalsettings.php"); include(BASE_PATH . "/public/userarea/include/class/company.php"); -?> \ No newline at end of file +?>