diff --git a/user/post/ticket.php b/user/post/ticket.php index e73be383..eeb9c0f6 100644 --- a/user/post/ticket.php +++ b/user/post/ticket.php @@ -1037,13 +1037,17 @@ if (isset($_POST['bulk_merge_tickets'])) { $ticket_subject = sanitizeInput($row['ticket_subject']); $ticket_details = mysqli_escape_string($mysqli, $row['ticket_details']); $current_ticket_priority = sanitizeInput($row['ticket_priority']); + $ticket_first_response_at = sanitizeInput($row['ticket_first_response_at']); $client_id = intval($row['ticket_client_id']); // Update current ticket + if (empty($ticket_first_response_at)) { + mysqli_query($mysqli, "UPDATE tickets SET ticket_first_response_at = NOW() WHERE ticket_id = $ticket_id"); + } mysqli_query($mysqli, "INSERT INTO ticket_replies SET ticket_reply = 'Ticket $ticket_prefix$ticket_number bulk merged into $ticket_prefix$merge_into_ticket_number. Comment: $merge_comment', ticket_reply_time_worked = '00:01:00', ticket_reply_type = '$ticket_reply_type', ticket_reply_by = $session_user_id, ticket_reply_ticket_id = $ticket_id"); mysqli_query($mysqli, "UPDATE tickets SET ticket_status = '5', ticket_resolved_at = NOW(), ticket_closed_at = NOW(), ticket_closed_by = $session_user_id WHERE ticket_id = $ticket_id") or die(mysqli_error($mysqli)); - //Update new parent ticket + // Update new parent ticket mysqli_query($mysqli, "INSERT INTO ticket_replies SET ticket_reply = 'Ticket $ticket_prefix$ticket_number was bulk merged into this ticket with comment: $merge_comment.

$ticket_subject
$ticket_details', ticket_reply_time_worked = '00:01:00', ticket_reply_type = 'Internal', ticket_reply_by = $session_user_id, ticket_reply_ticket_id = $merge_into_ticket_id"); logAction("Ticket", "Merged", "$session_name Merged ticket $ticket_prefix$ticket_number into $ticket_prefix$merge_into_ticket_number", $client_id, $ticket_id); @@ -1104,8 +1108,14 @@ if (isset($_POST['bulk_resolve_tickets'])) { $ticket_subject = sanitizeInput($row['ticket_subject']); $current_ticket_priority = sanitizeInput($row['ticket_priority']); $url_key = sanitizeInput($row['ticket_url_key']); + $ticket_first_response_at = sanitizeInput($row['ticket_first_response_at']); $client_id = intval($row['ticket_client_id']); + // Mark FR time if required + if (empty($ticket_first_response_at)) { + mysqli_query($mysqli, "UPDATE tickets SET ticket_first_response_at = NOW() WHERE ticket_id = $ticket_id"); + } + // Update ticket & insert reply mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 4, ticket_resolved_at = NOW() WHERE ticket_id = $ticket_id"); @@ -1227,8 +1237,14 @@ if (isset($_POST['bulk_ticket_reply'])) { $ticket_subject = sanitizeInput($row['ticket_subject']); $current_ticket_priority = sanitizeInput($row['ticket_priority']); $url_key = sanitizeInput($row['ticket_url_key']); + $ticket_first_response_at = sanitizeInput($row['ticket_first_response_at']); $client_id = intval($row['ticket_client_id']); + // Mark FR time if required + if (empty($ticket_first_response_at)) { + mysqli_query($mysqli, "UPDATE tickets SET ticket_first_response_at = NOW() WHERE ticket_id = $ticket_id"); + } + // Add reply mysqli_query($mysqli, "INSERT INTO ticket_replies SET ticket_reply = '$ticket_reply', ticket_reply_time_worked = '$ticket_reply_time_worked', ticket_reply_type = '$ticket_reply_type', ticket_reply_by = $session_user_id, ticket_reply_ticket_id = $ticket_id"); @@ -1557,7 +1573,7 @@ if (isset($_POST['add_ticket_reply'])) { $ticket_reply_id = mysqli_insert_id($mysqli); // Get Ticket Details - $ticket_sql = mysqli_query($mysqli, "SELECT contact_name, contact_email, ticket_prefix, ticket_number, ticket_subject, ticket_status, ticket_status_name, ticket_url_key, ticket_client_id, ticket_created_by, ticket_assigned_to + $ticket_sql = mysqli_query($mysqli, "SELECT contact_name, contact_email, ticket_prefix, ticket_number, ticket_subject, ticket_status, ticket_status_name, ticket_url_key, ticket_first_response_at, ticket_created_by, ticket_assigned_to, ticket_client_id FROM tickets LEFT JOIN clients ON ticket_client_id = client_id LEFT JOIN contacts ON ticket_contact_id = contact_id @@ -1575,9 +1591,10 @@ if (isset($_POST['add_ticket_reply'])) { $ticket_status = intval($row['ticket_status']); $ticket_status_name = sanitizeInput($row['ticket_status_name']); $url_key = sanitizeInput($row['ticket_url_key']); - $client_id = intval($row['ticket_client_id']); + $ticket_first_response_at = sanitizeInput($row['ticket_first_response_at']); $ticket_created_by = intval($row['ticket_created_by']); $ticket_assigned_to = intval($row['ticket_assigned_to']); + $client_id = intval($row['ticket_client_id']); // Sanitize Config vars from get_settings.php $config_ticket_from_name = sanitizeInput($config_ticket_from_name); @@ -1651,6 +1668,11 @@ if (isset($_POST['add_ticket_reply'])) { mysqli_query($mysqli, "INSERT INTO notifications SET notification_type = 'Ticket', notification = '$session_name updated Ticket $ticket_prefix$ticket_number - Subject: $ticket_subject that you opened', notification_action = 'ticket.php?ticket_id=$ticket_id', notification_client_id = $client_id, notification_user_id = $ticket_created_by"); } + // Handle first response + if (empty($ticket_first_response_at) && $ticket_reply_type == 'Public') { + mysqli_query($mysqli, "UPDATE tickets SET ticket_first_response_at = NOW() WHERE ticket_id = $ticket_id"); + } + // Custom action/notif handler if ($ticket_reply_type == 'Internal') { customAction('ticket_reply_agent_internal', $ticket_id); @@ -1748,6 +1770,7 @@ if (isset($_POST['merge_ticket'])) { $ticket_number = intval($row['ticket_number']); $ticket_subject = sanitizeInput($row['ticket_subject']); $ticket_details = mysqli_escape_string($mysqli, $row['ticket_details']); + $ticket_first_response_at = sanitizeInput($row['ticket_first_response_at']); // NEW PARENT ticket details // Get merge into ticket id (as it may differ from the number) @@ -1771,6 +1794,10 @@ if (isset($_POST['merge_ticket'])) { } // Update current ticket + if (empty($ticket_first_response_at)) { + mysqli_query($mysqli, "UPDATE tickets SET ticket_first_response_at = NOW() WHERE ticket_id = $ticket_id"); + } + mysqli_query($mysqli, "INSERT INTO ticket_replies SET ticket_reply = 'Ticket $ticket_prefix$ticket_number merged into $ticket_prefix$merge_into_ticket_number. Comment: $merge_comment', ticket_reply_time_worked = '00:01:00', ticket_reply_type = '$ticket_reply_type', ticket_reply_by = $session_user_id, ticket_reply_ticket_id = $ticket_id"); mysqli_query($mysqli, "UPDATE tickets SET ticket_status = '5', ticket_resolved_at = NOW(), ticket_closed_at = NOW(), ticket_closed_by = $session_user_id WHERE ticket_id = $ticket_id") or die(mysqli_error($mysqli)); @@ -1822,9 +1849,21 @@ if (isset($_GET['resolve_ticket'])) { $ticket_id = intval($_GET['resolve_ticket']); + $sql = mysqli_query($mysqli, "SELECT * FROM tickets WHERE ticket_id = $ticket_id"); + $row = mysqli_fetch_array($sql); + $ticket_prefix = sanitizeInput($row['ticket_prefix']); + $ticket_number = intval($row['ticket_number']); + $ticket_first_response_at = sanitizeInput($row['ticket_first_response_at']); + + // Mark FR + if (empty($ticket_first_response_at)) { + mysqli_query($mysqli, "UPDATE tickets SET ticket_first_response_at = NOW() WHERE ticket_id = $ticket_id"); + } + + // Resolve mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 4, ticket_resolved_at = NOW() WHERE ticket_id = $ticket_id"); - logAction("Ticket", "Resolved", "$session_name resolved ticket ID $ticket_id", 0, $ticket_id); + logAction("Ticket", "Resolved", "$session_name resolved ticket $ticket_prefix$ticket_number (ID: $ticket_id)", 0, $ticket_id); customAction('ticket_resolve', $ticket_id); diff --git a/user/ticket.php b/user/ticket.php index 04408b85..101165c2 100644 --- a/user/ticket.php +++ b/user/ticket.php @@ -103,6 +103,7 @@ if (isset($_GET['ticket_id'])) { $ticket_date = date('Y-m-d', strtotime($ticket_created_at)); $ticket_updated_at = nullable_htmlentities($row['ticket_updated_at']); $ticket_updated_at_ago = timeAgo($row['ticket_updated_at']); + $ticket_first_response_at = nullable_htmlentities($row['ticket_first_response_at']); $ticket_resolved_at = nullable_htmlentities($row['ticket_resolved_at']); $ticket_resolved_at_ago = timeAgo($row['ticket_resolved_at']); $ticket_resolved_date = date('Y-m-d', strtotime($ticket_resolved_at)); @@ -881,6 +882,13 @@ if (isset($_GET['ticket_id'])) { + + +
+ FR: +
+ +