import { apiRequestData } from "./http"; export type ReimbursementTemplateItem = { expenseTypeId: string; description: string; defaultAmount?: string; }; export type ReimbursementTemplate = { id: string; name: string; description: string | null; items: ReimbursementTemplateItem[]; sortOrder: number; enabled: boolean; createdAt: string | null; updatedAt: string | null; }; export type ReimbursementTemplateListResponse = { enabled: boolean | null; items: ReimbursementTemplate[]; }; export type ReimbursementTemplateListQuery = { enabled?: boolean; }; export type CreateReimbursementTemplatePayload = { name: string; description?: string | null; items?: ReimbursementTemplateItem[]; sortOrder?: number; enabled?: boolean; }; export type UpdateReimbursementTemplatePayload = { name?: string; description?: string | null; items?: ReimbursementTemplateItem[]; sortOrder?: number; enabled?: boolean; }; function toQueryString(query: Record) { const params = new URLSearchParams(); for (const [key, value] of Object.entries(query)) { if (value == null || value === "") { continue; } params.set(key, String(value)); } const encoded = params.toString(); return encoded ? `?${encoded}` : ""; } export async function fetchReimbursementTemplates(query: ReimbursementTemplateListQuery = {}) { return apiRequestData( `/api/reimbursement-templates${toQueryString(query as Record)}`, ); } export async function createReimbursementTemplate(payload: CreateReimbursementTemplatePayload) { return apiRequestData("/api/reimbursement-templates", { method: "POST", body: JSON.stringify(payload), }); } export async function updateReimbursementTemplate( templateId: string, payload: UpdateReimbursementTemplatePayload, ) { return apiRequestData(`/api/reimbursement-templates/${templateId}`, { method: "PATCH", body: JSON.stringify(payload), }); } export async function deleteReimbursementTemplate(templateId: string) { return apiRequestData(`/api/reimbursement-templates/${templateId}`, { method: "DELETE", }); }