import { NextResponse } from "next/server";
import { db } from "@/lib/db";
import { cookies } from "next/headers";
import jwt from "jsonwebtoken";

const SECRET = process.env.JWT_SECRET!;

export async function POST(request: Request) {
  try {
    const { id, notes } = await request.json(); // ID del usuario brigadista

    const cookieStore = await cookies();
    const token = cookieStore.get("token")?.value;
    if (!token) return NextResponse.json({ error: "No autorizado" }, { status: 401 });

    const sessionUser: any = jwt.verify(token, SECRET);
    if (sessionUser.role !== 'leader') return NextResponse.json({ error: "Acceso denegado" }, { status: 403 });

    // 1. Inhabilitar acceso en la tabla USERS
    // Usamos el JOIN para asegurar que el brigadista pertenezca al líder
    const [userResult]: any = await db.query(
      `UPDATE users u
       INNER JOIN militants m ON u.militant_id = m.id
       SET u.active = 0 
       WHERE u.id = ? AND m.leader_id = ?`,
      [id, sessionUser.id]
    );

    if (userResult.affectedRows === 0) {
      return NextResponse.json({ error: "Brigadista no encontrado o no pertenece a tu red" }, { status: 404 });
    }

    // 2. Cambiar status a 'inactive' y agregar nota en la tabla MILITANTS
    // Primero obtenemos el militant_id de ese usuario
    const [userData]: any = await db.query("SELECT militant_id FROM users WHERE id = ?", [id]);
    const militantId = userData[0].militant_id;

    await db.query(
      `UPDATE militants 
       SET status = 'inactive', notes = ? 
       WHERE id = ? AND leader_id = ?`,
      [notes || 'Enviado a revisión por el Líder', militantId, sessionUser.id]
    );

    return NextResponse.json({ success: true, message: "Brigadista suspendido y enviado a revisión" });

  } catch (error) {
    console.error("SUSPEND_BRIGADIST_ERROR:", error);
    return NextResponse.json({ error: "Error al procesar la suspensión" }, { status: 500 });
  }
}