'Non identifié — veuillez vous connecter.']); exit; } if ($_SERVER['REQUEST_METHOD'] !== 'POST') { http_response_code(405); echo json_encode(['error' => 'Méthode non autorisée']); exit; } $data = json_decode(file_get_contents('php://input'), true) ?? []; $incr = (int) ($data['AGN_Incr'] ?? 0); $premierEchange = !empty($data['premierEchange']); $texteUtilisateur = trim((string) ($data['utilisateur'] ?? '')); $texteCollaborateur = trim((string) ($data['collaborateur'] ?? '')); if ($incr <= 0) { http_response_code(400); echo json_encode(['error' => 'AGN_Incr manquant ou invalide']); exit; } if ($texteUtilisateur === '' || $texteCollaborateur === '') { http_response_code(400); echo json_encode(['error' => 'Échange incomplet (message et réponse attendus tous les deux)']); exit; } try { $pdo = getDbConnection(); } catch (PDOException $e) { http_response_code(500); echo json_encode(['error' => 'Connexion base de données impossible']); exit; } try { $verif = $pdo->prepare('SELECT AGN_Prenom FROM ASP_Agents WHERE AGN_Incr = ?'); $verif->execute([$incr]); $agent = $verif->fetch(); if (!$agent) { http_response_code(404); echo json_encode(['error' => 'Collaborateur introuvable']); exit; } $nomUtilisateur = $_SESSION['USR_Prenom'] ?? 'Jean-Marc'; $nomCollaborateur = $agent['AGN_Prenom'] ?: 'Collaborateur'; $bloc = ''; if ($premierEchange) { $bloc .= "\n--- " . date('d/m/Y H:i') . ' — session de test avec ' . $nomUtilisateur . " ---\n"; } $bloc .= '[' . $nomUtilisateur . '] ' . $texteUtilisateur . "\n"; $bloc .= '[' . $nomCollaborateur . '] ' . $texteCollaborateur . "\n"; // CONCAT atomique : jamais de lecture préalable du texte existant côté // PHP, donc jamais de risque d'écraser un ajout concurrent avec une // valeur devenue périmée entre temps. $stmt = $pdo->prepare( "UPDATE ASP_Agents SET AGN_Experience = CONCAT(COALESCE(AGN_Experience, ''), ?) WHERE AGN_Incr = ?" ); $stmt->execute([$bloc, $incr]); echo json_encode(['success' => true]); } catch (PDOException $e) { http_response_code(500); echo json_encode(['error' => 'Erreur base de données : ' . $e->getMessage()]); }