Add pairing between users

This commit is contained in:
2026-07-11 09:20:26 +02:00
parent 81b1b3b835
commit d7328ae9d3
3 changed files with 100 additions and 0 deletions
+55
View File
@@ -120,6 +120,61 @@ class User {
return ["success" => false, "message" => "Erreur lors de la liaison."];
}
}
// --- 4. RÉCUPÉRER LE STATUT DE PAIRAGE ---
public function getPairingStatus($user_id) {
// On récupère les infos de l'utilisateur et de son partenaire s'il existe
$query = "SELECT u1.pairing_code, u1.partner_id, u2.username AS partner_username
FROM " . $this->table_name . " u1
LEFT JOIN " . $this->table_name . " u2 ON u1.partner_id = u2.id
WHERE u1.id = :user_id LIMIT 1";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(":user_id", $user_id);
$stmt->execute();
if ($stmt->rowCount() > 0) {
return ["success" => true, "data" => $stmt->fetch()];
}
return ["success" => false, "message" => "Utilisateur introuvable."];
}
// --- 5. CASSER LE LIEN (DÉLIAISON) ---
public function unlinkPartner($user_id) {
// 1. On cherche d'abord l'ID du partenaire actuel
$query = "SELECT partner_id FROM " . $this->table_name . " WHERE id = :user_id LIMIT 1";
$stmt = $this->conn->prepare($query);
$stmt->bindParam(":user_id", $user_id);
$stmt->execute();
$user = $stmt->fetch();
if (!$user || is_null($user['partner_id'])) {
return ["success" => false, "message" => "Tu n'es lié à personne."];
}
$partner_id = $user['partner_id'];
try {
$this->conn->beginTransaction();
// On passe le partner_id à NULL pour les deux utilisateurs
$query1 = "UPDATE " . $this->table_name . " SET partner_id = NULL WHERE id = :user_id";
$stmt1 = $this->conn->prepare($query1);
$stmt1->bindParam(":user_id", $user_id);
$stmt1->execute();
$query2 = "UPDATE " . $this->table_name . " SET partner_id = NULL WHERE id = :partner_id";
$stmt2 = $this->conn->prepare($query2);
$stmt2->bindParam(":partner_id", $partner_id);
$stmt2->execute();
$this->conn->commit();
return ["success" => true, "message" => "Comptes déliés avec succès."];
} catch (Exception $e) {
$this->conn->rollBack();
return ["success" => false, "message" => "Erreur lors de la déliaison."];
}
}
// --- UTILS / VALIDATIONS ---
private function emailExists($email) {