isLoggedIn()) { echo json_encode(['success' => false, 'message' => 'Unauthorized']); exit; } $db = Database::getInstance(); // Process action based on request $action = isset($_POST['action']) ? $_POST['action'] : ''; switch ($action) { case 'delete_panelist': // Check if user has admin rights if (!$auth->isAdmin()) { echo json_encode(['success' => false, 'message' => 'Admin rights required']); exit; } $panelist_id = isset($_POST['panelist_id']) ? sanitizeInput($_POST['panelist_id']) : ''; if (empty($panelist_id)) { echo json_encode(['success' => false, 'message' => 'Invalid panelist ID']); exit; } // Begin transaction $db->query("START TRANSACTION"); try { // First delete from selection_members if any $stmt = $db->prepare("DELETE FROM selection_members WHERE panelist_id = ?"); $stmt->bind_param('s', $panelist_id); $stmt->execute(); // Delete from synthetic_responses if any $stmt = $db->prepare("DELETE FROM synthetic_responses WHERE panelist_id = ?"); $stmt->bind_param('s', $panelist_id); $stmt->execute(); // Delete from panel_processing_status if any $stmt = $db->prepare("DELETE FROM panel_processing_status WHERE panelist_id = ?"); $stmt->bind_param('s', $panelist_id); $stmt->execute(); // Delete from directive_records if any $stmt = $db->prepare("DELETE FROM directive_records WHERE panelist_id = ?"); $stmt->bind_param('s', $panelist_id); $stmt->execute(); // Finally delete from panel_data $stmt = $db->prepare("DELETE FROM panel_data WHERE panelist_id = ?"); $stmt->bind_param('s', $panelist_id); $stmt->execute(); // Commit the transaction $db->query("COMMIT"); echo json_encode(['success' => true, 'message' => 'Panelist deleted successfully']); } catch (Exception $e) { // Rollback on error $db->query("ROLLBACK"); echo json_encode(['success' => false, 'message' => 'Error: ' . $e->getMessage()]); } break; default: echo json_encode(['success' => false, 'message' => 'Invalid action']); break; }