import { api as client } from "../auth/http"; import { unwrap } from "@/utils/endpoint"; import { URL_CONSTANTS } from "@/constants/URLS"; import type { OverviewLayoutKey } from "@/components/overview/role-dashboards.config"; import type { IOverviewBillingTab, IOverviewBookingsTab, IOverviewClearanceTab, IOverviewContractsTab, IOverviewCustomersTab, IOverviewDashboard, IOverviewFleetTab, IOverviewOperationsTab, IOverviewStaffTab, OverviewRange, } from "@/types/overview"; const O = URL_CONSTANTS.OVERVIEW; /** Mirrors the API's OverviewLayoutDto — one entry per GET /overview/layouts item. */ export interface IOverviewLayoutOption { key: OverviewLayoutKey; label: string; } export const overviewService = { /** Layouts the caller has permission to render, in server priority order. */ getLayouts: async (): Promise => { const response = await client.get(O.LAYOUTS); return unwrap(response); }, getDashboard: async (range?: OverviewRange): Promise => { const response = await client.get(O.BASE, { params: range ? { range } : undefined, }); return unwrap(response); }, getBookingsTab: async (range?: OverviewRange): Promise => { const response = await client.get(O.BOOKINGS, { params: range ? { range } : undefined, }); return unwrap(response); }, getContractsTab: async (range?: OverviewRange): Promise => { const response = await client.get(O.CONTRACTS, { params: range ? { range } : undefined, }); return unwrap(response); }, getBillingTab: async (range?: OverviewRange): Promise => { const response = await client.get(O.BILLING, { params: range ? { range } : undefined, }); return unwrap(response); }, getOperationsTab: async ( range?: OverviewRange, ): Promise => { const response = await client.get(O.OPERATIONS, { params: range ? { range } : undefined, }); return unwrap(response); }, getFleetTab: async (range?: OverviewRange): Promise => { const response = await client.get(O.FLEET, { params: range ? { range } : undefined, }); return unwrap(response); }, /** Document + invoice queues; not range-scoped — these are open work items. */ getClearanceTab: async (): Promise => { const response = await client.get(O.CLEARANCE); return unwrap(response); }, getCustomersTab: async (range?: OverviewRange): Promise => { const response = await client.get(O.CUSTOMERS, { params: range ? { range } : undefined, }); return unwrap(response); }, getStaffTab: async (range?: OverviewRange): Promise => { const response = await client.get(O.STAFF, { params: range ? { range } : undefined, }); return unwrap(response); }, };