// app/api/notifications/route.ts
import { NextResponse } from "next/server";
;

import { prisma } from '@/lib/prisma';

export async function GET(req: Request) {
  try {
    // Get unread messages where the role is "user" (messages from Telegram users)
    const unreadMessages = await prisma.message.findMany({
      where: {
        role: "user",
        isRead: false,
      },
      include: {
        conversation: {
          include: {
            telegramUser: true,
          },
        },
      },
      orderBy: {
        createdAt: "desc",
      },
    });

    const notificationsByUser = unreadMessages.reduce((acc, message) => {
      const userId = message.conversation.telegramUserId;
      if (!acc[userId]) {
        acc[userId] = {
          user: message.conversation.telegramUser,
          unreadCount: 0,
          latestMessage: null,
        };
      }

      acc[userId].unreadCount += 1;
      if (!acc[userId].latestMessage || new Date(message.createdAt) > new Date(acc[userId].latestMessage.createdAt)) {
        acc[userId].latestMessage = message;
      }

      return acc;
    }, {} as Record<string, any>);

    return NextResponse.json(Object.values(notificationsByUser));
  } catch (error) {
    console.error("[NOTIFICATIONS_GET]", error);
    return NextResponse.json({ error: "خطای سرور داخلی" }, { status: 500 });
  }
}