TorbatYar/frontend/modules/beauty/hooks/useBeautyLookups.ts
Mortezakoohjani 6f4a484051 Migrate Beauty, Healthcare, and Accounting frontend to modular src/modules architecture.
Move business logic out of App Router into module packages, add boundary validation scripts, and keep all routes as thin re-exports without changing URLs or API behavior.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 22:28:27 +03:30

83 lines
2.5 KiB
TypeScript

"use client";
import { useQuery } from "@tanstack/react-query";
import { beautyBusinessApi } from "@/modules/beauty/services/beauty-business-api";
import { useTenantId } from "@/hooks/useTenantId";
/** Shared beauty context data for cross-page lookups. */
export function useBeautyLookups() {
const { tenantId } = useTenantId();
const orgsQ = useQuery({
queryKey: ["beauty", tenantId, "lookups", "organizations"],
queryFn: () => beautyBusinessApi.organizations.list(tenantId!),
enabled: !!tenantId,
});
const branchesQ = useQuery({
queryKey: ["beauty", tenantId, "lookups", "branches"],
queryFn: () => beautyBusinessApi.branches.list(tenantId!),
enabled: !!tenantId,
});
const staffQ = useQuery({
queryKey: ["beauty", tenantId, "lookups", "staff"],
queryFn: () => beautyBusinessApi.staff.list(tenantId!),
enabled: !!tenantId,
});
const customersQ = useQuery({
queryKey: ["beauty", tenantId, "lookups", "customers"],
queryFn: () => beautyBusinessApi.customers.list(tenantId!),
enabled: !!tenantId,
});
const servicesQ = useQuery({
queryKey: ["beauty", tenantId, "lookups", "services"],
queryFn: () => beautyBusinessApi.services.list(tenantId!),
enabled: !!tenantId,
});
const orgName = (id: string) =>
orgsQ.data?.find((o) => o.id === id)?.name ?? id.slice(0, 8);
const branchName = (id: string) =>
branchesQ.data?.find((b) => b.id === id)?.name ?? id.slice(0, 8);
const staffName = (id: string | null | undefined) =>
id ? staffQ.data?.find((s) => s.id === id)?.display_name ?? id.slice(0, 8) : "—";
const customerName = (id: string | null | undefined) =>
id ? customersQ.data?.find((c) => c.id === id)?.display_name ?? id.slice(0, 8) : "—";
const serviceName = (id: string | null | undefined) =>
id ? servicesQ.data?.find((s) => s.id === id)?.name ?? id.slice(0, 8) : "—";
return {
tenantId,
organizations: orgsQ.data ?? [],
branches: branchesQ.data ?? [],
staff: staffQ.data ?? [],
customers: customersQ.data ?? [],
services: servicesQ.data ?? [],
orgName,
branchName,
staffName,
customerName,
serviceName,
isLoading:
orgsQ.isLoading ||
branchesQ.isLoading ||
staffQ.isLoading ||
customersQ.isLoading ||
servicesQ.isLoading,
refetchAll: () => {
orgsQ.refetch();
branchesQ.refetch();
staffQ.refetch();
customersQ.refetch();
servicesQ.refetch();
},
};
}