From d228c30b0326796b4ae0e090d8cabaadc703d3f1 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Wed, 19 Feb 2025 13:45:44 -0500 Subject: [PATCH] Merged Global Tickets with Client Tickets seperated them with some header logic --- client_tickets.php | 372 ------------ dashboard.php | 2 +- global_search.php | 2 +- includes/client_side_nav.php | 2 +- ...port_modal.php => ticket_export_modal.php} | 4 +- post/user/ticket.php | 19 +- ticket.php | 4 +- tickets.php | 42 +- tickets_compact.php | 548 +++++++++--------- tickets_kanban.php | 13 +- tickets_list.php | 21 +- 11 files changed, 351 insertions(+), 678 deletions(-) delete mode 100644 client_tickets.php rename modals/{client_ticket_export_modal.php => ticket_export_modal.php} (79%) diff --git a/client_tickets.php b/client_tickets.php deleted file mode 100644 index 69401560..00000000 --- a/client_tickets.php +++ /dev/null @@ -1,372 +0,0 @@ - - -
-
-

Tickets - - Open | - Closed - -

-
-
- - 0) { ?> - - - -
-
-
-
-
- - -
- -
-
- -
- -
-
-
- -
-
- -
-
-
-
- - "> - - - - - = 2) { ?> - - - - - - - - - - - Never

"; - } else { - $ticket_updated_at_display = "

Never

"; - } - } else { - $ticket_updated_at_display = "$ticket_updated_at_time_ago
$ticket_updated_at"; - } - $ticket_closed_at = nullable_htmlentities($row['ticket_closed_at']); - - if ($ticket_priority == "High") { - $ticket_priority_display = "$ticket_priority"; - } elseif ($ticket_priority == "Medium") { - $ticket_priority_display = "$ticket_priority"; - } elseif ($ticket_priority == "Low") { - $ticket_priority_display = "$ticket_priority"; - } else{ - $ticket_priority_display = "-"; - } - - $ticket_assigned_to = intval($row['ticket_assigned_to']); - if (empty($ticket_assigned_to)) { - if (!empty($ticket_closed_at)) { - $ticket_assigned_to_display = "

Not Assigned

"; - } else { - $ticket_assigned_to_display = "

Not Assigned

"; - } - } else { - $ticket_assigned_to_display = nullable_htmlentities($row['user_name']); - } - - $project_id = intval($row['ticket_project_id']); - - $contact_name = nullable_htmlentities($row['contact_name']); - $contact_email = nullable_htmlentities($row['contact_email']); - $contact_archived_at = nullable_htmlentities($row['contact_archived_at']); - if (empty($contact_archived_at)) { - $contact_archived_display = ""; - } else { - $contact_archived_display = "Archived - "; - } - if (empty($contact_name)) { - $contact_display = "-"; - } else { - $contact_display = "$contact_archived_display$contact_name
$contact_email"; - } - - // Get who last updated the ticket - to be shown in the last Response column - $ticket_reply_type = "Client"; // Default to client for unreplied tickets - $ticket_reply_by_display = ""; // Default none - $sql_ticket_reply = mysqli_query($mysqli, "SELECT ticket_reply_type, ticket_reply_created_at, contact_name, user_name FROM ticket_replies - LEFT JOIN users ON ticket_reply_by = user_id - LEFT JOIN contacts ON ticket_reply_by = contact_id - WHERE ticket_reply_ticket_id = $ticket_id - AND ticket_reply_archived_at IS NULL - ORDER BY ticket_reply_id DESC LIMIT 1" - ); - $row = mysqli_fetch_array($sql_ticket_reply); - - if ($row) { - $ticket_reply_type = nullable_htmlentities($row['ticket_reply_type']); - if ($ticket_reply_type == "Client") { - $ticket_reply_by_display = nullable_htmlentities($row['contact_name']); - } else { - $ticket_reply_by_display = nullable_htmlentities($row['user_name']); - } - $ticket_reply_created_at = nullable_htmlentities($row['ticket_reply_created_at']); - $ticket_reply_created_at_time_ago = timeAgo($ticket_reply_created_at); - } - - ?> - - "> - - - - - - - - - - - - = 2) { ?> - - - - - - - - - - - - - - - - - - - - - - - -
- - Number - - - - Subject - - - - Contact - - - - Billable - - - - Priority - - - - Status - - - - Assigned - - - - Last Response - - - - Created - -
- - - - - - data-toggle = "ajax-modal" - data-ajax-url = "ajax/ajax_ticket_contact.php" - data-ajax-id = "" - - > - - - - - Yes"; - } else { - echo "No"; - } - ?> - - - = 2 && empty($ticket_closed_at)) { ?> - data-toggle = "ajax-modal" - data-ajax-url = "ajax/ajax_ticket_priority.php" - data-ajax-id = "" - - > - - - - - - = 2 && empty($ticket_closed_at)) { ?> - data-toggle = "ajax-modal" - data-ajax-url = "ajax/ajax_ticket_assign.php" - data-ajax-id = "" - - > - - - - -
-
- -
- -
-
- -
-
- -"> - + diff --git a/global_search.php b/global_search.php index 01b457ef..6bd0742c 100644 --- a/global_search.php +++ b/global_search.php @@ -507,7 +507,7 @@ if (isset($_GET['query'])) { - + diff --git a/includes/client_side_nav.php b/includes/client_side_nav.php index 2e9deead..3f22cc87 100644 --- a/includes/client_side_nav.php +++ b/includes/client_side_nav.php @@ -55,7 +55,7 @@ diff --git a/tickets.php b/tickets.php index c82281b9..81627d24 100644 --- a/tickets.php +++ b/tickets.php @@ -5,7 +5,14 @@ $sort = "ticket_number"; $order = "DESC"; -require_once "includes/inc_all.php"; +// If client_id is in URI then show client Side Bar and client header +if (isset($_GET['client_id'])) { + require_once "includes/inc_all_client.php"; + $client_query = "AND ticket_client_id = $client_id"; +} else { + require_once "includes/inc_all.php"; + $client_query = ''; +} // Perms enforceUserPermission('module_support'); @@ -90,6 +97,7 @@ $sql = mysqli_query( AND DATE(ticket_created_at) BETWEEN '$dtf' AND '$dtt' AND (CONCAT(ticket_prefix,ticket_number) LIKE '%$q%' OR client_name LIKE '%$q%' OR ticket_subject LIKE '%$q%' OR ticket_status_name LIKE '%$q%' OR ticket_priority LIKE '%$q%' OR user_name LIKE '%$q%' OR contact_name LIKE '%$q%' OR asset_name LIKE '%$q%' OR vendor_name LIKE '%$q%' OR ticket_vendor_ticket_number LIKE '%q%') $ticket_permission_snippet + $client_query ORDER BY CASE WHEN '$sort' = 'ticket_priority' THEN @@ -108,22 +116,22 @@ $sql = mysqli_query( $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); //Get Total tickets open -$sql_total_tickets_open = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_open FROM tickets WHERE ticket_resolved_at IS NULL $ticket_permission_snippet"); +$sql_total_tickets_open = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_open FROM tickets WHERE ticket_resolved_at IS NULL $client_query $ticket_permission_snippet"); $row = mysqli_fetch_array($sql_total_tickets_open); $total_tickets_open = intval($row['total_tickets_open']); //Get Total tickets closed -$sql_total_tickets_closed = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_closed FROM tickets WHERE ticket_resolved_at IS NOT NULL $ticket_permission_snippet"); +$sql_total_tickets_closed = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_closed FROM tickets WHERE ticket_resolved_at IS NOT NULL $client_query $ticket_permission_snippet"); $row = mysqli_fetch_array($sql_total_tickets_closed); $total_tickets_closed = intval($row['total_tickets_closed']); //Get Unassigned tickets -$sql_total_tickets_unassigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_unassigned FROM tickets WHERE ticket_assigned_to = '0' AND ticket_resolved_at IS NULL $ticket_permission_snippet"); +$sql_total_tickets_unassigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_unassigned FROM tickets WHERE ticket_assigned_to = '0' AND ticket_resolved_at IS NULL $client_query $ticket_permission_snippet"); $row = mysqli_fetch_array($sql_total_tickets_unassigned); $total_tickets_unassigned = intval($row['total_tickets_unassigned']); //Get Total tickets assigned to me -$sql_total_tickets_assigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_assigned FROM tickets WHERE ticket_assigned_to = $session_user_id AND ticket_resolved_at IS NULL $ticket_permission_snippet"); +$sql_total_tickets_assigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_assigned FROM tickets WHERE ticket_assigned_to = $session_user_id AND ticket_resolved_at IS NULL $client_query $ticket_permission_snippet"); $row = mysqli_fetch_array($sql_total_tickets_assigned); $user_active_assigned_tickets = intval($row['total_tickets_assigned']); @@ -146,20 +154,31 @@ $sql_categories = mysqli_query(

