added full logic of intervention

This commit is contained in:
2024-10-26 23:33:41 +04:00
parent 2cf3873d1d
commit 1325bf8b24
3 changed files with 547 additions and 52 deletions
+69 -50
View File
@@ -1,5 +1,6 @@
<?php
include('../../Connections/repnew.php');
header('Content-Type: application/json');
// Database connection
$host = $servername;
$db = $database;
@@ -13,15 +14,22 @@ try {
die("Connection failed: " . $e->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]);
}
?>