import { NextRequest, NextResponse } from "next/server";
import { getServerSession } from "next-auth";
import { authOptions } from "../../auth/authOptions";
import { prisma } from "@/lib/prisma";

export async function GET(req: NextRequest) {
  const session = await getServerSession(authOptions);
  // Si non authentifié, retourner des compteurs vides pour éviter des erreurs 401 côté client
  if (!session) {
    return NextResponse.json({ unreadCounts: {}, lastMessages: {} }, { status: 200 });
  }

  try {
    const userId = parseInt(session.user.id);
    
    // Récupérer tous les utilisateurs
    const users = await prisma.user.findMany({
      where: {
        id: { not: userId } // Exclure l'utilisateur actuel
      }
    });

    const unreadCounts: { [userId: string]: number } = {};
    const lastMessages: { [userId: string]: Date } = {};

    // Pour chaque utilisateur, compter les messages non lus
    for (const user of users) {
      const unreadCount = await prisma.message.count({
        where: {
          recipientId: userId,
          senderId: user.id,
          isRead: false
        }
      });

      const lastMessage = await prisma.message.findFirst({
        where: {
          OR: [
            { senderId: userId, recipientId: user.id },
            { senderId: user.id, recipientId: userId }
          ]
        },
        orderBy: { createdAt: 'desc' }
      });

      unreadCounts[user.id.toString()] = unreadCount;
      if (lastMessage) {
        lastMessages[user.id.toString()] = lastMessage.createdAt;
      }
    }

    return NextResponse.json({
      unreadCounts,
      lastMessages
    });
  } catch (error) {
    console.error('Erreur lors de la récupération des compteurs de messages:', error);
    return NextResponse.json(
      { error: "Erreur serveur" },
      { status: 500 }
    );
  }
} 