Tickets - Open | - Closed + status=Open" class="text-light"> Open | + status=Closed" class="text-light"> Closed

-
+
+ 0) { ?> + + +
+ + +
@@ -210,12 +229,12 @@ $sql_categories = mysqli_query( My Tickets
- + assigned=unassigned" class="btn btn-outline-danger"> Unassigned Tickets | @@ -402,4 +421,5 @@ if (isset($_GET["view"])) { -
- - +
+ + -
- - "> - +
+
+ "> + + + + + + + + + + + + = 2) { ?> + + + + + + + + + + Never

"; + } else { + $ticket_updated_at_display = "

Never

"; + } + } else { + $ticket_updated_at_display = "$ticket_updated_at_time_ago
$ticket_updated_at"; + } + + $project_id = intval($row['ticket_project_id']); + + $client_id = intval($row['ticket_client_id']); + $client_name = nullable_htmlentities($row['client_name']); + $contact_name = nullable_htmlentities($row['contact_name']); + $contact_email = nullable_htmlentities($row['contact_email']); + $asset_name = nullable_htmlentities($row['asset_name']); + + if ($ticket_priority == "High") { + $ticket_priority_color = "danger"; + } elseif ($ticket_priority == "Medium") { + $ticket_priority_color = "warning"; + } else { + $ticket_priority_color = "info"; + } + + $ticket_assigned_to = intval($row['ticket_assigned_to']); + if (empty($ticket_assigned_to)) { + if (!empty($ticket_closed_at)) { + $ticket_assigned_to_display = "

Not Assigned

"; + } else { + $ticket_assigned_to_display = "

Not Assigned

"; + } + } else { + $ticket_assigned_to_display = nullable_htmlentities($row['user_name']); + } + + if (empty($contact_name)) { + $contact_display = "-"; + } else { + $contact_display = "$contact_name
$contact_email"; + } + + // Get who last updated the ticket - to be shown in the last Response column + + // Defaults to prevent undefined errors + $ticket_reply_created_at = ""; + $ticket_reply_created_at_time_ago = "Never"; + $ticket_reply_by_display = ""; + $ticket_reply_type = "Client"; // Default to client for un-replied tickets + + $sql_ticket_reply = mysqli_query($mysqli, + "SELECT ticket_reply_type, ticket_reply_created_at, contact_name, user_name FROM ticket_replies + LEFT JOIN users ON ticket_reply_by = user_id + LEFT JOIN contacts ON ticket_reply_by = contact_id + WHERE ticket_reply_ticket_id = $ticket_id + AND ticket_reply_archived_at IS NULL + ORDER BY ticket_reply_id DESC LIMIT 1" + ); + $row = mysqli_fetch_array($sql_ticket_reply); + + if ($row) { + $ticket_reply_type = nullable_htmlentities($row['ticket_reply_type']); + if ($ticket_reply_type == "Client") { + $ticket_reply_by_display = nullable_htmlentities($row['contact_name']); + } else { + $ticket_reply_by_display = nullable_htmlentities($row['user_name']); + } + $ticket_reply_created_at = nullable_htmlentities($row['ticket_reply_created_at']); + $ticket_reply_created_at_time_ago = timeAgo($ticket_reply_created_at); + } + + + // Get Tasks + $sql_tasks = mysqli_query( $mysqli, "SELECT * FROM tasks WHERE task_ticket_id = $ticket_id ORDER BY task_created_at ASC"); + $task_count = mysqli_num_rows($sql_tasks); + // Get Completed Task Count + $sql_tasks_completed = mysqli_query($mysqli, + "SELECT * FROM tasks + WHERE task_ticket_id = $ticket_id + AND task_completed_at IS NOT NULL" + ); + $completed_task_count = mysqli_num_rows($sql_tasks_completed); + + // Tasks Completed Percent + if($task_count) { + $tasks_completed_percent = round(($completed_task_count / $task_count) * 100); + } + + ?> + + "> + + - - - - = 2) { ?> - - - - - - - - - - Never

"; - } else { - $ticket_updated_at_display = "

Never

"; - } - } else { - $ticket_updated_at_display = "$ticket_updated_at_time_ago
$ticket_updated_at"; - } - - $project_id = intval($row['ticket_project_id']); - - $client_id = intval($row['ticket_client_id']); - $client_name = nullable_htmlentities($row['client_name']); - $contact_name = nullable_htmlentities($row['contact_name']); - $contact_email = nullable_htmlentities($row['contact_email']); - $asset_name = nullable_htmlentities($row['asset_name']); - - if ($ticket_priority == "High") { - $ticket_priority_color = "danger"; - } elseif ($ticket_priority == "Medium") { - $ticket_priority_color = "warning"; - } else { - $ticket_priority_color = "info"; - } - - $ticket_assigned_to = intval($row['ticket_assigned_to']); - if (empty($ticket_assigned_to)) { - if (!empty($ticket_closed_at)) { - $ticket_assigned_to_display = "

Not Assigned

"; - } else { - $ticket_assigned_to_display = "

Not Assigned

"; - } - } else { - $ticket_assigned_to_display = nullable_htmlentities($row['user_name']); - } - - if (empty($contact_name)) { - $contact_display = "-"; - } else { - $contact_display = "$contact_name
$contact_email"; - } - - // Get who last updated the ticket - to be shown in the last Response column - - // Defaults to prevent undefined errors - $ticket_reply_created_at = ""; - $ticket_reply_created_at_time_ago = "Never"; - $ticket_reply_by_display = ""; - $ticket_reply_type = "Client"; // Default to client for un-replied tickets - - $sql_ticket_reply = mysqli_query($mysqli, - "SELECT ticket_reply_type, ticket_reply_created_at, contact_name, user_name FROM ticket_replies - LEFT JOIN users ON ticket_reply_by = user_id - LEFT JOIN contacts ON ticket_reply_by = contact_id - WHERE ticket_reply_ticket_id = $ticket_id - AND ticket_reply_archived_at IS NULL - ORDER BY ticket_reply_id DESC LIMIT 1" - ); - $row = mysqli_fetch_array($sql_ticket_reply); - - if ($row) { - $ticket_reply_type = nullable_htmlentities($row['ticket_reply_type']); - if ($ticket_reply_type == "Client") { - $ticket_reply_by_display = nullable_htmlentities($row['contact_name']); - } else { - $ticket_reply_by_display = nullable_htmlentities($row['user_name']); - } - $ticket_reply_created_at = nullable_htmlentities($row['ticket_reply_created_at']); - $ticket_reply_created_at_time_ago = timeAgo($ticket_reply_created_at); - } - // Get Tasks - $sql_tasks = mysqli_query( $mysqli, "SELECT * FROM tasks WHERE task_ticket_id = $ticket_id ORDER BY task_created_at ASC"); - $task_count = mysqli_num_rows($sql_tasks); - // Get Completed Task Count - $sql_tasks_completed = mysqli_query($mysqli, - "SELECT * FROM tasks - WHERE task_ticket_id = $ticket_id - AND task_completed_at IS NOT NULL" - ); - $completed_task_count = mysqli_num_rows($sql_tasks_completed); + + "> - - - - - - - - - - - - - - = 2) { ?> - - - - - - - - + + + + + + = 2) { ?> + + - + + - + - ?> + - -
+
+ +
+
+ + Ticket + + + + Client + + + + Client + + + + Billable + + + + Status + + + + Assigned + +
-
- -
+ +
+ +
+
- - Ticket - - - - Client - - - - Billable - - - - Status - - - - Assigned - -
- // Tasks Completed Percent - if($task_count) { - $tasks_completed_percent = round(($completed_task_count / $task_count) * 100); - } - - ?> - -
- -
- -
- -
- - - - - - - $ticket_subject"; - } else { - echo $ticket_subject; - } ?> - - - - - 0) { ?> -
-
- -
-
- - -
-

- -

-
- -
- - -
-
- - Yes"; - } else { - echo "No"; - } - ?> - - - - $ticket_scheduled_for "; } ?> - + + + + + "> + $ticket_subject"; + } else { + echo $ticket_subject; + } ?> + + + + + 0) { ?> +
+
+ +
+
+ + +
+

+ +

+
+ +
+ + + +
+
+ + Yes"; + } else { + echo "No"; + } + ?>
+ + $ticket_scheduled_for "; } ?> + + = 2 && empty($ticket_closed_at)) { ?> + data-toggle = "ajax-modal" + data-ajax-url = "ajax/ajax_ticket_assign.php" + data-ajax-id = "" + + > + + +
-
- - - - - - - - - -
-
\ No newline at end of file + + + + +
+ + + + + + + + + +
+
\ No newline at end of file diff --git a/tickets_kanban.php b/tickets_kanban.php index feda8644..0121e5a6 100644 --- a/tickets_kanban.php +++ b/tickets_kanban.php @@ -2,8 +2,8 @@ diff --git a/tickets_list.php b/tickets_list.php index 07ae8482..85dbc6ba 100644 --- a/tickets_list.php +++ b/tickets_list.php @@ -22,12 +22,20 @@ Subject + Client / Contact - + + + + + Contact + + + = 2) { ?> @@ -185,14 +193,14 @@ - + "> - + "> 0) { ?>
@@ -208,9 +216,10 @@ - - -
+ + + +