Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 

74 lignes
1.8 KiB

  1. "use server";
  2. import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil";
  3. import { BASE_API_URL } from "@/config/api";
  4. import { Contact, Subsidiary, SaveSubsidiaryResponse, } from ".";
  5. import { revalidateTag } from "next/cache";
  6. export interface SubsidiaryFormInputs {
  7. // Subsidiary info
  8. id: number | null;
  9. name: string;
  10. code: string;
  11. address: string | null;
  12. district: string | null;
  13. brNo: string | null;
  14. typeId: number;
  15. // Customer
  16. addCustomerIds: number[];
  17. deleteCustomerIds: number[];
  18. // Contact
  19. addContacts: Contact[];
  20. deleteContactIds: number[];
  21. // is grid editing
  22. isGridEditing: boolean | null;
  23. }
  24. export interface SubsidiaryResponse {
  25. subsidiary: Subsidiary;
  26. customerIds: number[];
  27. contacts: Contact[];
  28. }
  29. export const saveSubsidiary = async (data: SubsidiaryFormInputs) => {
  30. const saveSubsidiary = await serverFetchJson<SaveSubsidiaryResponse>(
  31. `${BASE_API_URL}/subsidiary/save`,
  32. {
  33. method: "POST",
  34. body: JSON.stringify(data),
  35. headers: { "Content-Type": "application/json" },
  36. },
  37. );
  38. revalidateTag("subsidiaries");
  39. return saveSubsidiary;
  40. };
  41. export const fetchSubsidiary = async (id: number) => {
  42. const subsidiary = await serverFetchJson<SubsidiaryResponse>(
  43. `${BASE_API_URL}/subsidiary/${id}`,
  44. {
  45. method: "GET",
  46. headers: { "Content-Type": "application/json" },
  47. },
  48. );
  49. return subsidiary
  50. };
  51. export const deleteSubsidiary = async (id: number) => {
  52. const subsidiary = await serverFetchWithNoContent(
  53. `${BASE_API_URL}/subsidiary/${id}`,
  54. {
  55. method: "DELETE",
  56. headers: { "Content-Type": "application/json" },
  57. },
  58. );
  59. return subsidiary
  60. };