"use server"; import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; import { BASE_API_URL } from "@/config/api"; import { Contact, Subsidiary, SaveSubsidiaryResponse, } from "."; import { revalidateTag } from "next/cache"; export interface SubsidiaryFormInputs { // Subsidiary info id: number | null; name: string; code: string; address: string | null; district: string | null; brNo: string | null; typeId: number; // Customer addCustomerIds: number[]; deleteCustomerIds: number[]; // Contact addContacts: Contact[]; deleteContactIds: number[]; // is grid editing isGridEditing: boolean | null; } export interface SubsidiaryResponse { subsidiary: Subsidiary; customerIds: number[]; contacts: Contact[]; } export const saveSubsidiary = async (data: SubsidiaryFormInputs) => { const saveSubsidiary = await serverFetchJson( `${BASE_API_URL}/subsidiary/save`, { method: "POST", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, }, ); revalidateTag("subsidiaries"); return saveSubsidiary; }; export const fetchSubsidiary = async (id: number) => { const subsidiary = await serverFetchJson( `${BASE_API_URL}/subsidiary/${id}`, { method: "GET", headers: { "Content-Type": "application/json" }, }, ); return subsidiary }; export const deleteSubsidiary = async (id: number) => { const subsidiary = await serverFetchWithNoContent( `${BASE_API_URL}/subsidiary/${id}`, { method: "DELETE", headers: { "Content-Type": "application/json" }, }, ); return subsidiary };