import { requireAccount } from "@/lib/auth";
import { prisma } from "@/lib/db";
import { InvalidContactsClient } from "@/components/contacts/invalid-contacts-client";

export const dynamic = "force-dynamic";

export default async function InvalidContactsPage() {
  const membership = await requireAccount();
  const accountId = membership.account.id;

  const [contacts, totalCount] = await Promise.all([
    prisma.contact.findMany({
      where: { accountId, status: { in: ["BLOCKED", "INVALID"] } },
      orderBy: { updatedAt: "desc" },
      take: 50,
      include: { 
        tags: { include: { tag: true } }, 
        customValues: { include: { field: true } },
        broadcastRecipients: {
          where: { status: "FAILED" },
          orderBy: { createdAt: "desc" },
          take: 1,
          select: { error: true }
        }
      },
    }),
    prisma.contact.count({
      where: { accountId, status: { in: ["BLOCKED", "INVALID"] } },
    }),
  ]);

  return (
    <div className="space-y-6">
      <div>
        <h1 className="flex items-center gap-2 text-2xl font-bold text-foreground">
          Blocked & Invalid Contacts 
          <span className="rounded-full bg-muted px-2.5 py-0.5 text-sm font-medium text-muted-foreground">{totalCount}</span>
        </h1>
        <p className="text-sm text-muted-foreground">View numbers that failed validation or were blocked.</p>
      </div>
      <InvalidContactsClient initialContacts={contacts} />
    </div>
  );
}
