<?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($connfalse);
        
        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($conntrue);
            
            
$success_message "Request #$requestId has been deleted successfully.";
        } catch (
Exception $e) {
            
// Rollback transaction
            
mysqli_rollback($conn);
            
mysqli_autocommit($conntrue);
            
$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>