/* eslint-disable -- temporary disable for development/testing purposes */

import { NextResponse } from 'next/server';
import  { RowDataPacket } from 'mysql2/promise';

import { getDBConnection } from '@/lib/db'; // adjust path as needed


interface TopZipcode extends RowDataPacket {
  z_code: string | null;
  total_appointments: number;
}

export async function GET(request: Request) {
  try {
    const url = new URL(request.url);
    const companyId = url.searchParams.get('companyId');

    const connection = await getDBConnection();

    const query = `
      SELECT u.z_code, COUNT(a.user_id) AS total_appointments
      FROM users u
      JOIN requests a ON u.id = a.user_id
      ${companyId ? 'WHERE a.status IN (\'pending\', \'active\') AND u.company_id = ?' : 'WHERE a.status IN (\'pending\', \'active\')'}
      GROUP BY u.z_code
      ORDER BY total_appointments DESC
      LIMIT 5
    `;

    const [rows] = await connection.execute<TopZipcode[]>(
      query,
      companyId ? [companyId] : []
    );

    await connection.end();

    return NextResponse.json(rows);
  } catch (error) {
    // console.error('Top Zipcodes API Error:', error);
    return NextResponse.json({ error: 'Failed to fetch top zipcodes' }, { status: 500 });
  }
}
