Refactor software version update logic into a reusable function; enhance UI for file uploads and table responsiveness
This commit is contained in:
@@ -5111,4 +5111,84 @@ function checkAndInsertIdentityDealer($pdo, $identityUserkey) {
|
||||
error_log('Database error in checkAndInsertIdentityDealer: ' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
// Update software version status for equipment
|
||||
// Parameters:
|
||||
// $pdo - PDO database connection
|
||||
// $serialnumber - Optional serial number. If null, updates all equipment
|
||||
// Returns: boolean - true on success, false on error
|
||||
//------------------------------------------
|
||||
function updateSoftwareVersionStatus($pdo, $serialnumber = null) {
|
||||
try {
|
||||
// Build WHERE clause for serial number filtering if provided
|
||||
$sn_clause = '';
|
||||
$bind_params = [];
|
||||
|
||||
if ($serialnumber !== null) {
|
||||
$sn_clause = ' AND e.serialnumber = ?';
|
||||
$bind_params = [$serialnumber];
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
// STEP 1: Set sw_version_latest = 2 for equipment with NO software assignments
|
||||
//------------------------------------------
|
||||
$sql = 'UPDATE equipment e
|
||||
LEFT JOIN products_software_assignment psa ON e.productrowid = psa.product_id AND psa.status = 1
|
||||
SET e.sw_version_latest = 2
|
||||
WHERE psa.product_id IS NULL' . $sn_clause;
|
||||
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute($bind_params);
|
||||
|
||||
//------------------------------------------
|
||||
// STEP 2: Set sw_version_latest = 0 for equipment WITH software assignments (from previous 2)
|
||||
//------------------------------------------
|
||||
$sql = 'UPDATE equipment e
|
||||
JOIN products_software_assignment psa ON e.productrowid = psa.product_id AND psa.status = 1
|
||||
SET e.sw_version_latest = 0
|
||||
WHERE e.sw_version_latest = 2' . $sn_clause;
|
||||
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute($bind_params);
|
||||
|
||||
//------------------------------------------
|
||||
// STEP 3: Set sw_version_latest = 0 for equipment NOT matching latest version
|
||||
//------------------------------------------
|
||||
$sql = 'UPDATE equipment e
|
||||
JOIN products_software_assignment psa ON e.productrowid = psa.product_id AND psa.status = 1
|
||||
JOIN products_software_versions psv ON psa.software_version_id = psv.rowID
|
||||
SET e.sw_version_latest = 0
|
||||
WHERE psv.latest = 1
|
||||
AND psv.status = 1
|
||||
AND lower(e.sw_version) <> lower(psv.version)
|
||||
AND (psv.hw_version = e.hw_version OR psv.hw_version IS NULL OR psv.hw_version = "")
|
||||
AND e.sw_version_latest = 1' . $sn_clause;
|
||||
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute($bind_params);
|
||||
|
||||
//------------------------------------------
|
||||
// STEP 4: Set sw_version_latest = 1 for equipment matching latest version
|
||||
//------------------------------------------
|
||||
$sql = 'UPDATE equipment e
|
||||
JOIN products_software_assignment psa ON e.productrowid = psa.product_id AND psa.status = 1
|
||||
JOIN products_software_versions psv ON psa.software_version_id = psv.rowID
|
||||
SET e.sw_version_latest = 1
|
||||
WHERE psv.latest = 1
|
||||
AND psv.status = 1
|
||||
AND lower(e.sw_version) = lower(psv.version)
|
||||
AND (psv.hw_version = e.hw_version OR psv.hw_version IS NULL OR psv.hw_version = "")
|
||||
AND e.sw_version_latest = 0' . $sn_clause;
|
||||
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute($bind_params);
|
||||
|
||||
return true;
|
||||
|
||||
} catch (PDOException $e) {
|
||||
error_log('Database error in updateSoftwareVersionStatus: ' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user