import { serverFetchJson } from "@/app/utils/fetchUtil";
import { BASE_API_URL } from "@/config/api";
import { cache } from "react";
import "server-only";

export interface Claim {
  id: number;
  code: string;
  created: number[];
  project: ProjectCombo;
  amount: number;
  type: "Expense" | "Petty Cash";
  status: "Not Submitted" | "Waiting for Approval" | "Approved" | "Rejected";
  remarks: string;
}

export interface ClaimSearchForm {
  id: number;
  created: string;
  createdTo: string;
  name: string;
  cost: number;
  type: "Expense" | "Petty Cash";
  status: "Not Submitted" | "Waiting for Approval" | "Approved" | "Rejected";
  remarks: string;
}

export interface ProjectCombo {
  id: number;
  name: string;
  code: string;
}

export interface SupportingDocument {
  id: number;
  skey: string;
  filename: string;
}

export const preloadClaims = () => {
  fetchClaims();
};

export const fetchClaims = cache(async () => {
  // return mockClaims;
  return serverFetchJson<Claim[]>(`${BASE_API_URL}/claim`);
});

export const fetchProjectCombo = cache(async () => {
  return serverFetchJson<ProjectCombo[]>(`${BASE_API_URL}/projects`, {
    next: { tags: ["projects"] },
  });
});

// export const fetchAllCustomers = cache(async () => {
//   return serverFetchJson<Customer[]>(`${BASE_API_URL}/customer`);
// });
/*
const mockClaims: Claim[] = [
  {
    id: 1,
    created: "2023/11/22",
    name: "Consultancy Project A",
    cost: 121.0,
    type: "Expense",
    status: "Not Submitted",
    remarks: "",
  },
  {
    id: 2,
    created: "2023/11/30",
    name: "Consultancy Project A",
    cost: 4300.0,
    type: "Expense",
    status: "Waiting for Approval",
    remarks: "",
  },
  {
    id: 3,
    created: "2023/12/12",
    name: "Construction Project C",
    cost: 3675.0,
    type: "Petty Cash",
    status: "Rejected",
    remarks: "Duplicate Claim Form",
  },
];*/
