false, 'error'=>'bad_params'], 400); } // Vérifie l'accès et récupère la conversation de base $conv = assert_conversation_access($pdo, $convId, $role, $meId); // Récupère détails + noms/prénoms + états d’archivage $sql = " SELECT c.id, c.status, c.praticien_id, c.client_id, c.archived_by_praticien, c.archived_by_client, p.nom AS p_nom, p.prenom AS p_prenom, cl.nom AS c_nom, cl.prenom AS c_prenom FROM conversations c JOIN praticien p ON p.id = c.praticien_id JOIN client cl ON cl.id = c.client_id WHERE c.id = ? LIMIT 1"; $stmt = $pdo->prepare($sql); $stmt->execute([$convId]); $row = $stmt->fetch(PDO::FETCH_ASSOC); if (!$row) { json_response(['ok'=>false, 'error'=>'conversation_not_found'], 404); } // Nom de l’interlocuteur (peer) if ($role === 'praticien') { $peerName = trim(sprintf('%s %s', $row['c_prenom'] ?? '', $row['c_nom'] ?? '')); $archForMe = (int)$row['archived_by_praticien']; } else { // client $peerName = trim(sprintf('%s %s', $row['p_prenom'] ?? '', $row['p_nom'] ?? '')); $archForMe = (int)$row['archived_by_client']; } if ($peerName === '') $peerName = 'Conversation #' . $convId; // Réponse json_response([ 'ok' => true, 'id' => (int)$row['id'], 'status' => (string)$row['status'], // 'open' | 'closed' 'archived_for_me' => $archForMe, // 0|1 'peer_name' => $peerName, // (optionnel utile côté UI) 'praticien_id' => (int)$row['praticien_id'], 'client_id' => (int)$row['client_id'], ]);