// app/api/users/route.ts
;
import { NextResponse } from "next/server";
import { prisma } from '@/lib/prisma';

export async function GET(req: Request) {
  try {
    const { searchParams } = new URL(req.url);
    const page = parseInt(searchParams.get("page") || "1");
    const limit = parseInt(searchParams.get("limit") || "10");
    const search = searchParams.get("search") || "";
    const consulting = searchParams.get("consulting");
    const skip = (page - 1) * limit;

    let whereCondition: any = {
      OR: [
        { telegramId: { contains: search, mode: "insensitive" } },
        { username: { contains: search, mode: "insensitive" } },
        { firstName: { contains: search, mode: "insensitive" } },
        { lastName: { contains: search, mode: "insensitive" } },
      ]
    };

    // Add consulting filter if provided
    if (consulting === "yes") {
      whereCondition.consultingRequest = "yes";
    }

    const [users, total] = await Promise.all([
      prisma.telegramUser.findMany({
        where: whereCondition,
        skip,
        take: limit,
        orderBy: { lastInteraction: "desc" },
        include: {
          
          _count: {
            select: { conversations: true }
          },
          userProducts: {
            include: {
              product: true
            }
          }
        }
      }),
      prisma.telegramUser.count({
        where: whereCondition
      })
    ]);
    
    return NextResponse.json({
      users,
      meta: {
        total,
        page,
        limit,
        pages: Math.ceil(total / limit)
      }
    });
  } catch (error) {
    console.error("[USERS_GET]", error);
    return NextResponse.json({ error: "Internal server error" }, { status: 500 });
  }
}