<?php
require_login();
// Handle request deletion
if (isset($_POST['delete_request'])) {
$requestId = (int)$_POST['request_id'];
// Verify the request belongs to the current user
$checkSql = "SELECT pk_Request FROM TICKET_Request WHERE pk_Request = ? AND fk_User = ?";
$checkStmt = mysqli_prepare($conn, $checkSql);
mysqli_stmt_bind_param($checkStmt, 'ii', $requestId, $_SESSION['user_id']);
mysqli_stmt_execute($checkStmt);
$checkResult = mysqli_stmt_get_result($checkStmt);
if (mysqli_num_rows($checkResult) > 0) {
// Start transaction
mysqli_autocommit($conn, false);
try {
// Delete related data first (foreign key constraints)
$deleteDataSql = "DELETE FROM TICKET_Data WHERE fk_Request = ?";
$deleteDataStmt = mysqli_prepare($conn, $deleteDataSql);
mysqli_stmt_bind_param($deleteDataStmt, 'i', $requestId);
mysqli_stmt_execute($deleteDataStmt);
$deleteStateSql = "DELETE FROM TICKET_hasState WHERE fk_Request = ?";
$deleteStateStmt = mysqli_prepare($conn, $deleteStateSql);
mysqli_stmt_bind_param($deleteStateStmt, 'i', $requestId);
mysqli_stmt_execute($deleteStateStmt);
$deleteNotificationsSql = "DELETE FROM TICKET_Notifications WHERE fk_Request = ?";
$deleteNotificationsStmt = mysqli_prepare($conn, $deleteNotificationsSql);
mysqli_stmt_bind_param($deleteNotificationsStmt, 'i', $requestId);
mysqli_stmt_execute($deleteNotificationsStmt);
// Finally delete the request
$deleteRequestSql = "DELETE FROM TICKET_Request WHERE pk_Request = ?";
$deleteRequestStmt = mysqli_prepare($conn, $deleteRequestSql);
mysqli_stmt_bind_param($deleteRequestStmt, 'i', $requestId);
mysqli_stmt_execute($deleteRequestStmt);
// Commit transaction
mysqli_commit($conn);
mysqli_autocommit($conn, true);
$success_message = "Request #$requestId has been deleted successfully.";
} catch (Exception $e) {
// Rollback transaction
mysqli_rollback($conn);
mysqli_autocommit($conn, true);
$error_message = "Error deleting request. Please try again.";
}
} else {
$error_message = "You can only delete your own requests.";
}
}
// List user requests
$sql = "SELECT r.pk_Request, w.title, s.title AS state_title, hs.date_inserted
FROM TICKET_Request r
JOIN TICKET_Workflow w ON r.fk_Workflow = w.pk_Workflow
JOIN TICKET_State s ON r.fk_State = s.pk_State
JOIN TICKET_hasState hs ON hs.fk_Request = r.pk_Request AND hs.fk_State = r.fk_State
WHERE r.fk_User = ?
ORDER BY hs.date_inserted DESC";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, 'i', $_SESSION['user_id']);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$hasRequests = mysqli_num_rows($result) > 0;
?>
<div class="page-my-requests">
<div class="page-header">
<h1 class="page-title">My Requests</h1>
<div class="page-actions">
<a href="index.php?page=request_create" class="btn btn-primary">New Request</a>
</div>
</div>
<?php if (isset($success_message)): ?>
<div class="alert alert-success">
<?= htmlspecialchars($success_message) ?>
</div>
<?php endif; ?>
<?php if (isset($error_message)): ?>
<div class="alert alert-error">
<?= htmlspecialchars($error_message) ?>
</div>
<?php endif; ?>
<?php if ($hasRequests): ?>
<div class="requests-table-container">
<table class="requests-table">
<thead>
<tr>
<th>Request ID</th>
<th>Workflow</th>
<th>Current State</th>
<th>Last Updated</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php while ($row = mysqli_fetch_assoc($result)): ?>
<tr>
<td>
<a href="index.php?page=request_handle&req=<?= $row['pk_Request'] ?>" class="request-id">
#<?= $row['pk_Request'] ?>
</a>
</td>
<td>
<span class="workflow-title"><?= htmlspecialchars($row['title']) ?></span>
</td>
<td>
<span class="state-badge"><?= htmlspecialchars($row['state_title']) ?></span>
</td>
<td>
<span class="date-text"><?= date('M j, Y g:i A', strtotime($row['date_inserted'])) ?></span>
</td>
<td>
<div class="action-buttons">
<a href="index.php?page=request_handle&req=<?= $row['pk_Request'] ?>" class="action-button view-button">
View Details
</a>
<button type="button" class="action-button delete-button" onclick="confirmDelete(<?= $row['pk_Request'] ?>)">
Delete
</button>
</div>
</td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</div>
<?php else: ?>
<div class="requests-table-container">
<div class="empty-state">
<div class="empty-state-icon">📋</div>
<h3 class="empty-state-title">No Requests Yet</h3>
<p class="empty-state-description">
You haven't created any requests yet. Start by creating your first request.
</p>
<a href="index.php?page=request_create" class="btn btn-primary">Create Your First Request</a>
</div>
</div>
<?php endif; ?>
</div>
<!-- Hidden form for deletion -->
<form id="deleteForm" method="POST" style="display: none;">
<input type="hidden" name="delete_request" value="1">
<input type="hidden" name="request_id" id="deleteRequestId">
</form>
<script>
function confirmDelete(requestId) {
if (confirm('Are you sure you want to delete this request? This action cannot be undone.')) {
document.getElementById('deleteRequestId').value = requestId;
document.getElementById('deleteForm').submit();
}
}
</script>