From 553c0aef82ec446ef6a1c19e52c062946c672538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CVeLiTi=E2=80=9D?= <“info@veliti.nl”> Date: Wed, 27 Nov 2024 14:06:38 +0100 Subject: [PATCH] CMXX - Improved assets screen performance --- api/v1/get/equipments.php | 61 ++++++++++++++++++++++------------ api/v2/get/equipments.php | 69 ++++++++++++++++++++++++--------------- 2 files changed, 83 insertions(+), 47 deletions(-) diff --git a/api/v1/get/equipments.php b/api/v1/get/equipments.php index 4b98688..e6c1814 100644 --- a/api/v1/get/equipments.php +++ b/api/v1/get/equipments.php @@ -8,26 +8,6 @@ defined($security_key) or exit; //Connect to DB $pdo = dbConnect($dbname); -//------------------------------------------ -//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 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(); -//------------------------------------------ -//------------------------------------------ - //Get user_rights from users.php $partner = json_decode($partnerhierarchy); @@ -60,6 +40,16 @@ switch ($permission) { $criterias = []; $clause = ''; +//------------------------------------------ +// MAINTENANCE QUERIES +//------------------------------------------ + +//Update sw_version_latest +$sw_version_latest_update = 0; +//------------------------------------------ +//------------------------------------------ +//------------------------------------------ + //------------------------------------------ //Check for $_GET variables and build up clause //------------------------------------------ @@ -118,6 +108,9 @@ if(isset($get_content) && $get_content!=''){ elseif ($v[0] == 'firmware') { //Assets with firmaware upgrade = 0 (1=latest version, 2=No software) $clause .= ' AND e.status != 5 AND e.sw_version_latest = 0'; + + //UPDATE VERSION STATUS + $sw_version_latest_update = 1; } elseif ($v[0] == 'serialnumber') { //build up serialnumber @@ -155,6 +148,34 @@ if(isset($get_content) && $get_content!=''){ $whereclause .= $clause; } } + +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(); + //------------------------------------------ + //------------------------------------------ +} + if (isset($criterias['download']) && $criterias['download'] ==''){ //Request for download $sql = 'SELECT e.rowID as equipmentID, e.*, p.productcode, p.productname from equipment e LEFT JOIN products p ON e.productrowid = p.rowID '.$whereclause.' ORDER BY equipmentID'; diff --git a/api/v2/get/equipments.php b/api/v2/get/equipments.php index 4b9633e..0f677c5 100644 --- a/api/v2/get/equipments.php +++ b/api/v2/get/equipments.php @@ -8,32 +8,6 @@ defined($security_key) or exit; //Connect to DB $pdo = dbConnect($dbname); -//------------------------------------------ -//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(); -//------------------------------------------ -//------------------------------------------ - - //Get user_rights from users.php $partner = json_decode($partnerhierarchy); @@ -65,6 +39,16 @@ switch ($permission) { $criterias = []; $clause = ''; +//------------------------------------------ +// MAINTENANCE QUERIES +//------------------------------------------ + +//Update sw_version_latest +$sw_version_latest_update = 0; +//------------------------------------------ +//------------------------------------------ +//------------------------------------------ + //------------------------------------------ //Check for $_GET variables and build up clause //------------------------------------------ @@ -144,7 +128,10 @@ if(isset($get_content) && $get_content!=''){ } elseif ($v[0] == 'firmware') { //Assets with firmaware upgrade = 0 (1=latest version, 2=No software) - $clause .= ' AND e.status != 5 AND e.sw_version_latest = 0'; + $clause .= ' AND e.status != 5 AND e.sw_version_latest = 0'; + + //UPDATE VERSION STATUS + $sw_version_latest_update = 1; } else {//create clause $clause .= ' AND '.$v[0].' = :'.$v[0]; @@ -156,6 +143,34 @@ if(isset($get_content) && $get_content!=''){ $whereclause .= $clause; } } + +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(); + //------------------------------------------ + //------------------------------------------ +} + if (isset($criterias['download']) && $criterias['download'] ==''){ //Request for download $sql = 'SELECT e.rowID as equipmentID, e.*, p.productcode, p.productname from equipment e LEFT JOIN products p ON e.productrowid = p.rowID '.$whereclause.' ORDER BY equipmentID';