Add pairing between users
This commit is contained in:
@@ -73,3 +73,30 @@ class UserController {
|
||||
echo json_encode($result);
|
||||
}
|
||||
}
|
||||
|
||||
// --- INTERCEPTE LA VÉRIFICATION DU STATUT ---
|
||||
public function pairingStatus($data) {
|
||||
// Plus tard on prendra l'ID depuis le token JWT pour la sécurité
|
||||
if (empty($data['user_id'])) {
|
||||
http_response_code(400);
|
||||
echo json_encode(["success" => false, "message" => "ID utilisateur requis."]);
|
||||
return;
|
||||
}
|
||||
|
||||
$result = $this->userModel->getPairingStatus($data['user_id']);
|
||||
http_response_code($result['success'] ? 200 : 400);
|
||||
echo json_encode($result);
|
||||
}
|
||||
|
||||
// --- INTERCEPTE LA DÉLIAISON ---
|
||||
public function unlink($data) {
|
||||
if (empty($data['user_id'])) {
|
||||
http_response_code(400);
|
||||
echo json_encode(["success" => false, "message" => "ID utilisateur requis."]);
|
||||
return;
|
||||
}
|
||||
|
||||
$result = $this->userModel->unlinkPartner($data['user_id']);
|
||||
http_response_code($result['success'] ? 200 : 400);
|
||||
echo json_encode($result);
|
||||
}
|
||||
@@ -60,6 +60,24 @@ switch ($route) {
|
||||
}
|
||||
break;
|
||||
|
||||
case 'pairing-status':
|
||||
if ($method === 'POST') { // On utilise POST temporairement pour lire le user_id dans le JSON
|
||||
$userController->pairingStatus($data);
|
||||
} else {
|
||||
http_response_code(405);
|
||||
echo json_encode(["error" => "Méthode non autorisée (POST requis)"]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'unlink-partner':
|
||||
if ($method === 'POST') {
|
||||
$userController->unlink($data);
|
||||
} else {
|
||||
http_response_code(405);
|
||||
echo json_encode(["error" => "Méthode non autorisée (POST requis)"]);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
http_response_code(404);
|
||||
echo json_encode(["error" => "Route /" . $route . " non trouvée"]);
|
||||
|
||||
@@ -121,6 +121,61 @@ class User {
|
||||
}
|
||||
}
|
||||
|
||||
// --- 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) {
|
||||
$query = "SELECT id FROM " . $this->table_name . " WHERE email = :email LIMIT 1";
|
||||
|
||||
Reference in New Issue
Block a user