import { getCookiesDecrypt } from "@/lib/utils"; import { httpPost } from "../http-config/http-base-service"; import { httpDeleteInterceptor, httpGetInterceptor, httpPostInterceptor, httpPutInterceptor, } from "../http-config/http-interceptor-service"; interface GetCategoriesParams { UserLevelId?: number; UserLevelNumber?: number; description?: string; isPublish?: boolean; parentId?: number; statusId?: number; title?: string; count?: number; limit?: number; nextPage?: number; page?: number; previousPage?: number; sort?: string; sortBy?: string; totalPage?: number; region?: string; // kalau ada publishedLocation } export interface CreateCategoryPayload { title: string; slug: string; description: string; tags?: string; statusId?: number; } export async function getCategories(params: GetCategoriesParams) { const query = new URLSearchParams(); if (params.UserLevelId) query.append("UserLevelId", params.UserLevelId.toString()); if (params.UserLevelNumber) query.append("UserLevelNumber", params.UserLevelNumber.toString()); if (params.description) query.append("description", params.description); if (params.isPublish !== undefined) query.append("isPublish", String(params.isPublish)); if (params.parentId) query.append("parentId", params.parentId.toString()); if (params.statusId) query.append("statusId", params.statusId.toString()); if (params.title) query.append("title", params.title); if (params.count) query.append("count", params.count.toString()); if (params.limit) query.append("limit", params.limit.toString()); if (params.nextPage) query.append("nextPage", params.nextPage.toString()); if (params.page) query.append("page", params.page.toString()); if (params.previousPage) query.append("previousPage", params.previousPage.toString()); if (params.sort) query.append("sort", params.sort); if (params.sortBy) query.append("sortBy", params.sortBy); if (params.totalPage) query.append("totalPage", params.totalPage.toString()); if (params.region) query.append("publishedLocation", params.region); const url = `/article-categories?${query.toString()}`; return httpGetInterceptor(url); } export async function deleteCategories(id: number) { const clientKey = getCookiesDecrypt("clientKey"); const csrfToken = getCookiesDecrypt("csrfToken"); const url = `/article-categories/${id}`; return httpDeleteInterceptor(url, { headers: { "X-Client-Key": clientKey, "X-Csrf-Token": csrfToken, }, }); } export async function createCategories(data: CreateCategoryPayload) { const url = "article-categories"; return httpPostInterceptor(url, data); } export async function getArticleCategoryDetail(id: number) { const url = `article-categories/${id}`; return await httpGetInterceptor(url); } export async function updateArticleCategory(id: number, data: any) { const url = `article-categories/${id}`; return httpPutInterceptor(url, data); } export async function uploadArticleCategoryThumbnail(id: any, data: any) { const url = `article-categories/thumbnail/${id}`; const headers = { "Content-Type": "multipart/form-data", }; return httpPostInterceptor(url, data, headers); }