From a0a2fddd90496f792076f10b2e149b565c8fc0e5 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Tue, 11 Mar 2025 17:41:40 -0400 Subject: [PATCH] Feature: Additonal Assets can now be assigned to a single Ticket --- ajax/ajax_asset_details.php | 14 +++++++++----- ajax/ajax_ticket_edit.php | 33 +++++++++++++++++++++++++++++++++ asset_details.php | 15 +++++++++------ modals/ticket_add_modal.php | 28 +++++++++++++++++++++++++++- post/user/ticket.php | 15 +++++++++++++++ ticket.php | 31 +++++++++++++++++++++++++++++-- 6 files changed, 122 insertions(+), 14 deletions(-) diff --git a/ajax/ajax_asset_details.php b/ajax/ajax_asset_details.php index b72660e0..be047a5d 100644 --- a/ajax/ajax_asset_details.php +++ b/ajax/ajax_asset_details.php @@ -133,12 +133,16 @@ $sql_related_credentials = mysqli_query($mysqli, " $credential_count = mysqli_num_rows($sql_related_credentials); // Related Tickets Query -$sql_related_tickets = mysqli_query($mysqli, "SELECT * FROM tickets - LEFT JOIN users on ticket_assigned_to = user_id +$sql_related_tickets = mysqli_query($mysqli, " + SELECT tickets.*, users.*, ticket_statuses.* + FROM tickets + LEFT JOIN users ON ticket_assigned_to = user_id LEFT JOIN ticket_statuses ON ticket_status_id = ticket_status - WHERE ticket_asset_id = $asset_id - ORDER BY ticket_number DESC" -); + LEFT JOIN ticket_assets ON tickets.ticket_id = ticket_assets.ticket_id + WHERE ticket_asset_id = $asset_id OR ticket_assets.asset_id = $asset_id + GROUP BY tickets.ticket_id + ORDER BY ticket_number DESC +"); $ticket_count = mysqli_num_rows($sql_related_tickets); // Related Recurring Tickets Query diff --git a/ajax/ajax_ticket_edit.php b/ajax/ajax_ticket_edit.php index a2bf0c74..61a84782 100644 --- a/ajax/ajax_ticket_edit.php +++ b/ajax/ajax_ticket_edit.php @@ -24,6 +24,14 @@ $location_id = intval($row['ticket_location_id']); $vendor_id = intval($row['ticket_vendor_id']); $project_id = intval($row['ticket_project_id']); +// Additional Assets Selected +$additional_assets_array = array(); +$sql_additional_assets = mysqli_query($mysqli, "SELECT asset_id FROM ticket_assets WHERE ticket_id = $ticket_id"); +while ($row = mysqli_fetch_array($sql_additional_assets)) { + $additional_asset_id = intval($row['asset_id']); + $additional_assets_array[] = $additional_asset_id; +} + // Generate the HTML form content using output buffering. ob_start(); ?> @@ -212,6 +220,31 @@ ob_start(); +
+ +
+
+ +
+ +
+
+
diff --git a/asset_details.php b/asset_details.php index d915d3bf..816600b5 100644 --- a/asset_details.php +++ b/asset_details.php @@ -81,13 +81,16 @@ if (isset($_GET['asset_id'])) { // Override Tab Title // No Sanitizing needed as this var will opnly be used in the tab title $page_title = $row['asset_name']; - // Related Tickets Query - $sql_related_tickets = mysqli_query($mysqli, "SELECT * FROM tickets - LEFT JOIN users on ticket_assigned_to = user_id + $sql_related_tickets = mysqli_query($mysqli, " + SELECT tickets.*, users.*, ticket_statuses.* + FROM tickets + LEFT JOIN users ON ticket_assigned_to = user_id LEFT JOIN ticket_statuses ON ticket_status_id = ticket_status - WHERE ticket_asset_id = $asset_id - ORDER BY ticket_number DESC" - ); + LEFT JOIN ticket_assets ON tickets.ticket_id = ticket_assets.ticket_id + WHERE ticket_asset_id = $asset_id OR ticket_assets.asset_id = $asset_id + GROUP BY tickets.ticket_id + ORDER BY ticket_number DESC + "); $ticket_count = mysqli_num_rows($sql_related_tickets); // Related Recurring Tickets Query diff --git a/modals/ticket_add_modal.php b/modals/ticket_add_modal.php index 7ecc4ee7..db805b52 100644 --- a/modals/ticket_add_modal.php +++ b/modals/ticket_add_modal.php @@ -286,7 +286,7 @@
- +
@@ -311,6 +311,32 @@
+
+ +
+
+ +
+ +
+
+
diff --git a/post/user/ticket.php b/post/user/ticket.php index f66db5f0..daca7392 100644 --- a/post/user/ticket.php +++ b/post/user/ticket.php @@ -81,6 +81,13 @@ if (isset($_POST['add_ticket'])) { } } + if (isset($_POST['additional_assets'])) { + foreach ($_POST['additional_assets'] as $additional_asset) { + $additional_asset_id = intval($additional_asset); + mysqli_query($mysqli, "INSERT INTO ticket_assets SET ticket_id = $ticket_id, asset_id = $additional_asset_id"); + } + } + // E-mail client if (!empty($config_smtp_host) && $config_ticket_client_general_notifications == 1) { @@ -188,6 +195,14 @@ if (isset($_POST['edit_ticket'])) { mysqli_query($mysqli, "UPDATE tickets SET ticket_category = $category_id, ticket_subject = '$ticket_subject', ticket_priority = '$ticket_priority', ticket_billable = $billable, ticket_details = '$details', ticket_vendor_ticket_number = '$vendor_ticket_number', ticket_contact_id = $contact_id, ticket_vendor_id = $vendor_id, ticket_location_id = $location_id, ticket_asset_id = $asset_id, ticket_project_id = $project_id WHERE ticket_id = $ticket_id"); + if (isset($_POST['additional_assets'])) { + mysqli_query($mysqli, "DELETE FROM ticket_assets WHERE ticket_id = $ticket_id"); + foreach ($_POST['additional_assets'] as $additional_asset) { + $additional_asset_id = intval($additional_asset); + mysqli_query($mysqli, "INSERT INTO ticket_assets SET ticket_id = $ticket_id, asset_id = $additional_asset_id"); + } + } + // Get contact/ticket details after update for logging / email purposes $sql = mysqli_query($mysqli, "SELECT contact_name, contact_email, ticket_prefix, ticket_number, ticket_category, ticket_details, ticket_status_name, ticket_created_by, ticket_assigned_to, ticket_client_id FROM tickets LEFT JOIN clients ON ticket_client_id = client_id diff --git a/ticket.php b/ticket.php index ff4e0eda..f11f2f4f 100644 --- a/ticket.php +++ b/ticket.php @@ -135,6 +135,7 @@ if (isset($_GET['ticket_id'])) { $asset_serial = nullable_htmlentities($row['asset_serial']); $asset_os = nullable_htmlentities($row['asset_os']); $asset_warranty_expire = nullable_htmlentities($row['asset_warranty_expire']); + $asset_icon = getAssetIcon($asset_type); $vendor_id = intval($row['ticket_vendor_id']); $vendor_name = nullable_htmlentities($row['vendor_name']); @@ -290,6 +291,12 @@ if (isset($_GET['ticket_id'])) { // Get Watchers $sql_ticket_watchers = mysqli_query($mysqli, "SELECT * FROM ticket_watchers WHERE watcher_ticket_id = $ticket_id ORDER BY watcher_email DESC"); + // Get Additional Assets + $sql_additional_assets = mysqli_query($mysqli, "SELECT * FROM assets, ticket_assets + WHERE assets.asset_id = ticket_assets.asset_id + AND ticket_id = $ticket_id + AND assets.asset_id != $asset_id" + ); // Get Ticket Attachments $sql_ticket_attachments = mysqli_query( @@ -1011,16 +1018,36 @@ if (isset($_GET['ticket_id'])) {
-
Asset
+
Asset(s)
+ +
+ + + +
+