import { apiRequestData } from "./http"; export type ApprovalRoleCode = | "employee" | "manager" | "ceo" | "finance" | "finance_mgr" | "administration" | "hr"; export type ApprovalOwnerSelfFallbackRoleCode = "finance" | "finance_mgr"; export type ApprovalRule = { id: string; name: string; minAmount: string; maxAmount: string | null; level1Role: ApprovalRoleCode; level2Role: ApprovalRoleCode | null; level3Role: ApprovalRoleCode | null; ownerSelfFallbackRole: ApprovalOwnerSelfFallbackRoleCode | null; enabled: boolean; priority: number; createdAt: string | null; updatedAt: string | null; }; export type ApprovalRulesListResponse = { enabled: boolean | null; items: ApprovalRule[]; }; export async function fetchApprovalRules(params?: { enabled?: boolean }) { const qs = new URLSearchParams(); if (params?.enabled != null) { qs.set("enabled", params.enabled ? "true" : "false"); } const query = qs.toString(); return apiRequestData(`/api/approval-rules${query ? `?${query}` : ""}`); } export type ApprovalRuleCreatePayload = { name: string; minAmount: string; maxAmount: string | null; level1Role: ApprovalRoleCode; level2Role: ApprovalRoleCode | null; level3Role: ApprovalRoleCode | null; ownerSelfFallbackRole: ApprovalOwnerSelfFallbackRoleCode | null; enabled?: boolean; priority?: number; }; export async function createApprovalRule(payload: ApprovalRuleCreatePayload) { return apiRequestData("/api/approval-rules", { method: "POST", body: JSON.stringify(payload), }); } export type ApprovalRulePatchPayload = Partial; export async function patchApprovalRule(approvalRuleId: string, payload: ApprovalRulePatchPayload) { return apiRequestData(`/api/approval-rules/${approvalRuleId}`, { method: "PATCH", body: JSON.stringify(payload), }); }