import { apiRequestData } from "./http"; export type DashboardQuery = { dateFrom?: string; dateTo?: string; departmentId?: string; limit?: number; }; function toQueryString(query: DashboardQuery = {}) { const params = new URLSearchParams(); if (query.dateFrom) params.set("dateFrom", query.dateFrom); if (query.dateTo) params.set("dateTo", query.dateTo); if (query.departmentId) params.set("departmentId", query.departmentId); if (query.limit != null) params.set("limit", String(query.limit)); const encoded = params.toString(); return encoded ? `?${encoded}` : ""; } export type DashboardExpenseOverview = { totalCount: number; totalAmount: string; paidCount: number; paidAmount: string; reviewingCount: number; }; export type DashboardTrendPoint = { date: string; amount: string; count: number; }; export type DashboardTopCategory = { code: string; name: string; amount: string; count: number; }; export type DashboardApprovalEfficiency = { approvedCount: number; averageHours: number; }; export async function fetchDashboardOverview(query: DashboardQuery = {}) { return apiRequestData(`/api/dashboard/expense-overview${toQueryString(query)}`); } export async function fetchDashboardTrends(query: DashboardQuery = {}) { return apiRequestData<{ points: DashboardTrendPoint[] }>(`/api/dashboard/trends${toQueryString(query)}`); } export async function fetchDashboardTopCategories(query: DashboardQuery = {}) { return apiRequestData<{ items: DashboardTopCategory[] }>(`/api/dashboard/top-categories${toQueryString(query)}`); } export async function fetchDashboardApprovalEfficiency(query: DashboardQuery = {}) { return apiRequestData(`/api/dashboard/approval-efficiency${toQueryString(query)}`); }