false, 'error' => 'Invalid method']); exit; } $member_id = (int)($_POST['member_id'] ?? 0); $new_status = trim($_POST['status'] ?? ''); if (!$member_id || !in_array($new_status, ['pending', 'approved', 'rejected'])) { echo json_encode(['success' => false, 'error' => 'Invalid parameters']); exit; } try { $panelPdo = getPanelDBConnection(); // Verify member exists and has PAN submitted $stmt = $panelPdo->prepare("SELECT response FROM user_profiler WHERE user_id = ? AND section = 'profile' AND question_id = 'pan_number'"); $stmt->execute([$member_id]); $pan = $stmt->fetch(); if (!$pan || empty(json_decode($pan['response'], true))) { echo json_encode(['success' => false, 'error' => 'No PAN found for this member']); exit; } // Update PAN status $stmt = $panelPdo->prepare("INSERT INTO user_profiler (user_id, section, question_id, response) VALUES (?, 'profile', 'pan_status', ?) ON DUPLICATE KEY UPDATE response = ?, updated_at = NOW()"); $j = json_encode($new_status); $stmt->execute([$member_id, $j, $j]); echo json_encode(['success' => true, 'status' => $new_status]); } catch (Exception $e) { error_log("PAN action error: " . $e->getMessage()); echo json_encode(['success' => false, 'error' => 'Database error']); }