Add Urgent Priority, move Per Client SLA Settings to notes tab in client add / edit modal remove unnessesary sla admin setting for client overide

This commit is contained in:
johnnyq
2026-07-29 00:49:31 -04:00
parent d5ed05017b
commit 07c73a6a04
29 changed files with 107 additions and 294 deletions

View File

@@ -1,85 +0,0 @@
<?php
require_once '../../includes/modal_header.php';
// With a client_id we're editing that client's overrides, otherwise adding new
$client_id = intval($_GET['client_id'] ?? 0);
$client_name = '';
$client_assignments = [];
if ($client_id) {
$client_row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT client_name FROM clients WHERE client_id = $client_id LIMIT 1"));
$client_name = escapeHtml($client_row['client_name']);
$sql_assignments = mysqli_query($mysqli, "SELECT sla_assignment_priority, sla_assignment_sla_id FROM sla_assignments WHERE sla_assignment_client_id = $client_id");
while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
$client_assignments[$assignment_row['sla_assignment_priority']] = intval($assignment_row['sla_assignment_sla_id']);
}
}
$sql_slas = mysqli_query($mysqli, "SELECT sla_id, sla_name FROM slas WHERE sla_archived_at IS NULL ORDER BY sla_name ASC");
$active_slas = [];
while ($sla_row = mysqli_fetch_assoc($sql_slas)) {
$active_slas[intval($sla_row['sla_id'])] = $sla_row['sla_name'];
}
ob_start();
?>
<div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fas fa-fw fa-random mr-2"></i><?= $client_id ? "Editing SLA overrides: <strong>$client_name</strong>" : "New client SLA override" ?></h5>
<button type="button" class="close text-white" data-dismiss="modal">
<span>&times;</span>
</button>
</div>
<form action="post.php" method="post" autocomplete="off">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<div class="modal-body">
<div class="form-group">
<label>Client <strong class="text-danger">*</strong></label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-user"></i></span>
</div>
<?php if ($client_id) { ?>
<input type="hidden" name="client_id" value="<?= $client_id ?>">
<input type="text" class="form-control" value="<?= $client_name ?>" disabled>
<?php } else { ?>
<select class="form-control select2" name="client_id" required>
<option value="">- Client -</option>
<?php
$sql_clients = mysqli_query($mysqli, "SELECT client_id, client_name FROM clients WHERE client_archived_at IS NULL ORDER BY client_name ASC");
while ($client_row = mysqli_fetch_assoc($sql_clients)) { ?>
<option value="<?= intval($client_row['client_id']) ?>"><?= escapeHtml($client_row['client_name']) ?></option>
<?php } ?>
</select>
<?php } ?>
</div>
</div>
<?php foreach (['Low', 'Medium', 'High'] as $priority) {
$current = $client_assignments[$priority] ?? 'default';
?>
<div class="form-group">
<label><?= $priority ?> priority</label>
<select class="form-control" name="client_sla_<?= strtolower($priority) ?>">
<option value="default" <?php if ($current === 'default') { echo "selected"; } ?>>Default (follow global)</option>
<option value="0" <?php if ($current === 0) { echo "selected"; } ?>>None (no SLA)</option>
<?php foreach ($active_slas as $active_sla_id => $active_sla_name) { ?>
<option value="<?= $active_sla_id ?>" <?php if ($current === $active_sla_id) { echo "selected"; } ?>><?= escapeHtml($active_sla_name) ?></option>
<?php } ?>
</select>
</div>
<?php } ?>
</div>
<div class="modal-footer">
<button type="submit" name="save_client_sla_assignment" class="btn btn-primary text-bold"><i class="fas fa-check mr-2"></i>Save</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fas fa-times mr-2"></i>Cancel</button>
</div>
</form>
<?php
require_once '../../../includes/modal_footer.php';

View File

