import Link from "next/link"; import { hasModuleAccess } from "@/lib/auth/module-access"; import { requireOnboardedUser } from "@/lib/auth/user"; import { listLegalTemplates } from "@/lib/legal/ai-documents"; import { getLegalKpisForUser, listLegalCasesForUser, listLegalDirectory } from "@/lib/legal/server"; import { prisma } from "@/lib/prisma"; import { LegalProtectionView } from "@/components/app/legal-protection-view"; import { PageShell } from "@/components/app/page-shell"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; type PageProps = { searchParams: Promise>; }; function getParam(params: Record, key: string) { const value = params[key]; return Array.isArray(value) ? value[0] ?? "" : (value ?? ""); } export default async function ProteccionLegalPage({ searchParams }: PageProps) { const user = await requireOnboardedUser(); const hasPaidModulesAccess = await hasModuleAccess(user, 9); if (!hasPaidModulesAccess) { return ( Bloqueado} >

Acceso restringido

Modulo 9 forma parte de la ruta premium de modulos pagados.

); } const resolvedSearchParams = await searchParams; const contractId = getParam(resolvedSearchParams, "contractId") || null; const [cases, kpis, directory, contracts] = await Promise.all([ listLegalCasesForUser(user.id), getLegalKpisForUser(user.id), listLegalDirectory({}), prisma.contractRecord.findMany({ where: { userId: user.id }, orderBy: [{ updatedAt: "desc" }], select: { id: true, title: true, contractNumber: true, counterpartyEntity: true, status: true, }, take: 200, }), ]); const templates = listLegalTemplates(); return (

Proteccion Legal

Diagnostico guiado, gestion de casos, escalada y generacion de escritos con trazabilidad

); }