mirror of
https://github.com/itflow-org/itflow
synced 2026-11-11 15:07:24 +00:00
103 lines
5.3 KiB
PHP
103 lines
5.3 KiB
PHP
<?php
|
|
|
|
require_once '../../../includes/modal_header.php';
|
|
|
|
enforceUserPermission('module_support', 2);
|
|
|
|
// The ticket, after the module and client checks - or the modal's error
|
|
$row = ticketForModal($_GET['id'] ?? 0, 2, true);
|
|
$ticket_id = intval($row['ticket_id']);
|
|
|
|
$client_name = escapeHtml($row['client_name']);
|
|
$ticket_prefix = escapeHtml($row['ticket_prefix']);
|
|
$ticket_number = intval($row['ticket_number']);
|
|
$asset_id = intval($row['ticket_asset_id']);
|
|
$client_id = intval($row['ticket_client_id']);
|
|
|
|
// A ticket with no client is internal work - nobody's assets
|
|
if (!$client_id) {
|
|
echo json_encode(['error' => 'This ticket has no client, so no assets.']);
|
|
exit;
|
|
}
|
|
|
|
// 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_assoc($sql_additional_assets)) {
|
|
$additional_asset_id = intval($row['asset_id']);
|
|
$additional_assets_array[] = $additional_asset_id;
|
|
}
|
|
// What it links to now stays on offer even once archived, so saving doesn't drop it
|
|
$linked_asset_ids = implode(',', array_merge([0, $asset_id], $additional_assets_array));
|
|
|
|
ob_start();
|
|
|
|
?>
|
|
|
|
<div class="modal-header bg-dark">
|
|
<h5 class="modal-title"><i class="fa fa-fw fa-desktop me-2"></i>Assets <small class="ms-1 opacity-75"><?= "$ticket_prefix$ticket_number" ?></small></h5>
|
|
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
|
|
</div>
|
|
<form action="post.php" method="post" autocomplete="off">
|
|
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
|
|
<input type="hidden" name="ticket_id" value="<?= $ticket_id ?>">
|
|
<div class="modal-body">
|
|
|
|
<div class="mb-3">
|
|
<label>Primary asset</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa fa-fw fa-desktop"></i></span>
|
|
<select class="form-select select2" name="asset">
|
|
<option value="0">No asset</option>
|
|
<?php
|
|
|
|
$sql_assets = mysqli_query($mysqli, "SELECT asset_id, asset_name, asset_type, asset_make, asset_model, asset_archived_at, 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 OR asset_id IN ($linked_asset_ids)) ORDER BY asset_name ASC");
|
|
while ($row = mysqli_fetch_assoc($sql_assets)) {
|
|
$asset_id_select = intval($row['asset_id']);
|
|
$asset_name_select = escapeHtml($row['asset_name']) . ($row['asset_archived_at'] ? ' (archived)' : '');
|
|
$asset_contact_name_select = escapeHtml($row['contact_name']);
|
|
?>
|
|
<option <?php if ($asset_id == $asset_id_select) { echo "selected"; } ?> value="<?= $asset_id_select ?>"<?= selectOptionAsset($row['asset_type'] ?? '', trim(($row['asset_make'] ?? '') . ' ' . ($row['asset_model'] ?? ''))) ?>><?= $asset_contact_name_select ? "$asset_name_select ($asset_contact_name_select)" : $asset_name_select ?></option>
|
|
|
|
<?php
|
|
}
|
|
?>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label>Other assets</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text"><i class="fa fa-fw fa-desktop"></i></span>
|
|
<select class="form-select select2" name="additional_assets[]" data-placeholder="- Any other assets involved -" multiple>
|
|
<option value=""></option>
|
|
<?php
|
|
|
|
$sql_assets = mysqli_query($mysqli, "SELECT asset_id, asset_name, asset_type, asset_make, asset_model, asset_archived_at, 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 OR asset_id IN ($linked_asset_ids)) ORDER BY asset_name ASC");
|
|
while ($row = mysqli_fetch_assoc($sql_assets)) {
|
|
$asset_id_select = intval($row['asset_id']);
|
|
$asset_name_select = escapeHtml($row['asset_name']) . ($row['asset_archived_at'] ? ' (archived)' : '');
|
|
$asset_contact_name_select = escapeHtml($row['contact_name']);
|
|
?>
|
|
<option value="<?= $asset_id_select ?>"
|
|
<?php if (in_array($asset_id_select, $additional_assets_array)) { echo "selected"; } ?>
|
|
<?= selectOptionAsset($row['asset_type'] ?? '', trim(($row['asset_make'] ?? '') . ' ' . ($row['asset_model'] ?? ''))) ?>><?= $asset_contact_name_select ? "$asset_name_select ($asset_contact_name_select)" : $asset_name_select ?></option>
|
|
|
|
<?php } ?>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="modal-footer">
|
|
<button type="submit" name="edit_ticket_asset" class="btn btn-primary text-bold"><i class="fa fa-check me-2"></i>Save</button>
|
|
<button type="button" class="btn btn-light" data-bs-dismiss="modal"><i class="fa fa-times me-2"></i>Cancel</button>
|
|
</div>
|
|
|
|
</form>
|
|
|
|
<?php
|
|
require_once '../../../includes/modal_footer.php';
|