diff --git a/api/v2/get/equipments.php b/api/v2/get/equipments.php index 9b0005d..ff797aa 100644 --- a/api/v2/get/equipments.php +++ b/api/v2/get/equipments.php @@ -161,25 +161,8 @@ if ($sw_version_latest_update == 1){ //------------------------------------------ //UPDATE SW_STATUS //------------------------------------------ - //UPDATE ASSETS-> SW_LATEST_VERSION WITH NO PRODUCT_SOFTWARE TO 2 - $sql = 'UPDATE equipment e LEFT JOIN products_software ps ON e.productrowid = ps.productrowid SET e.sw_version_latest = 2 WHERE ps.rowID IS NULL'; - $stmt = $pdo->prepare($sql); - $stmt->execute(); - - //UPDATE ASSETS-> SW_LATEST_VERSION WITH PRODUCT_SOFTWARE FROM 2 TO 0 - $sql = 'UPDATE equipment e LEFT JOIN products_software ps ON e.productrowid = ps.productrowid SET e.sw_version_latest = 0 WHERE ps.rowID IS NOT NULL AND sw_version_latest = 2'; - $stmt = $pdo->prepare($sql); - $stmt->execute(); - - //UPDATE LATEST TO NO IN CASE HW_VERSION ARE EQUAL AND SW_VERSIONS NOT AND NOT LATEST - $sql = 'UPDATE equipment e JOIN products_software ps ON e.productrowid = ps.productrowid SET e.sw_version_latest = 0 WHERE ps.latest = 1 AND lower(e.sw_version) <> lower(ps.version) AND lower(e.hw_version) = lower(ps.hw_version) AND e.sw_version_latest = 1'; - $stmt = $pdo->prepare($sql); - $stmt->execute(); - - //UPDATE LATEST TO YES IN CASE HW_VERSION ARE EQUAL AND SW_VERSIONS ARE EQUAL - $sql = 'UPDATE equipment e JOIN products_software ps ON e.productrowid = ps.productrowid SET e.sw_version_latest = 1 WHERE ps.latest = 1 AND lower(e.sw_version) = lower(ps.version) AND lower(e.hw_version) = lower(ps.hw_version) AND e.sw_version_latest = 0'; - $stmt = $pdo->prepare($sql); - $stmt->execute(); + // Use the reusable function to update software version status for all equipment + updateSoftwareVersionStatus($pdo); //------------------------------------------ //------------------------------------------ } diff --git a/assets/functions.php b/assets/functions.php index 90964dd..608a441 100644 --- a/assets/functions.php +++ b/assets/functions.php @@ -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; + } } \ No newline at end of file diff --git a/products_software_upgrade_paths_manage.php b/products_software_upgrade_paths_manage.php index 46f3ca8..0b2380d 100644 --- a/products_software_upgrade_paths_manage.php +++ b/products_software_upgrade_paths_manage.php @@ -44,7 +44,7 @@ $filter_version_id = $_GET['from_version_id'] ?? $_GET['to_version_id'] ?? $_GET if (isset($_GET['id']) && $_GET['id'] != '') { $api_url = '/v2/products_software_upgrade_paths/rowID=' . $_GET['id']; $response = ioServer($api_url, ''); - var_dump($response); + if (!empty($response)) { $existing = json_decode($response); if (!empty($existing)) { @@ -145,7 +145,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { $api_url = '/v2/products_software_upgrade_paths/'; $result = ioServer($api_url, json_encode($data)); - if ($result) { + if ($result !== 'NOK') { $success = isset($_POST['delete']) ? 3 : (isset($_POST['rowID']) && $_POST['rowID'] != '' ? 2 : 1); header('Location: ' . $url . '&success_msg=' . $success); exit; diff --git a/products_software_version.php b/products_software_version.php index b4da2e4..eb00750 100644 --- a/products_software_version.php +++ b/products_software_version.php @@ -143,7 +143,6 @@ $view = ' Currency Description Active - Actions @@ -151,18 +150,17 @@ $view = ' $all_paths = array_merge($upgrade_paths_from ?: [], $upgrade_paths_to ?: []); if (empty($all_paths)){ - $view .= 'No upgrade paths found.'; + $view .= 'No upgrade paths found.'; } else { foreach ($all_paths as $path){ $view .= ' - + ' . ($version_map[$path->from_version_id] ?? $path->from_version_id) . ' ' . ($version_map[$path->to_version_id] ?? $path->to_version_id) . ' '.$path->price.' '.$path->currency.' '.$path->description.' '.($path->is_active ? 'Yes' : 'No').' - Edit '; } diff --git a/products_software_version_manage.php b/products_software_version_manage.php index 02cb4da..ae22fc7 100644 --- a/products_software_version_manage.php +++ b/products_software_version_manage.php @@ -104,7 +104,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') { $api_url = '/v2/products_software_versions/'; $result = ioServer($api_url, json_encode($data)); - if ($result) { + if ($result !== 'NOK') { $success = isset($_POST['delete']) ? 3 : (isset($_POST['rowID']) && $_POST['rowID'] != '' ? 2 : 1); header('Location: ' . $url . '&success_msg=' . $success); exit; @@ -147,7 +147,14 @@ $view .= '
- +
+ + + No file selected +