"use client"; import { useQuery } from "@tanstack/react-query"; import Link from "next/link"; import { deliveryApi } from "@/modules/delivery/services/delivery-api"; import { useTenantId } from "@/hooks/useTenantId"; import { useDeliveryCapabilities, useDeliveryMetrics } from "@/modules/delivery/hooks/useDeliveryCapabilities"; import { DeliveryPageLoader, DeliveryPageError } from "@/modules/delivery/pages/shared"; import { PageHeader, StatCard, Card, CardContent, Button, Badge } from "@/components/ds"; import { DeliveryBreadcrumbs } from "@/modules/delivery/components/DeliveryBreadcrumbs"; export const ExecutiveDashboard = function DeliveryExecutiveDashboard() { const { tenantId } = useTenantId(); const caps = useDeliveryCapabilities(); const metrics = useDeliveryMetrics(); const countsQ = useQuery({ queryKey: ["delivery", tenantId, "dashboard-counts"], queryFn: async () => { const [orgs, hubs, drivers] = await Promise.all([ deliveryApi.organizations.list(tenantId!, { page: 1, page_size: 500 }), deliveryApi.hubs.list(tenantId!, { page: 1, page_size: 500 }), deliveryApi.drivers.list(tenantId!, { page: 1, page_size: 500 }), ]); const driverItems = Array.isArray(drivers) ? drivers : drivers.items; return { organizations: orgs.length, hubs: hubs.length, drivers: driverItems.length, driversActive: driverItems.filter((d) => d.status === "active").length, }; }, enabled: !!tenantId, }); if (!tenantId || countsQ.isLoading || caps.isLoading) return ; if (countsQ.error) return countsQ.refetch()} />; const c = countsQ.data!; return (
Torbat Driver v{caps.data?.version}} />
{metrics.data ? ( فاز {metrics.data.phase} — {metrics.data.note} ) : null}
); }; export default ExecutiveDashboard;