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

import { NextRequest, NextResponse } from 'next/server';
import { getDBConnection } from '@/lib/db'; // adjust path as needed

export async function GET(request: NextRequest) {
    const userId = request.nextUrl.searchParams.get('userId');
    const companyId = request.nextUrl.searchParams.get('companyId');

  if (!userId || !companyId) {
    return NextResponse.json({ error: 'Missing user_id or company_id' }, { status: 400 });
  }

  try {
    const connection = await getDBConnection();

    const [rows] = await connection.execute(
      `
      SELECT 
          u.id AS receiver_id, 
          u.name AS receiver_name, 
          u.profile AS receiver_image, 
          u.role AS role, 
          COALESCE(m.message, m.file_path) AS last_message,
          m.timestamp AS last_message_time, 
          c.*,
          CONCAT(comp.first_name, ' ', comp.last_name) AS company_name,
          (
              SELECT COUNT(*) 
              FROM messages m2 
              WHERE m2.is_read = 0 
                AND m2.receiver_id = ?
                AND (
                      (m2.sender_id = c.sender_id AND m2.receiver_id = c.receiver_id)
                      OR 
                      (m2.sender_id = c.receiver_id AND m2.receiver_id = c.sender_id)
                    )
          ) AS unread_count
      FROM messages m
      JOIN users u ON u.id = CASE 
          WHEN m.sender_id = ? THEN m.receiver_id
          ELSE m.sender_id
      END
      JOIN chats c ON 
          (c.sender_id = m.sender_id AND c.receiver_id = m.receiver_id)
          OR 
          (c.sender_id = m.receiver_id AND c.receiver_id = m.sender_id)
      LEFT JOIN comapniese comp ON comp.id = c.company_id
      WHERE (m.sender_id = ? OR m.receiver_id = ?)
        AND c.company_id = ?
        AND m.timestamp = (
            SELECT MAX(timestamp) 
            FROM messages 
            WHERE 
                (sender_id = m.sender_id AND receiver_id = m.receiver_id)
                OR 
                (sender_id = m.receiver_id AND receiver_id = m.sender_id)
        )
      ORDER BY m.timestamp DESC
      LIMIT 0, 1000
      `,
      [userId, userId, userId, userId, companyId]
    );

    await connection.end();
    return NextResponse.json(rows);
  } catch (error) {
    // console.error('Chat List Error:', error);
    return NextResponse.json({ error: 'Failed to fetch chat list' }, { status: 500 });
  }
}
