<?php
require_admin
();

// Handle workflow deletion
if (isset($_POST['delete_workflow'])) {
    
$workflowId = (int)$_POST['workflow_id'];
    
    
// Check if there are any requests for this workflow
    
$checkSql "SELECT COUNT(*) as request_count FROM TICKET_Request WHERE fk_Workflow = ?";
    
$checkStmt mysqli_prepare($conn$checkSql);
    
mysqli_stmt_bind_param($checkStmt'i'$workflowId);
    
mysqli_stmt_execute($checkStmt);
    
$checkResult mysqli_stmt_get_result($checkStmt);
    
$checkRow mysqli_fetch_assoc($checkResult);
    
    if (
$checkRow['request_count'] > 0) {
        
$error_message "Cannot delete workflow. There are " $checkRow['request_count'] . " request(s) associated with this workflow.";
    } else {
        
// Start transaction
        
mysqli_autocommit($connfalse);
        
        try {
            
// Delete workflow-related data in correct order (foreign key constraints)
            
            // Delete state actors
            
$deleteActorsSql "DELETE sa FROM TICKET_StateActor sa 
                               JOIN TICKET_State s ON sa.fk_State = s.pk_State 
                               WHERE s.fk_Workflow = ?"
;
            
$deleteActorsStmt mysqli_prepare($conn$deleteActorsSql);
            
mysqli_stmt_bind_param($deleteActorsStmt'i'$workflowId);
            
mysqli_stmt_execute($deleteActorsStmt);
            
            
// Delete fields
            
$deleteFieldsSql "DELETE f FROM TICKET_Field f 
                               JOIN TICKET_State s ON f.fk_State = s.pk_State 
                               WHERE s.fk_Workflow = ?"
;
            
$deleteFieldsStmt mysqli_prepare($conn$deleteFieldsSql);
            
mysqli_stmt_bind_param($deleteFieldsStmt'i'$workflowId);
            
mysqli_stmt_execute($deleteFieldsStmt);
            
            
// Delete states
            
$deleteStatesSql "DELETE FROM TICKET_State WHERE fk_Workflow = ?";
            
$deleteStatesStmt mysqli_prepare($conn$deleteStatesSql);
            
mysqli_stmt_bind_param($deleteStatesStmt'i'$workflowId);
            
mysqli_stmt_execute($deleteStatesStmt);
            
            
// Finally delete the workflow
            
$deleteWorkflowSql "DELETE FROM TICKET_Workflow WHERE pk_Workflow = ?";
            
$deleteWorkflowStmt mysqli_prepare($conn$deleteWorkflowSql);
            
mysqli_stmt_bind_param($deleteWorkflowStmt'i'$workflowId);
            
mysqli_stmt_execute($deleteWorkflowStmt);
            
            
// Commit transaction
            
mysqli_commit($conn);
            
mysqli_autocommit($conntrue);
            
            
$success_message "Workflow has been deleted successfully.";
        } catch (
Exception $e) {
            
// Rollback transaction
            
mysqli_rollback($conn);
            
mysqli_autocommit($conntrue);
            
$error_message "Error deleting workflow. Please try again.";
        }
    }
}

$sql "
  SELECT 
    w.pk_Workflow,
    w.title,
    u.firstName,
    u.lastName,
    (SELECT COUNT(*) FROM TICKET_Request r WHERE r.fk_Workflow = w.pk_Workflow) as request_count
  FROM TICKET_Workflow w
  JOIN TICKET_User     u ON w.iam_inserted = u.pk_User
  ORDER BY w.date_inserted DESC
"
;
$result mysqli_query($conn$sql);
$hasWorkflows mysqli_num_rows($result) > 0;
?>
<div class="page-workflows">
  <div class="page-header">
    <h1 class="page-title">Workflows</h1>
    <a href="index.php?page=workflows_create" class="btn btn-primary">Create New Workflow</a>
  </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 ($hasWorkflows): ?>
    <div class="workflows-table-container">
      <table class="workflows-table">
        <thead>
          <tr>
            <th>ID</th>
            <th>Title</th>
            <th>Created By</th>
            <th>Requests</th>
            <th>Actions</th>
          </tr>
        </thead>
        <tbody>
          <?php while ($r mysqli_fetch_assoc($result)): ?>
            <tr>
              <td>
                <span class="workflow-id"><?= $r['pk_Workflow']; ?></span>
              </td>
              <td>
                <span class="workflow-title"><?= htmlspecialchars($r['title']); ?></span>
              </td>
              <td>
                <span class="creator-name"><?= htmlspecialchars($r['firstName'] . ' ' $r['lastName']); ?></span>
              </td>
              <td>
                <span class="request-count"><?= $r['request_count'?></span>
              </td>
              <td>
                <div class="action-buttons">
                  <a href="index.php?page=workflows_edit&wf=<?= $r['pk_Workflow'?>" class="action-button edit-button">
                    Edit
                  </a>
                  <?php if ($r['request_count'] == 0): ?>
                    <button type="button" class="action-button delete-button" onclick="confirmDeleteWorkflow(<?= $r['pk_Workflow'?>, '<?= htmlspecialchars($r['title'], ENT_QUOTES?>')">
                      Delete
                    </button>
                  <?php else: ?>
                    <button type="button" class="action-button delete-button disabled" title="Cannot delete: <?= $r['request_count'?> request(s) exist" disabled>
                      Delete
                    </button>
                  <?php endif; ?>
                </div>
              </td>
            </tr>
          <?php endwhile; ?>
        </tbody>
      </table>
    </div>
  <?php else: ?>
    <div class="workflows-table-container">
      <div style="text-align: center; padding: 3rem 1rem; color: var(--text-secondary);">
        <div style="font-size: 3rem; margin-bottom: 1rem; opacity: 0.5;">⚙️</div>
        <h3 style="font-size: 1.25rem; font-weight: 600; color: var(--text-primary); margin-bottom: 0.5rem;">No Workflows Yet</h3>
        <p style="margin-bottom: 1.5rem;">Create your first workflow to get started with the ticket system.</p>
        <a href="index.php?page=workflows_create" class="btn btn-primary">Create Your First Workflow</a>
      </div>
    </div>
  <?php endif; ?>
</div>

<!-- Hidden form for deletion -->
<form id="deleteWorkflowForm" method="POST" style="display: none;">
  <input type="hidden" name="delete_workflow" value="1">
  <input type="hidden" name="workflow_id" id="deleteWorkflowId">
</form>

<script>
function confirmDeleteWorkflow(workflowId, workflowTitle) {
  if (confirm('Are you sure you want to delete the workflow "' + workflowTitle + '"? This action cannot be undone.')) {
    document.getElementById('deleteWorkflowId').value = workflowId;
    document.getElementById('deleteWorkflowForm').submit();
  }
}
</script>