mirror of https://github.com/itflow-org/itflow
Feature: Additonal Assets can now be assigned to a single Ticket
This commit is contained in:
parent
f61c30bd5a
commit
a0a2fddd90
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Additional Assets</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-fw fa-desktop"></i></span>
|
||||
</div>
|
||||
<select class="form-control select2" name="additional_assets[]" data-tags="true" data-placeholder="- Select Additional Assets -" multiple>
|
||||
<option value=""></option>
|
||||
<?php
|
||||
|
||||
$sql_assets = mysqli_query($mysqli, "SELECT asset_id, asset_name, contact_name FROM assets LEFT JOIN contacts ON contact_id = asset_contact_id WHERE asset_client_id = $client_id AND asset_id != $asset_id AND asset_archived_at IS NULL ORDER BY asset_name ASC");
|
||||
while ($row = mysqli_fetch_array($sql_assets)) {
|
||||
$asset_id_select = intval($row['asset_id']);
|
||||
$asset_name_select = nullable_htmlentities($row['asset_name']);
|
||||
$asset_contact_name_select = nullable_htmlentities($row['contact_name']);
|
||||
?>
|
||||
<option value="<?php echo $asset_id_select; ?>"
|
||||
<?php if (in_array($asset_id_select, $additional_assets_array)) { echo "selected"; } ?>
|
||||
><?php echo "$asset_name_select - $asset_contact_name_select"; ?></option>
|
||||
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Location</label>
|
||||
<div class="input-group">
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@
|
|||
<div class="tab-pane fade" id="pills-assignment">
|
||||
|
||||
<div class="form-group">
|
||||
<label>Asset</label>
|
||||
<label>Primary Asset</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-fw fa-desktop"></i></span>
|
||||
|
|
@ -311,6 +311,32 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Additional Assets</label>
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text"><i class="fa fa-fw fa-desktop"></i></span>
|
||||
</div>
|
||||
<select class="form-control select2" name="additional_assets[]" data-tags="true" data-placeholder="- Select Additional Assets -" multiple>
|
||||
<option value=""></option>
|
||||
<?php
|
||||
|
||||
$sql_assets = mysqli_query($mysqli, "SELECT asset_id, asset_name, contact_name FROM assets LEFT JOIN contacts ON contact_id = asset_contact_id WHERE asset_client_id = $client_id AND asset_archived_at IS NULL ORDER BY asset_name ASC");
|
||||
while ($row = mysqli_fetch_array($sql_assets)) {
|
||||
$asset_id_select = intval($row['asset_id']);
|
||||
$asset_name_select = nullable_htmlentities($row['asset_name']);
|
||||
$asset_contact_name_select = nullable_htmlentities($row['contact_name']);
|
||||
?>
|
||||
<option value="<?php echo $asset_id_select; ?>"
|
||||
<?php if (isset($_GET['asset_id']) && $asset_id_select == $_GET['asset_id']) { echo "selected"; }
|
||||
?>
|
||||
><?php echo "$asset_name_select - $asset_contact_name_select"; ?></option>
|
||||
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Location</label>
|
||||
<div class="input-group">
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
31
ticket.php
31
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 card -->
|
||||
<?php if ($asset_id) { ?>
|
||||
<div class="card card-body mb-3">
|
||||
<h5 class="text-secondary">Asset</h5>
|
||||
<h5 class="text-secondary">Asset(s)</h5>
|
||||
<div>
|
||||
<a href="#"
|
||||
data-toggle="ajax-modal"
|
||||
data-modal-size="lg"
|
||||
data-ajax-url="ajax/ajax_asset_details.php?<?php echo $client_url; ?>"
|
||||
data-ajax-id="<?php echo $asset_id; ?>">
|
||||
<i class="fa fa-fw fa-desktop text-secondary mr-2"></i><strong><?php echo $asset_name; ?></strong>
|
||||
<i class="fa fa-fw fa-<?php echo $asset_icon; ?> text-secondary mr-2"></i><strong><?php echo $asset_name; ?></strong>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
while ($row = mysqli_fetch_array($sql_additional_assets)) {
|
||||
$additional_asset_id = intval($row['asset_id']);
|
||||
$additional_asset_name = nullable_htmlentities($row['asset_name']);
|
||||
$additional_asset_type = nullable_htmlentities($row['asset_type']);
|
||||
$additional_asset_icon = getAssetIcon($additional_asset_type);
|
||||
?>
|
||||
<div class="mt-1">
|
||||
<a href="#"
|
||||
data-toggle="ajax-modal"
|
||||
data-modal-size="lg"
|
||||
data-ajax-url="ajax/ajax_asset_details.php?<?php echo $client_url; ?>"
|
||||
data-ajax-id="<?php echo $additional_asset_id; ?>">
|
||||
<i class="fa fa-fw fa-<?php echo $additional_asset_icon; ?> text-secondary mr-2"></i><?php echo $additional_asset_name; ?>
|
||||
</a>
|
||||
</div>
|
||||
<?php
|
||||
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php } // End if asset_id ?>
|
||||
<!-- End Asset card -->
|
||||
|
|
|
|||
Loading…
Reference in New Issue