From 3cf1b8427c5f39d0018d67acbfee19a0451cbbe7 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Fri, 22 Mar 2024 19:01:10 -0400 Subject: [PATCH] Fix Asset Counts into a better defined count query --- client_assets.php | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/client_assets.php b/client_assets.php index a9376b90..5600bf7e 100644 --- a/client_assets.php +++ b/client_assets.php @@ -34,34 +34,43 @@ if (isset($_GET['location']) & !empty($_GET['location'])) { } //Get Asset Counts +$row = mysqli_fetch_assoc(mysqli_query($mysqli, " + SELECT + COUNT(*) AS all_count, + SUM(CASE WHEN asset_type IN ('laptop', 'desktop') THEN 1 ELSE 0 END) AS workstation_count, + SUM(CASE WHEN asset_type = 'server' THEN 1 ELSE 0 END) AS server_count, + SUM(CASE WHEN asset_type = 'virtual machine' THEN 1 ELSE 0 END) AS virtual_count, + SUM(CASE WHEN asset_type IN ('Firewall/Router', 'switch', 'access point') THEN 1 ELSE 0 END) AS network_count, + SUM(CASE WHEN asset_type NOT IN ('laptop', 'desktop', 'server', 'virtual machine', 'Firewall/Router', 'switch', 'access point') THEN 1 ELSE 0 END) AS other_count + FROM ( + SELECT assets.* FROM assets + LEFT JOIN contacts ON asset_contact_id = contact_id + LEFT JOIN locations ON asset_location_id = location_id + WHERE asset_client_id = $client_id + AND asset_$archive_query + AND (asset_name LIKE '%$q%' OR asset_description LIKE '%$q%' OR asset_type LIKE '%$q%' OR asset_ip LIKE '%$q%' OR asset_make LIKE '%$q%' OR asset_model LIKE '%$q%' OR asset_serial LIKE '%$q%' OR asset_os LIKE '%$q%' OR contact_name LIKE '%$q%' OR location_name LIKE '%$q%') + AND ($type_query) + $location_query + ) AS filtered_assets; +")); + //All Asset Count -$row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(*) AS count FROM assets WHERE asset_archived_at IS NULL AND asset_client_id = $client_id $location_query")); -$all_count = intval($row['count']); +$all_count = intval($row['all_count']); + //Workstation Count -$row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(*) AS count FROM assets WHERE (asset_type = 'laptop' OR asset_type = 'desktop') - AND asset_archived_at IS NULL AND asset_client_id = $client_id $location_query")); -$workstation_count = intval($row['count']); +$workstation_count = intval($row['workstation_count']); //Server Count -$row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(*) AS count FROM assets WHERE (asset_type = 'server') - AND asset_archived_at IS NULL AND asset_client_id = $client_id $location_query")); -$server_count = intval($row['count']); +$server_count = intval($row['server_count']); //Virtual Server Count -$row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(*) AS count FROM assets WHERE (asset_type = 'virtual machine') - AND asset_archived_at IS NULL AND asset_client_id = $client_id $location_query")); -$virtual_count = intval($row['count']); +$virtual_count = intval($row['virtual_count']); //Network Device Count -$row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(*) AS count FROM assets WHERE (asset_type = 'Firewall/Router' OR asset_type = 'switch' OR asset_type = 'access point') - AND asset_archived_at IS NULL AND asset_client_id = $client_id $location_query")); -$network_count = intval($row['count']); +$network_count = intval($row['network_count']); //Other Count -$row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(*) AS count FROM assets WHERE (asset_type NOT LIKE 'laptop' AND asset_type NOT LIKE 'desktop' AND asset_type NOT LIKE 'server' AND asset_type NOT LIKE 'virtual machine' AND asset_type NOT LIKE 'firewall/router' AND asset_type NOT LIKE 'switch' AND asset_type NOT LIKE 'access point') - AND asset_archived_at IS NULL AND asset_client_id = $client_id $location_query")); -$other_count = intval($row['count']); - +$other_count = intval($row['other_count']); //Rebuild URL $url_query_strings_sort = http_build_query($get_copy);