import { createServerClient } from "@supabase/ssr";
import { cookies } from "next/headers";
import { NextResponse } from "next/server";

export async function GET() {
  // CORRECCIÓN: cookies() ahora requiere await en Next.js 15+
  const cookieStore = await cookies(); 
  
  const supabase = createServerClient(
    process.env.NEXT_PUBLIC_SUPABASE_URL!,
    process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
    {
      cookies: {
        get(name: string) {
          return cookieStore.get(name)?.value;
        },
      },
    }
  );

  // 1. Ejecutamos la lógica de tu query: Obtener secciones únicas de EMILIANO ZAPATA
  // Traemos 'section_number' y 'colonia' para alimentar el acordeón
  const { data: allSections, error: secError } = await supabase
    .from('sections')
    .select('section_number, colonia')
    .eq('municipality', 'EMILIANO ZAPATA')
    .order('section_number', { ascending: true });

  if (secError) return NextResponse.json({ error: secError.message }, { status: 500 });

  // 2. Aplicamos el DISTINCT manualmente sobre el resultado para evitar duplicados visuales
  const uniqueSections = allSections.reduce((acc: any[], current: any) => {
    const x = acc.find(item => item.section_number === current.section_number);
    if (!x) return acc.concat([current]);
    else return acc;
  }, []);

  // 3. Traemos los simpatizantes actuales para cruzar los datos
  const { data: sympathizers, error: sympError } = await supabase
    .from('sympathizers')
    .select('section_number');

  if (sympError) return NextResponse.json({ error: sympError.message }, { status: 500 });

  // 4. Construimos la respuesta con TODAS las secciones, incluso las que tienen 0
  const finalStats = uniqueSections.map(sec => {
    const count = sympathizers.filter(s => s.section_number === sec.section_number).length;
    return {
      section: sec.section_number,
      colonia: sec.colonia,
      count: count
    };
  });

  return NextResponse.json(finalStats);
}