import { NextRequest, NextResponse } from "next/server"; import { getPool } from "@/services/database"; import { isUserAuthenticated } from "@/lib/server-auth"; // GET - Récupérer les membres d'une équipe export async function GET( request: NextRequest, { params }: { params: Promise<{ teamId: string }> } ) { try { // Vérifier l'authentification const isAuthenticated = await isUserAuthenticated(); if (!isAuthenticated) { return NextResponse.json({ error: "Non autorisé" }, { status: 401 }); } const { teamId } = await params; if (!teamId) { return NextResponse.json( { error: "L'ID de l'équipe est requis" }, { status: 400 } ); } const pool = getPool(); const query = ` SELECT u.uuid_id, u.first_name, u.last_name, u.created_at FROM users u WHERE u.team_id = $1 ORDER BY u.last_name, u.first_name `; const result = await pool.query(query, [teamId]); const members = result.rows.map((row) => ({ id: row.uuid_id, firstName: row.first_name, lastName: row.last_name, fullName: `${row.first_name} ${row.last_name}`, joinedAt: row.created_at, })); return NextResponse.json(members); } catch (error) { console.error("Error fetching team members:", error); return NextResponse.json( { error: "Erreur lors de la récupération des membres" }, { status: 500 } ); } } // DELETE - Supprimer un membre d'une équipe export async function DELETE( request: NextRequest, { params }: { params: Promise<{ teamId: string }> } ) { try { // Vérifier l'authentification const isAuthenticated = await isUserAuthenticated(); if (!isAuthenticated) { return NextResponse.json({ error: "Non autorisé" }, { status: 401 }); } const { teamId } = await params; const { memberId } = await request.json(); if (!teamId || !memberId) { return NextResponse.json( { error: "L'ID de l'équipe et l'ID du membre sont requis" }, { status: 400 } ); } const pool = getPool(); // Vérifier que le membre appartient bien à cette équipe const memberCheck = await pool.query( "SELECT uuid_id FROM users WHERE uuid_id = $1 AND team_id = $2", [memberId, teamId] ); if (memberCheck.rows.length === 0) { return NextResponse.json( { error: "Membre non trouvé dans cette équipe" }, { status: 404 } ); } // Supprimer le membre (mettre team_id à NULL au lieu de supprimer l'utilisateur) await pool.query("UPDATE users SET team_id = NULL WHERE uuid_id = $1", [ memberId, ]); return NextResponse.json({ message: "Membre supprimé de l'équipe avec succès", }); } catch (error) { console.error("Error removing team member:", error); return NextResponse.json( { error: "Erreur lors de la suppression du membre" }, { status: 500 } ); } }