@@ -131,7 +131,7 @@ if (isset($_POST['save_sla_assignments'])) {
// Global defaults - one select per priority; 0 means no SLA, which for the
// global row is simply no assignment
foreach (['Low', 'Medium', 'High'] as $priority) {
foreach (['Low', 'Medium', 'High', 'Urgent'] as $priority) {
$field = 'global_sla_' . strtolower($priority);
$sla_id = intval($_POST[$field] ?? 0);
@@ -157,61 +157,3 @@ if (isset($_POST['save_sla_assignments'])) {
redirect();
}
if (isset($_POST['save_client_sla_assignment'])) {
validateCSRFToken();
$client_id = intval($_POST['client_id']);
// Per-priority values: 'default' = follow the global default (no row),
// '0' = explicitly no SLA for this client, otherwise an sla_id
foreach (['Low', 'Medium', 'High'] as $priority) {
$field = 'client_sla_' . strtolower($priority);
$value = $_POST[$field] ?? 'default';
mysqli_query($mysqli, "DELETE FROM sla_assignments WHERE sla_assignment_client_id = $client_id AND sla_assignment_priority = '$priority'");
if ($value !== 'default') {
$sla_id = intval($value);
mysqli_query($mysqli, "INSERT INTO sla_assignments SET sla_assignment_client_id = $client_id, sla_assignment_priority = '$priority', sla_assignment_sla_id = $sla_id");
}
}
// Re-resolve this client's open tickets
$restamped = 0;
$sql_tickets = mysqli_query($mysqli, "SELECT ticket_id FROM tickets WHERE ticket_client_id = $client_id AND ticket_closed_at IS NULL AND ticket_archived_at IS NULL");
while ($ticket_row = mysqli_fetch_assoc($sql_tickets)) {
applyTicketSla($ticket_row['ticket_id']);
$restamped++;
}
logAudit("SLA", "Edit", "$session_name updated SLA assignments for client ID $client_id");
flashAlert("Client SLA assignments saved - $restamped open ticket(s) re-evaluated");
redirect();
}
if (isset($_GET['delete_client_sla_assignments'])) {
validateCSRFToken();
$client_id = intval($_GET['delete_client_sla_assignments']);
mysqli_query($mysqli, "DELETE FROM sla_assignments WHERE sla_assignment_client_id = $client_id");
// Back on the global defaults - re-resolve this client's open tickets
$sql_tickets = mysqli_query($mysqli, "SELECT ticket_id FROM tickets WHERE ticket_client_id = $client_id AND ticket_closed_at IS NULL AND ticket_archived_at IS NULL");
while ($ticket_row = mysqli_fetch_assoc($sql_tickets)) {
applyTicketSla($ticket_row['ticket_id']);
}
logAudit("SLA", "Delete", "$session_name removed SLA overrides for client ID $client_id");
flashAlert("Client SLA overrides removed");
redirect();
}

View File

@@ -21,36 +21,13 @@ while ($active_sla_row = mysqli_fetch_assoc($sql_active_slas)) {
$active_slas[intval($active_sla_row['sla_id'])] = $active_sla_row['sla_name'];
}
// Assignments, keyed for easy lookup: [client_id][priority] = sla_id
// Global default assignments: [priority] = sla_id (per-client overrides live on the client edit modal)
$assignments = [];
$assignment_client_names = [];
$sql_assignments = mysqli_query($mysqli, "SELECT sla_assignment_client_id, sla_assignment_priority, sla_assignment_sla_id, client_name FROM sla_assignments
LEFT JOIN clients ON sla_assignment_client_id = client_id
ORDER BY client_name ASC"
);
$sql_assignments = mysqli_query($mysqli, "SELECT sla_assignment_priority, sla_assignment_sla_id FROM sla_assignments WHERE sla_assignment_client_id = 0");
while ($assignment_row = mysqli_fetch_assoc($sql_assignments)) {
$assignment_client_id = intval($assignment_row['sla_assignment_client_id']);
$assignments[$assignment_client_id][$assignment_row['sla_assignment_priority']] = intval($assignment_row['sla_assignment_sla_id']);
if ($assignment_client_id) {
$assignment_client_names[$assignment_client_id] = $assignment_row['client_name'];
}
$assignments[0][$assignment_row['sla_assignment_priority']] = intval($assignment_row['sla_assignment_sla_id']);
}
// Wording for an assignment cell: mapped plan, explicit none, or global default
function slaAssignmentWording($assignments, $active_slas, $client_id, $priority)
{
if (!isset($assignments[$client_id][$priority])) {
return "<span class='text-secondary'>Default</span>";
}
$sla_id = $assignments[$client_id][$priority];
if ($sla_id == 0) {
return "<span class='text-secondary'>None</span>";
}
if (isset($active_slas[$sla_id])) {
return escapeHtml($active_slas[$sla_id]);
}
return "<span class='text-secondary'>None (archived)</span>";
}
?>
@@ -138,9 +115,6 @@ function slaAssignmentWording($assignments, $active_slas, $client_id, $priority)
<div class="card card-dark">
<div class="card-header py-2">
<h3 class="card-title mt-2"><i class="fas fa-fw fa-random mr-2"></i>SLA Assignments</h3>
<div class="card-tools">
<button type="button" class="btn btn-primary ajax-modal" data-modal-url="modals/sla/sla_assignment_client.php"><i class="fas fa-plus mr-2"></i>Client Override</button>
</div>
</div>
<div class="card-body">
@@ -150,7 +124,7 @@ function slaAssignmentWording($assignments, $active_slas, $client_id, $priority)
<strong>Default (all clients)</strong>
<div class="form-row mt-2">
<?php foreach (['Low', 'Medium', 'High'] as $priority) {
<?php foreach (['Low', 'Medium', 'High', 'Urgent'] as $priority) {
$selected_sla_id = $assignments[0][$priority] ?? 0;
?>
<div class="form-group col-md-3">
@@ -163,61 +137,11 @@ function slaAssignmentWording($assignments, $active_slas, $client_id, $priority)
</select>
</div>
<?php } ?>
<div class="form-group col-md-3 d-flex align-items-end">
<button type="submit" name="save_sla_assignments" class="btn btn-primary"><i class="fas fa-check mr-2"></i>Save Defaults</button>
</div>
</div>
<button type="submit" name="save_sla_assignments" class="btn btn-primary"><i class="fas fa-check mr-2"></i>Save Defaults</button>
</form>
<hr>
<strong>Client overrides</strong>
<div class="table-responsive-sm mt-2">
<table class="table table-striped table-borderless table-hover">
<thead class="text-dark <?php if (empty($assignment_client_names)) { echo "d-none"; } ?>">
<tr>
<th>Client</th>
<th>Low</th>
<th>Medium</th>
<th>High</th>
<th class="text-center">Action</th>
</tr>
</thead>
<tbody>
<?php if (empty($assignment_client_names)) { ?>
<tr><td colspan="5" class="text-secondary">No client overrides - everyone follows the defaults above.</td></tr>
<?php } ?>
<?php foreach ($assignment_client_names as $override_client_id => $override_client_name) { ?>
<tr>
<td>
<a href="#" class="ajax-modal" data-modal-url="modals/sla/sla_assignment_client.php?client_id=<?= $override_client_id ?>">
<?= escapeHtml($override_client_name) ?>
</a>
</td>
<td><?= slaAssignmentWording($assignments, $active_slas, $override_client_id, 'Low') ?></td>
<td><?= slaAssignmentWording($assignments, $active_slas, $override_client_id, 'Medium') ?></td>
<td><?= slaAssignmentWording($assignments, $active_slas, $override_client_id, 'High') ?></td>
<td>
<div class="dropdown dropleft text-center">
<button class="btn btn-secondary btn-sm" type="button" data-toggle="dropdown">
<i class="fas fa-ellipsis-h"></i>
</button>
<div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#" data-modal-url="modals/sla/sla_assignment_client.php?client_id=<?= $override_client_id ?>">
<i class="fas fa-fw fa-edit mr-2"></i>Edit
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_client_sla_assignments=<?= $override_client_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Remove
</a>
</div>
</div>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
<small class="text-muted d-block mt-2">Per-client overrides are set on each client (edit client, Notes tab).</small>
</div>
</div>

View File

@@ -1107,7 +1107,9 @@ if (isset($_GET['asset_id'])) {
}
$ticket_closed_at = escapeHtml($row['ticket_closed_at']);
if ($ticket_priority == "High") {
if ($ticket_priority == "Urgent") {
$ticket_priority_display = "<span class='p-2 badge badge-dark'>$ticket_priority</span>";
} elseif ($ticket_priority == "High") {
$ticket_priority_display = "<span class='p-2 badge badge-danger'>$ticket_priority</span>";
} elseif ($ticket_priority == "Medium") {
$ticket_priority_display = "<span class='p-2 badge badge-warning'>$ticket_priority</span>";

View File

@@ -847,7 +847,9 @@ if (isset($_GET['contact_id'])) {
}
$ticket_closed_at = escapeHtml($row['ticket_closed_at']);
if ($ticket_priority == "High") {
if ($ticket_priority == "Urgent") {
$ticket_priority_display = "<span class='p-2 badge badge-dark'>$ticket_priority</span>";
} elseif ($ticket_priority == "High") {
$ticket_priority_display = "<span class='p-2 badge badge-danger'>$ticket_priority</span>";
} elseif ($ticket_priority == "Medium") {
$ticket_priority_display = "<span class='p-2 badge badge-warning'>$ticket_priority</span>";

View File

@@ -770,7 +770,7 @@ if ($user_config_dashboard_technical_enable == 1) {
$has_client = "";
}
$ticket_priority_color = $ticket_priority == "High" ? "danger" : ($ticket_priority == "Medium" ? "warning" : "info");
$ticket_priority_color = $ticket_priority == "Urgent" ? "dark" : ($ticket_priority == "High" ? "danger" : ($ticket_priority == "Medium" ? "warning" : "info"));
$contact_display = empty($contact_name) ? "-" : "<a href='contact.php?client_id=$client_id&contact_id=$contact_id'>$contact_name</a>";
?>
<tr class="<?= empty($ticket_updated_at) ? 'text-bold' : '' ?>">

View File

@@ -635,7 +635,9 @@ ob_start();
}
$ticket_closed_at = escapeHtml($row['ticket_closed_at']);
if ($ticket_priority == "High") {
if ($ticket_priority == "Urgent") {
$ticket_priority_display = "<span class='p-2 badge badge-dark'>$ticket_priority</span>";
} elseif ($ticket_priority == "High") {
$ticket_priority_display = "<span class='p-2 badge badge-danger'>$ticket_priority</span>";
} elseif ($ticket_priority == "Medium") {
$ticket_priority_display = "<span class='p-2 badge badge-warning'>$ticket_priority</span>";

View File

@@ -50,6 +50,7 @@ ob_start();
<option>Low</option>
<option>Medium</option>
<option>High</option>
<option>Urgent</option>
</select>
</div>
</div>

View File

@@ -159,34 +159,6 @@ ob_start();
</div>
</div>
<?php
// Ticket SLA assignments - only offered when active SLAs exist
$sla_options = [];
$sla_options_sql = mysqli_query($mysqli, "SELECT sla_id, sla_name FROM slas WHERE sla_archived_at IS NULL ORDER BY sla_name ASC");
while ($sla_option_row = mysqli_fetch_assoc($sla_options_sql)) {
$sla_options[intval($sla_option_row['sla_id'])] = $sla_option_row['sla_name'];
}
if ($config_module_enable_ticketing && !empty($sla_options)) { ?>
<div class="form-group">
<label>Ticket SLAs</label>
<div class="form-row">
<?php foreach (['Low', 'Medium', 'High'] as $sla_priority) { ?>
<div class="col-4">
<small class="text-secondary"><?= $sla_priority ?></small>
<select class="form-control" name="client_sla_<?= strtolower($sla_priority) ?>">
<option value="default">Default</option>
<option value="0">None</option>
<?php foreach ($sla_options as $sla_option_id => $sla_option_name) { ?>
<option value="<?= $sla_option_id ?>"><?= escapeHtml($sla_option_name) ?></option>
<?php } ?>
</select>
</div>
<?php } ?>
</div>
<small class="text-muted">Default follows the global SLA assignment for each priority.</small>
</div>
<?php } ?>
</div>
<div class="tab-pane fade" id="pills-location">
@@ -391,6 +363,7 @@ ob_start();
</div>
</div>
</div>
<?php } ?>
@@ -399,6 +372,34 @@ ob_start();
<div class="form-group">
<textarea class="form-control" rows="10" name="notes" placeholder="Enter some notes"></textarea>
</div>
<?php
// Ticket SLA assignments - only offered when active SLAs exist
$sla_options = [];
$sla_options_sql = mysqli_query($mysqli, "SELECT sla_id, sla_name FROM slas WHERE sla_archived_at IS NULL ORDER BY sla_name ASC");
while ($sla_option_row = mysqli_fetch_assoc($sla_options_sql)) {
$sla_options[intval($sla_option_row['sla_id'])] = $sla_option_row['sla_name'];
}
if ($config_module_enable_ticketing && !empty($sla_options)) { ?>
<div class="form-group">
<label>Ticket SLAs</label>
<div class="form-row">
<?php foreach (['Low', 'Medium', 'High', 'Urgent'] as $sla_priority) { ?>
<div class="col-3">
<small class="text-secondary"><?= $sla_priority ?></small>
<select class="form-control" name="client_sla_<?= strtolower($sla_priority) ?>">
<option value="default">Default</option>
<option value="0">None</option>
<?php foreach ($sla_options as $sla_option_id => $sla_option_name) { ?>
<option value="<?= $sla_option_id ?>"><?= escapeHtml($sla_option_name) ?></option>
<?php } ?>
</select>
</div>
<?php } ?>
</div>
<small class="text-muted">Default follows the global SLA assignment for each priority.</small>
</div>
<?php } ?>
</div>
</div>

View File

@@ -46,6 +46,7 @@ ob_start();
<option>Low</option>
<option>Medium</option>
<option>High</option>
<option>Urgent</option>
</select>
</div>
</div>

View File

@@ -193,34 +193,6 @@ ob_start();
</div>
</div>
<?php
// Ticket SLA assignments - only offered when active SLAs exist
$sla_options = [];
$sla_options_sql = mysqli_query($mysqli, "SELECT sla_id, sla_name FROM slas WHERE sla_archived_at IS NULL ORDER BY sla_name ASC");
while ($sla_option_row = mysqli_fetch_assoc($sla_options_sql)) {
$sla_options[intval($sla_option_row['sla_id'])] = $sla_option_row['sla_name'];
}
if ($config_module_enable_ticketing && !empty($sla_options)) { ?>
<div class="form-group">
<label>Ticket SLAs</label>
<div class="form-row">
<?php foreach (['Low', 'Medium', 'High'] as $sla_priority) { $sla_current = $client_sla_assignments[$sla_priority] ?? 'default'; ?>
<div class="col-4">
<small class="text-secondary"><?= $sla_priority ?></small>
<select class="form-control" name="client_sla_<?= strtolower($sla_priority) ?>">
<option value="default" <?php if ($sla_current === 'default') { echo "selected"; } ?>>Default</option>
<option value="0" <?php if ($sla_current === 0) { echo "selected"; } ?>>None</option>
<?php foreach ($sla_options as $sla_option_id => $sla_option_name) { ?>
<option value="<?= $sla_option_id ?>" <?php if ($sla_current === $sla_option_id) { echo "selected"; } ?>><?= escapeHtml($sla_option_name) ?></option>
<?php } ?>
</select>
</div>
<?php } ?>
</div>
<small class="text-muted">Default follows the global SLA assignment for each priority.</small>
</div>
<?php } ?>
</div>
<?php if ($config_module_enable_accounting) { ?>
@@ -269,6 +241,7 @@ ob_start();
</div>
</div>
</div>
<?php } ?>
@@ -279,6 +252,34 @@ ob_start();
<textarea class="form-control" rows="10" placeholder="Enter some notes" name="notes"><?= $client_notes ?></textarea>
</div>
<?php
// Ticket SLA assignments - only offered when active SLAs exist
$sla_options = [];
$sla_options_sql = mysqli_query($mysqli, "SELECT sla_id, sla_name FROM slas WHERE sla_archived_at IS NULL ORDER BY sla_name ASC");
while ($sla_option_row = mysqli_fetch_assoc($sla_options_sql)) {
$sla_options[intval($sla_option_row['sla_id'])] = $sla_option_row['sla_name'];
}
if ($config_module_enable_ticketing && !empty($sla_options)) { ?>
<div class="form-group">
<label>Ticket SLAs</label>
<div class="form-row">
<?php foreach (['Low', 'Medium', 'High', 'Urgent'] as $sla_priority) { $sla_current = $client_sla_assignments[$sla_priority] ?? 'default'; ?>
<div class="col-3">
<small class="text-secondary"><?= $sla_priority ?></small>
<select class="form-control" name="client_sla_<?= strtolower($sla_priority) ?>">
<option value="default" <?php if ($sla_current === 'default') { echo "selected"; } ?>>Default</option>
<option value="0" <?php if ($sla_current === 0) { echo "selected"; } ?>>None</option>
<?php foreach ($sla_options as $sla_option_id => $sla_option_name) { ?>
<option value="<?= $sla_option_id ?>" <?php if ($sla_current === $sla_option_id) { echo "selected"; } ?>><?= escapeHtml($sla_option_name) ?></option>
<?php } ?>
</select>
</div>
<?php } ?>
</div>
<small class="text-muted">Default follows the global SLA assignment for each priority.</small>
</div>
<?php } ?>
</div>
</div>

View File

@@ -629,7 +629,9 @@ ob_start();
$ticket_updated_at_display = $ticket_updated_at;
}
if ($ticket_priority == "High") {
if ($ticket_priority == "Urgent") {
$ticket_priority_display = "<span class='p-2 badge badge-dark'>$ticket_priority</span>";
} elseif ($ticket_priority == "High") {
$ticket_priority_display = "<span class='p-2 badge badge-danger'>$ticket_priority</span>";
} elseif ($ticket_priority == "Medium") {
$ticket_priority_display = "<span class='p-2 badge badge-warning'>$ticket_priority</span>";

View File

@@ -111,6 +111,7 @@ ob_start();
<option>Low</option>
<option>Medium</option>
<option>High</option>
<option>Urgent</option>
</select>
</div>
</div>

View File

@@ -33,6 +33,7 @@ ob_start();
<option>Low</option>
<option>Medium</option>
<option>High</option>
<option>Urgent</option>
</select>
</div>
</div>

View File

@@ -95,6 +95,7 @@ ob_start();
<option <?php if ($recurring_ticket_priority == "Low") { echo "selected"; } ?> >Low</option>
<option <?php if ($recurring_ticket_priority == "Medium") { echo "selected"; } ?> >Medium</option>
<option <?php if ($recurring_ticket_priority == "High") { echo "selected"; } ?> >High</option>
<option <?php if ($recurring_ticket_priority == "Urgent") { echo "selected"; } ?> >Urgent</option>
</select>
</div>
</div>

View File

@@ -149,6 +149,7 @@ ob_start();
<option>Low</option>
<option>Medium</option>
<option>High</option>
<option>Urgent</option>
</select>
</div>
</div>

View File

@@ -161,6 +161,7 @@ ob_start();
<option>Low</option>
<option>Medium</option>
<option>High</option>
<option>Urgent</option>
</select>
</div>
</div>

View File

@@ -33,6 +33,7 @@ ob_start();
<option>Low</option>
<option>Medium</option>
<option>High</option>
<option>Urgent</option>
</select>
</div>
</div>

View File

@@ -111,6 +111,7 @@ ob_start();
<option <?php if ($ticket_priority == 'Low') { echo "selected"; } ?> >Low</option>
<option <?php if ($ticket_priority == 'Medium') { echo "selected"; } ?> >Medium</option>
<option <?php if ($ticket_priority == 'High') { echo "selected"; } ?> >High</option>
<option <?php if ($ticket_priority == 'Urgent') { echo "selected"; } ?> >Urgent</option>
</select>
</div>
</div>

View File

@@ -49,6 +49,7 @@ ob_start();
<option <?php if ($ticket_priority == 'Low') { echo "selected"; } ?> >Low</option>
<option <?php if ($ticket_priority == 'Medium') { echo "selected"; } ?> >Medium</option>
<option <?php if ($ticket_priority == 'High') { echo "selected"; } ?> >High</option>
<option <?php if ($ticket_priority == 'Urgent') { echo "selected"; } ?> >Urgent</option>
</select>
</div>
</div>

View File

@@ -246,7 +246,7 @@ if (isset($_POST['add_client'])) {
// Ticket SLA assignments (fields only rendered when active SLAs exist)
if (isset($_POST['client_sla_low'])) {
foreach (['Low', 'Medium', 'High'] as $sla_priority) {
foreach (['Low', 'Medium', 'High', 'Urgent'] as $sla_priority) {
$sla_value = strval($_POST['client_sla_' . strtolower($sla_priority)] ?? 'default');
if ($sla_value !== 'default') {
$client_sla_id = intval($sla_value);
@@ -345,7 +345,7 @@ if (isset($_POST['edit_client'])) {
}
$sla_assignments_changed = false;
foreach (['Low', 'Medium', 'High'] as $sla_priority) {
foreach (['Low', 'Medium', 'High', 'Urgent'] as $sla_priority) {
$sla_value = strval($_POST['client_sla_' . strtolower($sla_priority)] ?? 'default');
$sla_current = $current_sla_assignments[$sla_priority] ?? 'default';
if ($sla_value === $sla_current) {

View File

@@ -413,7 +413,9 @@ if (isset($_GET['project_id'])) {
}
$ticket_closed_at = escapeHtml($row['ticket_closed_at']);
if ($ticket_priority == "High") {
if ($ticket_priority == "Urgent") {
$ticket_priority_display = "<span class='p-2 badge badge-dark'>$ticket_priority</span>";
} elseif ($ticket_priority == "High") {
$ticket_priority_display = "<span class='p-2 badge badge-danger'>$ticket_priority</span>";
} elseif ($ticket_priority == "Medium") {
$ticket_priority_display = "<span class='p-2 badge badge-warning'>$ticket_priority</span>";

View File

@@ -68,6 +68,7 @@ $sql = mysqli_query(
CASE
WHEN '$sort' = 'recurring_ticket_priority' THEN
CASE recurring_ticket_priority
WHEN 'Urgent' THEN 0
WHEN 'High' THEN 1
WHEN 'Medium' THEN 2
WHEN 'Low' THEN 3

View File

@@ -86,7 +86,9 @@ if (isset($_GET['ticket_id'])) {
}
//Set Ticket Badge Color based of priority
if ($ticket_priority == "High") {
if ($ticket_priority == "Urgent") {
$ticket_priority_display = "<span class='p-2 badge badge-pill badge-dark'>$ticket_priority</span>";
} elseif ($ticket_priority == "High") {
$ticket_priority_display = "<span class='p-2 badge badge-pill badge-danger'>$ticket_priority</span>";
} elseif ($ticket_priority == "Medium") {
$ticket_priority_display = "<span class='p-2 badge badge-pill badge-warning'>$ticket_priority</span>";

View File

@@ -24,6 +24,7 @@ while ($row = mysqli_fetch_assoc($status_sql)) {
$ordering_snippet = "ORDER BY
CASE
WHEN ticket_priority = 'Urgent' THEN 0
WHEN ticket_priority = 'High' THEN 1
WHEN ticket_priority = 'Medium' THEN 2
WHEN ticket_priority = 'Low' THEN 3
@@ -98,7 +99,9 @@ $kanban = array_values($statuses);
<?php foreach ($column['tickets'] as $item) {
if ($item['ticket_priority'] == "High") {
if ($item['ticket_priority'] == "Urgent") {
$ticket_priority_color = "dark";
} elseif ($item['ticket_priority'] == "High") {
$ticket_priority_color = "danger";
} elseif ($item['ticket_priority'] == "Medium") {
$ticket_priority_color = "warning";

View File

@@ -115,7 +115,9 @@
$has_client = "";
}
if ($ticket_priority == "High") {
if ($ticket_priority == "Urgent") {
$ticket_priority_color = "dark";
} elseif ($ticket_priority == "High") {
$ticket_priority_color = "danger";
} elseif ($ticket_priority == "Medium") {
$ticket_priority_color = "warning";

View File

@@ -117,6 +117,7 @@ $query =
CASE
WHEN '$sort' = 'ticket_priority' THEN
CASE ticket_priority
WHEN 'Urgent' THEN 0
WHEN 'High' THEN 1
WHEN 'Medium' THEN 2
WHEN 'Low' THEN 3

View File

@@ -30,7 +30,7 @@ if (isset($_POST['add_ticket'])) {
$url_key = randomString(32);
// Ensure priority is low/med/high (as can be user defined)
if ($_POST['priority'] !== "Low" && $_POST['priority'] !== "Medium" && $_POST['priority'] !== "High") {
if ($_POST['priority'] !== "Low" && $_POST['priority'] !== "Medium" && $_POST['priority'] !== "High" && $_POST['priority'] !== "Urgent") {
$priority = "Low";
} else {
$priority = escapeSql($_POST['priority']);

View File

@@ -49,6 +49,7 @@ $sql_assets = mysqli_query($mysqli, "SELECT asset_id, asset_name, asset_type FRO
<option>Low</option>
<option>Medium</option>
<option>High</option>
<option>Urgent</option>
</select>
</div>
</div>