<?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>