"use client"; import { useQuery } from "@tanstack/react-query"; import Link from "next/link"; import { PageHeader, Card, CardContent, Button, EmptyState } from "@/components/ds"; import { crmApi } from "@/modules/crm/services/crm-api"; import { useTenantId } from "@/hooks/useTenantId"; import { CrmPageLoader, CrmPageError } from "@/modules/crm/pages/shared"; import { CrmBreadcrumbs } from "@/modules/crm/components/CrmBreadcrumbs"; import { CrmStatusChip } from "@/modules/crm/design-system"; /** Customers = unified view of contacts + organizations (no separate backend entity). */ export default function CustomersPage() { const { tenantId } = useTenantId(); const q = useQuery({ queryKey: ["crm", tenantId, "customers-view"], queryFn: async () => { const [contacts, orgs] = await Promise.all([ crmApi.contacts.list(tenantId!, { page: 1, page_size: 500 }), crmApi.organizations.list(tenantId!, { page: 1, page_size: 500 }), ]); return { contacts: contacts.filter((c) => !c.is_deleted), orgs: orgs.filter((o) => !o.is_deleted) }; }, enabled: !!tenantId, }); if (!tenantId || q.isLoading) return ; if (q.error) return q.refetch()} />; const { contacts, orgs } = q.data!; return ( مخاطبین شرکتها } /> مخاطبین ({contacts.length}) {contacts.slice(0, 12).map((c) => ( {c.full_name} {c.email ?? c.phone ?? "—"} ))} {contacts.length === 0 ? : null} شرکتها ({orgs.length}) {orgs.slice(0, 12).map((o) => ( {o.name} {o.organization_number} ))} {orgs.length === 0 ? : null} ); }
{c.full_name}
{c.email ?? c.phone ?? "—"}
{o.name}
{o.organization_number}