diff --git a/public/userarea/apilogic/process_import.php b/public/userarea/apilogic/process_import.php index e50adab..5096e46 100644 --- a/public/userarea/apilogic/process_import.php +++ b/public/userarea/apilogic/process_import.php @@ -1,5 +1,6 @@ getMessage()); } -// Fetch unprocessed JSON files -$query = "SELECT * FROM temp_json_queue WHERE processed = 0"; -$stmt = $pdo->prepare($query); -$stmt->execute(); -$jsonEntries = $stmt->fetchAll(PDO::FETCH_ASSOC); +$method = $_POST['method']; +if ($method == 'intervention') { + $query = "SELECT * FROM temp_json_queue WHERE processed = 2"; + $stmt = $pdo->prepare($query); + $stmt->execute(); + $jsonEntries = $stmt->fetchAll(PDO::FETCH_ASSOC); +} else { + $query = "SELECT * FROM temp_json_queue WHERE processed = 0"; + $stmt = $pdo->prepare($query); + $stmt->execute(); + $jsonEntries = $stmt->fetchAll(PDO::FETCH_ASSOC); +} foreach ($jsonEntries as $entry) { $data = json_decode($entry['json_data'], true); - $uuid = $entry['uuid']; + $uuid = $entry['uuid']; $analysisArr = array(); $compoundsArr = array(); @@ -32,7 +40,7 @@ foreach ($jsonEntries as $entry) { $analysisgroupcode = $analysis['analysisgroupcode']; $result_TestName = $analysis['result_TestName']; // groupcode validation - if($analysisgroupcode == '-' || $analysisgroupcode == '' || $analysisgroupcode == ' '){ + if ($analysisgroupcode == '-' || $analysisgroupcode == '' || $analysisgroupcode == ' ') { $analysisgroupcode = 'NO_GROUPCODE'; } // check in vocabulary @@ -40,26 +48,26 @@ foreach ($jsonEntries as $entry) { $stmt = $pdo->prepare($query); $result = $stmt->execute(); $result = $stmt->fetchColumn(); - if(!$result){ + 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){ + if (!$result) { // add 0 to analysis array array_push($analysisArr, 0); - }else{ + } else { // add 1 to analysis array array_push($analysisArr, 1); } - }else{ + } else { // add 1 to analysis array array_push($analysisArr, 1); } } } - } + } // check for result_AnalytsName foreach ($data['product']['reports'] as $report) { @@ -70,7 +78,7 @@ foreach ($jsonEntries as $entry) { $cas = $result['cas']; // cas validation - if($cas == '-' || $cas == '' || $cas == ' '){ + if ($cas == '-' || $cas == '' || $cas == ' ') { $cas = 'NO_CAS'; } @@ -79,40 +87,39 @@ foreach ($jsonEntries as $entry) { $stmt = $pdo->prepare($query); $result = $stmt->execute(); $result = $stmt->fetchColumn(); - if(!$result){ + 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){ + if (!$result) { // add 0 to compounds array array_push($compoundsArr, 0); - }else{ + } else { // add 1 to compounds array array_push($compoundsArr, 1); } - }else{ + } else { // add 1 to compounds array array_push($compoundsArr, 1); } - } } } } - + // Validate lab reference $labId = getLaboratoryId($data['reflab'], $pdo); if (!$labId) { markForIntervention($entry['id'], $pdo); continue; - } - - if(validateJson($data) && !in_array(0, $analysisArr) && !in_array(0, $compoundsArr)){ + } + + if (validateJson($data) && !in_array(0, $analysisArr) && !in_array(0, $compoundsArr)) { // Validate and insert product $productId = insertProduct($data['product'], $pdo, $uuid); - + if ($productId) { // Insert reports, parts, analyses, and results foreach ($data['product']['reports'] as $report) { @@ -124,21 +131,21 @@ foreach ($jsonEntries as $entry) { foreach ($part['analyses'] as $analysis) { $result_TestName = $analysis['result_TestName']; $analysisgroupcode = $analysis['analysisgroupcode']; - + $query = "SELECT idanalysisvocabulary FROM analysisvocabulary WHERE analysiscode LIKE '$analysisgroupcode'"; $stmt = $pdo->prepare($query); $res = $stmt->execute(); - $res = $stmt->fetchColumn(); - if($res){ + $res = $stmt->fetchColumn(); + if ($res) { $analysisCodeId = $res; - }else{ + } else { $query = "SELECT idanalysisvocabulary FROM analysisvocabulary WHERE nameanalysisvoc LIKE '$result_TestName'"; $stmt = $pdo->prepare($query); $res = $stmt->execute(); $res = $stmt->fetchColumn(); - if($res){ + if ($res) { $analysisCodeId = $res; - }else{ + } else { $analysisCodeId = 'NO ANALYSIS ID FOUND'; } } @@ -153,16 +160,16 @@ foreach ($jsonEntries as $entry) { $stmt = $pdo->prepare($query); $res = $stmt->execute(); $res = $stmt->fetchColumn(); - if($res){ + if ($res) { $compoundId = $res; - }else{ + } else { $query = "SELECT idcompoundsvocabulary FROM compundsvocabulary WHERE namecompoundsvocabulary LIKE '$result_AnalytsName'"; $stmt = $pdo->prepare($query); $res = $stmt->execute(); $res = $stmt->fetchColumn(); - if($res){ + if ($res) { $compoundId = $res; - }else{ + } else { $compoundId = 'NO COMPOUND ID FOUND'; } } @@ -182,9 +189,13 @@ foreach ($jsonEntries as $entry) { importHistory($pdo, $uuid); } + +die(json_encode(['code' => 'success'])); + // Function definitions -function importHistory($pdo, $uuid){ +function importHistory($pdo, $uuid) +{ $query = "INSERT INTO template_import_his (created_at, importcode, f_status, user_id, importfilename) VALUES (:created_at, :importcode, :f_status, :user_id, :importfilename)"; $stmt = $pdo->prepare($query); $stmt->execute([ @@ -196,23 +207,26 @@ function importHistory($pdo, $uuid){ ]); } -function validateJson($json){ +function validateJson($json) +{ $checkData = json_encode($json); - if(json_decode($checkData) !== null){ + if (json_decode($checkData) !== null) { return true; } else { return false; } } -function getLaboratoryId($reflab, $pdo) { +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) { +function insertProduct($product, $pdo, $uuid) +{ $query = "SELECT idproducts FROM products WHERE products_refnumber = :refnumber"; $stmt = $pdo->prepare($query); $stmt->execute(['refnumber' => $product['products_refnumber']]); @@ -251,7 +265,8 @@ function insertProduct($product, $pdo, $uuid) { return $productId; // Return existing product ID } -function insertReport($report, $productId, $labId, $pdo, $uuid) { +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); @@ -268,7 +283,7 @@ function insertReport($report, $productId, $labId, $pdo, $uuid) { // 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'], @@ -291,7 +306,8 @@ function insertReport($report, $productId, $labId, $pdo, $uuid) { } } -function insertPart($part, $reportId,$productId, $pdo, $uuid) { +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); @@ -304,11 +320,11 @@ function insertPart($part, $reportId,$productId, $pdo, $uuid) { if ($partId) { // Part already exists, return the existing ID return $partId; - } else { + } 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, @@ -324,10 +340,11 @@ function insertPart($part, $reportId,$productId, $pdo, $uuid) { } -function insertAnalysis($analysis, $partId, $productId, $reportId, $pdo, $uuid, $analysisCodeId) { +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, @@ -344,10 +361,11 @@ function insertAnalysis($analysis, $partId, $productId, $reportId, $pdo, $uuid, return $pdo->lastInsertId(); } -function insertResult($result, $analysisId, $partId, $productId, $reportId, $pdo, $uuid, $compoundId) { +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, @@ -368,15 +386,16 @@ function insertResult($result, $analysisId, $partId, $productId, $reportId, $pdo ]); } -function markAsProcessed($id, $pdo) { +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) { +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/importjson.php b/public/userarea/importify/importjson.php new file mode 100644 index 0000000..499fb1f --- /dev/null +++ b/public/userarea/importify/importjson.php @@ -0,0 +1,166 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +} catch (PDOException $e) { + die("Connection failed: " . $e->getMessage()); +} + +$temp_json_queue_id = $_POST['id']; + +// Get the JSON data from the temp_json_queue table +$json_data = getInterventionedJson($temp_json_queue_id, $pdo); + +// Decode the JSON data +$decoded_json_data = json_decode($json_data, true); + +// Check for unattached analysis +$unattached_analysis = checkForUnAttachedAnalysis($decoded_json_data,$pdo); + +// Check for unattached compounds +$unattached_compounds = checkForUnAttachedCompounds($decoded_json_data, $pdo); + +// Get all analysis and compounds +$analysisArr = getAllAnalysis($pdo); +$compoundsArr = getAllCompounds($pdo); + +die(json_encode(array( + 'code' => "success", + 'arr_analysis_data' => $unattached_analysis, + 'arr_compunds_data' => $unattached_compounds +))); + +// Functions +function getInterventionedJson($id, $pdo){ + $sql = "SELECT json_data FROM temp_json_queue WHERE id = :id"; + $stmt = $pdo->prepare($sql); + $stmt->execute(['id' => $id]); + $json_data = $stmt->fetchColumn(); + return $json_data; +} + +function getAllAnalysis($pdo){ + $sql = "SELECT * FROM analysisvocabulary"; + $stmt = $pdo->prepare($sql); + $stmt->execute(); + $analysisArr = $stmt->fetchAll(); + return $analysisArr; +} + +function getAllCompounds($pdo){ + $sql = "SELECT * FROM compundsvocabulary"; + $stmt = $pdo->prepare($sql); + $stmt->execute(); + $compoundsArr = $stmt->fetchAll(); + return $compoundsArr; +} +function checkForUnAttachedAnalysis($decoded_json_data,$pdo){ + $unattached_analysis = []; + $data = $decoded_json_data; + foreach($data['product']['reports'] as $report){ + foreach($report['parts'] as $part){ + foreach($part['analyses'] as $analysis){ + $result_TestName = $analysis['result_TestName']; + $analysisgroupcode = $analysis['analysisgroupcode']; + $analysis_id = checkForAnalysisId($analysisgroupcode, $result_TestName, $pdo); + if(!$analysis_id){ + + $arr_analysiskind_refdata = ("SELECT * FROM analysisvocabulary where preferred like 'Y'"); + $arr_analysiskind_refdata = $pdo->prepare($arr_analysiskind_refdata); + $arr_analysiskind_refdata->execute(); + $arr_analysiskind_ref = $arr_analysiskind_refdata->fetchAll(); + + array_push($unattached_analysis, [ + 'word' => $result_TestName, + 'anaysisword' => $result_TestName, + 'arr_similary' => $arr_analysiskind_ref, + ]); + } + } + } + } + return $unattached_analysis; +} + +function checkForUnAttachedCompounds($decoded_json_data, $pdo){ + $unattached_compounds = []; + $data = $decoded_json_data; + foreach($data['product']['reports'] as $report){ + foreach($report['parts'] as $part){ + foreach($part['analyses'] as $analysis){ + foreach($analysis['results'] as $result){ + $cas = $result['cas']; + $result_AnalytsName = $result['result_AnalytsName']; + $compound_id = checkForCompoundId($cas, $result_AnalytsName, $pdo); + if(!$compound_id){ + $arr_compoundkind_refdata = ("SELECT * FROM compundsvocabulary where preferred like 'Y'"); + $arr_compoundkind_refdata = $pdo->prepare($arr_compoundkind_refdata); + $arr_compoundkind_refdata->execute(); + $arr_compoundkind_ref = $arr_compoundkind_refdata->fetchAll(); + + array_push($unattached_compounds, [ + 'word' => $result_AnalytsName, + 'anaysisword' => $analysis['result_TestName'], + 'arr_similary' => $arr_compoundkind_ref, + ]); + } + } + } + } + } + return $unattached_compounds; +} + +function checkForAnalysisId($analysisgroupcode, $result_TestName, $pdo){ + $sql = "SELECT idanalysisvocabulary FROM analysisvocabulary WHERE analysiscode LIKE '$analysisgroupcode'"; + $stmt = $pdo->prepare($sql); + $stmt->execute(); + $analysis_id = $stmt->fetchColumn(); + if(!$analysis_id){ + $sql = "SELECT idanalysisvocabulary FROM analysisvocabulary WHERE nameanalysisvoc LIKE '$result_TestName'"; + $stmt = $pdo->prepare($sql); + $stmt->execute(); + $analysis_id = $stmt->fetchColumn(); + if(!$analysis_id){ + return false; + }else{ + return $analysis_id; + } + }else{ + return $analysis_id; + } +} + +function checkForCompoundId($cas, $result_AnalytsName, $pdo){ + // cas check + if($cas == '' || $cas == null || $cas == 'N/A' || $cas == '-'){ + $cas = 'NO_CAS_PROVIDED'; + } + $sql = "SELECT idcompoundsvocabulary FROM compundsvocabulary WHERE cascompoundvocabulary LIKE '%$cas%'"; + $stmt = $pdo->prepare($sql); + $stmt->execute(); + $compound_id = $stmt->fetchColumn(); + if(!$compound_id){ + $sql = "SELECT idcompoundsvocabulary FROM compundsvocabulary WHERE namecompoundsvocabulary LIKE '$result_AnalytsName'"; + $stmt = $pdo->prepare($sql); + $stmt->execute(); + $compound_id = $stmt->fetchColumn(); + if(!$compound_id){ + return false; + }else{ + return $compound_id; + } + }else{ + return $compound_id; + } +} + +?> \ No newline at end of file diff --git a/public/userarea/importify/interventionlist.php b/public/userarea/importify/interventionlist.php index e63eb58..f2ba4d2 100644 --- a/public/userarea/importify/interventionlist.php +++ b/public/userarea/importify/interventionlist.php @@ -18,6 +18,8 @@ + + @@ -25,6 +27,28 @@ + + +
+
+
+
+
+
@@ -79,7 +103,7 @@ echo "" . $row['lab_id'] . ""; echo "" . $row['received_at'] . ""; echo " - Import + "; echo ""; @@ -107,6 +131,286 @@
+ + + \ No newline at end of file