mirror of https://github.com/itflow-org/itflow
commit
cc9abe5a09
10
ajax.php
10
ajax.php
|
|
@ -114,13 +114,15 @@ if (isset($_GET['merge_ticket_get_json_details'])) {
|
||||||
|
|
||||||
$merge_into_ticket_number = intval($_GET['merge_into_ticket_number']);
|
$merge_into_ticket_number = intval($_GET['merge_into_ticket_number']);
|
||||||
|
|
||||||
$sql = mysqli_query($mysqli, "SELECT ticket_id, ticket_number, ticket_prefix, ticket_subject, ticket_priority, ticket_status, client_name, contact_name FROM tickets
|
$sql = mysqli_query($mysqli, "SELECT ticket_id, ticket_number, ticket_prefix, ticket_subject, ticket_priority, ticket_status, ticket_status_name, client_name, contact_name FROM tickets
|
||||||
LEFT JOIN clients ON ticket_client_id = client_id
|
LEFT JOIN clients ON ticket_client_id = client_id
|
||||||
LEFT JOIN contacts ON ticket_contact_id = contact_id
|
LEFT JOIN contacts ON ticket_contact_id = contact_id
|
||||||
WHERE ticket_number = $merge_into_ticket_number");
|
LEFT JOIN ticket_statuses ON ticket_status = ticket_status_id
|
||||||
|
WHERE ticket_number = $merge_into_ticket_number");
|
||||||
|
|
||||||
if (mysqli_num_rows($sql) == 0) {
|
if (mysqli_num_rows($sql) == 0) {
|
||||||
//Do nothing.
|
//Do nothing.
|
||||||
|
echo "No ticket found!";
|
||||||
} else {
|
} else {
|
||||||
//Return ticket, client and contact details for the given ticket number
|
//Return ticket, client and contact details for the given ticket number
|
||||||
$response = mysqli_fetch_array($sql);
|
$response = mysqli_fetch_array($sql);
|
||||||
|
|
|
||||||
|
|
@ -22,19 +22,19 @@ function merge_into_number_get_details() {
|
||||||
// Check that the current ticket ID isn't also the new/merge ticket ID
|
// Check that the current ticket ID isn't also the new/merge ticket ID
|
||||||
if(parseInt(merge_into_ticket_info.ticket_id) !== parseInt(document.getElementById("current_ticket_id").value)){
|
if(parseInt(merge_into_ticket_info.ticket_id) !== parseInt(document.getElementById("current_ticket_id").value)){
|
||||||
|
|
||||||
// Show the div with the master ticket details, populate
|
// Show the div with the parent ("master") ticket details, populate
|
||||||
document.getElementById("merge_into_details_div").hidden = false;
|
document.getElementById("merge_into_details_div").hidden = false;
|
||||||
document.getElementById("merge_into_details_number").innerText = "Master ticket details: " + merge_into_ticket_info.ticket_prefix + merge_into_ticket_info.ticket_number;
|
document.getElementById("merge_into_details_number").innerText = "Parent ticket details: " + merge_into_ticket_info.ticket_prefix + merge_into_ticket_info.ticket_number;
|
||||||
document.getElementById("merge_into_details_client").innerText = "Client Contact: " + merge_into_ticket_info.client_name + " / " + merge_into_ticket_info.contact_name;
|
document.getElementById("merge_into_details_client").innerText = "Client Contact: " + merge_into_ticket_info.client_name + " / " + merge_into_ticket_info.contact_name;
|
||||||
document.getElementById("merge_into_details_subject").innerText = "Subject: " + merge_into_ticket_info.ticket_subject;
|
document.getElementById("merge_into_details_subject").innerText = "Subject: " + merge_into_ticket_info.ticket_subject;
|
||||||
document.getElementById("merge_into_details_priority").innerText = "Priority: " + merge_into_ticket_info.ticket_priority;
|
document.getElementById("merge_into_details_priority").innerText = "Priority: " + merge_into_ticket_info.ticket_priority;
|
||||||
document.getElementById("merge_into_details_status").innerText = "Status: " + merge_into_ticket_info.ticket_status;
|
document.getElementById("merge_into_details_status").innerText = "Status: " + merge_into_ticket_info.ticket_status_name;
|
||||||
|
|
||||||
// Enable the merge button if the merge into ticket isn't in a closed state
|
// Enable the merge button if the merge into ticket isn't in a closed state
|
||||||
if(merge_into_ticket_info.ticket_status.toLowerCase() != "closed"){
|
if(merge_into_ticket_info.ticket_status_name.toLowerCase() != "closed"){
|
||||||
document.getElementById("merge_ticket_btn").disabled = false;
|
document.getElementById("merge_ticket_btn").disabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ if (isset($_POST['add_ticket'])) {
|
||||||
if($ticket_template_id) {
|
if($ticket_template_id) {
|
||||||
$sql = mysqli_query($mysqli, "SELECT * FROM ticket_templates WHERE ticket_template_id = $ticket_template_id");
|
$sql = mysqli_query($mysqli, "SELECT * FROM ticket_templates WHERE ticket_template_id = $ticket_template_id");
|
||||||
$row = mysqli_fetch_array($sql);
|
$row = mysqli_fetch_array($sql);
|
||||||
|
|
||||||
// Overide Template Subject
|
// Overide Template Subject
|
||||||
if(empty($subject)) {
|
if(empty($subject)) {
|
||||||
$subject = sanitizeInput($row['ticket_template_subject']);
|
$subject = sanitizeInput($row['ticket_template_subject']);
|
||||||
|
|
@ -1107,25 +1107,28 @@ if (isset($_POST['merge_ticket'])) {
|
||||||
|
|
||||||
validateTechRole();
|
validateTechRole();
|
||||||
|
|
||||||
$ticket_id = intval($_POST['ticket_id']);
|
$ticket_id = intval($_POST['ticket_id']); // Child ticket ID to be closed
|
||||||
$merge_into_ticket_number = intval($_POST['merge_into_ticket_number']);
|
$merge_into_ticket_number = intval($_POST['merge_into_ticket_number']); // Parent ticket *number*
|
||||||
$merge_comment = sanitizeInput($_POST['merge_comment']);
|
$merge_comment = sanitizeInput($_POST['merge_comment']); // Merge comment
|
||||||
$ticket_reply_type = 'Internal';
|
$move_replies = intval($_POST['merge_move_replies']); // Whether to move replies to the new parent ticket
|
||||||
|
$ticket_reply_type = 'Internal'; // Default all replies to internal
|
||||||
|
|
||||||
//Get current ticket details
|
// Get current ticket details
|
||||||
$sql = mysqli_query($mysqli, "SELECT ticket_prefix, ticket_number, ticket_subject, ticket_details FROM tickets WHERE ticket_id = $ticket_id");
|
$sql = mysqli_query($mysqli, "SELECT ticket_prefix, ticket_number, ticket_subject, ticket_details FROM tickets WHERE ticket_id = $ticket_id");
|
||||||
if (mysqli_num_rows($sql) == 0) {
|
if (mysqli_num_rows($sql) == 0) {
|
||||||
$_SESSION['alert_message'] = "No ticket with that ID found.";
|
$_SESSION['alert_message'] = "No ticket with that ID found.";
|
||||||
header("Location: " . $_SERVER["HTTP_REFERER"]);
|
header("Location: " . $_SERVER["HTTP_REFERER"]);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
// CURRENT ticket details
|
||||||
$row = mysqli_fetch_array($sql);
|
$row = mysqli_fetch_array($sql);
|
||||||
$ticket_prefix = sanitizeInput($row['ticket_prefix']);
|
$ticket_prefix = sanitizeInput($row['ticket_prefix']);
|
||||||
$ticket_number = intval($row['ticket_number']);
|
$ticket_number = intval($row['ticket_number']);
|
||||||
$ticket_subject = sanitizeInput($row['ticket_subject']);
|
$ticket_subject = sanitizeInput($row['ticket_subject']);
|
||||||
$ticket_details = sanitizeInput($row['ticket_details']);
|
$ticket_details = sanitizeInput($row['ticket_details']);
|
||||||
|
|
||||||
//Get merge into ticket id (as it may differ from the number)
|
// NEW PARENT ticket details
|
||||||
|
// Get merge into ticket id (as it may differ from the number)
|
||||||
$sql = mysqli_query($mysqli, "SELECT ticket_id FROM tickets WHERE ticket_number = $merge_into_ticket_number");
|
$sql = mysqli_query($mysqli, "SELECT ticket_id FROM tickets WHERE ticket_number = $merge_into_ticket_number");
|
||||||
if (mysqli_num_rows($sql) == 0) {
|
if (mysqli_num_rows($sql) == 0) {
|
||||||
$_SESSION['alert_message'] = "Cannot merge into that ticket.";
|
$_SESSION['alert_message'] = "Cannot merge into that ticket.";
|
||||||
|
|
@ -1135,20 +1138,26 @@ if (isset($_POST['merge_ticket'])) {
|
||||||
$merge_row = mysqli_fetch_array($sql);
|
$merge_row = mysqli_fetch_array($sql);
|
||||||
$merge_into_ticket_id = intval($merge_row['ticket_id']);
|
$merge_into_ticket_id = intval($merge_row['ticket_id']);
|
||||||
|
|
||||||
|
// Sanity check
|
||||||
if ($ticket_number == $merge_into_ticket_number) {
|
if ($ticket_number == $merge_into_ticket_number) {
|
||||||
$_SESSION['alert_message'] = "Cannot merge into the same ticket.";
|
$_SESSION['alert_message'] = "Cannot merge into the same ticket.";
|
||||||
header("Location: " . $_SERVER["HTTP_REFERER"]);
|
header("Location: " . $_SERVER["HTTP_REFERER"]);
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Update current ticket
|
// Move ticket replies from child > parent
|
||||||
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") or die(mysqli_error($mysqli));
|
if ($move_replies) {
|
||||||
mysqli_query($mysqli, "UPDATE tickets SET ticket_status = 'Closed', ticket_closed_at = NOW() WHERE ticket_id = $ticket_id") or die(mysqli_error($mysqli));
|
mysqli_query($mysqli, "UPDATE ticket_replies SET ticket_reply_ticket_id = $merge_into_ticket_id WHERE ticket_reply_ticket_id = $ticket_id");
|
||||||
|
}
|
||||||
|
|
||||||
//Update new ticket
|
// Update current ticket
|
||||||
mysqli_query($mysqli, "INSERT INTO ticket_replies SET ticket_reply = 'Ticket $ticket_prefix$ticket_number was merged into this ticket with comment: $merge_comment.<br><b>$ticket_subject</b><br>$ticket_details', ticket_reply_time_worked = '00:01:00', ticket_reply_type = '$ticket_reply_type', ticket_reply_by = $session_user_id, ticket_reply_ticket_id = $merge_into_ticket_id") or die(mysqli_error($mysqli));
|
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_closed_at = NOW() WHERE ticket_id = $ticket_id") or die(mysqli_error($mysqli));
|
||||||
|
|
||||||
//Logging
|
//Update new parent ticket
|
||||||
|
mysqli_query($mysqli, "INSERT INTO ticket_replies SET ticket_reply = 'Ticket $ticket_prefix$ticket_number was merged into this ticket with comment: $merge_comment.<br><br><b>$ticket_subject</b><br>$ticket_details', ticket_reply_time_worked = '00:01:00', ticket_reply_type = '$ticket_reply_type', ticket_reply_by = $session_user_id, ticket_reply_ticket_id = $merge_into_ticket_id");
|
||||||
|
|
||||||
|
// Logging
|
||||||
mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Ticket', log_action = 'Merged', log_description = 'Merged ticket $ticket_prefix$ticket_number into $ticket_prefix$merge_into_ticket_number', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id");
|
mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Ticket', log_action = 'Merged', log_description = 'Merged ticket $ticket_prefix$ticket_number into $ticket_prefix$merge_into_ticket_number', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id");
|
||||||
|
|
||||||
$_SESSION['alert_message'] = "Ticket merged into $ticket_prefix$merge_into_ticket_number";
|
$_SESSION['alert_message'] = "Ticket merged into $ticket_prefix$merge_into_ticket_number";
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
</div>
|
</div>
|
||||||
<form action="post.php" method="post" autocomplete="off">
|
<form action="post.php" method="post" autocomplete="off">
|
||||||
<input type="hidden" id="current_ticket_id" name="ticket_id" value="<?php echo $ticket_id; ?>">
|
<input type="hidden" id="current_ticket_id" name="ticket_id" value="<?php echo $ticket_id; ?>">
|
||||||
|
<input type="hidden" name="merge_move_replies" value="0"> <!-- Default 0 -->
|
||||||
<div class="modal-body bg-white">
|
<div class="modal-body bg-white">
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
@ -39,6 +40,20 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" name="merge_move_replies" value="1" id="checkMoveReplies">
|
||||||
|
<label class="form-check-label" for="checkMoveReplies">
|
||||||
|
Move notes & replies to the new parent ticket
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="alert alert-dark" role="alert">
|
||||||
|
<i>The current ticket will be closed once merging is complete.</i>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<div class="form-group" id="merge_into_details_div" hidden>
|
<div class="form-group" id="merge_into_details_div" hidden>
|
||||||
<h5 id="merge_into_details_number"></h5>
|
<h5 id="merge_into_details_number"></h5>
|
||||||
|
|
@ -60,4 +75,4 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Ticket merge JS -->
|
<!-- Ticket merge JS -->
|
||||||
<script src="js/ticket_merge.js"></script>
|
<script src="js/ticket_merge.js"></script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue