Add pairing between users
This commit is contained in:
@@ -73,3 +73,30 @@ class UserController {
|
|||||||
echo json_encode($result);
|
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;
|
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:
|
default:
|
||||||
http_response_code(404);
|
http_response_code(404);
|
||||||
echo json_encode(["error" => "Route /" . $route . " non trouvée"]);
|
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 ---
|
// --- UTILS / VALIDATIONS ---
|
||||||
private function emailExists($email) {
|
private function emailExists($email) {
|
||||||
$query = "SELECT id FROM " . $this->table_name . " WHERE email = :email LIMIT 1";
|
$query = "SELECT id FROM " . $this->table_name . " WHERE email = :email LIMIT 1";
|
||||||
|
|||||||
Reference in New Issue
Block a user