web-humas-fe/services/article.ts

247 lines
6.9 KiB
TypeScript

import { PaginationRequest } from "@/types/globals";
import {
httpDeleteInterceptor,
httpGet,
httpPost,
httpPut,
} from "./http-config/axios-base-service";
import Cookies from "js-cookie";
import { stat } from "fs";
import axiosInterceptorInstanceHumas from "./http-config/konten-humas-base-service";
import { httpGetInterceptor } from "./http-config/http-interceptor-services";
const token = Cookies.get("access_token");
export async function getListArticle(props: PaginationRequest) {
const {
page,
limit,
search,
startDate,
endDate,
isPublish,
category,
sortBy,
sort,
categorySlug,
isBanner,
categoryIds,
createdByIds,
} = props;
const headers = {
"content-type": "application/json",
};
return await httpGet(
`/articles/public?sort=desc&sortBy=created_at&limit=${limit}&page=${page}&isPublish=${
isPublish === undefined ? "" : isPublish
}&title=${search}&startDate=${startDate || ""}&endDate=${
endDate || ""
}&categoryId=${category || ""}&sortBy=${sortBy || "created_at"}&sort=${
sort || "asc"
}&category=${categorySlug || ""}&isBanner=${isBanner || ""}&categoryIds=${
categoryIds || ""
}&createdByIds=${createdByIds || ""}`,
headers
);
}
export async function getListArticleAdminPage(props: PaginationRequest) {
const {
page,
limit,
search,
startDate,
endDate,
isPublish,
category,
sortBy,
sort,
categorySlug,
isBanner,
categoryIds,
createdByIds,
} = props;
return await httpGetInterceptor(
`/articles?sort=desc&sortBy=created_at&limit=${limit}&page=${page}&isPublish=${
isPublish === undefined ? "" : isPublish
}&title=${search}&startDate=${startDate || ""}&endDate=${
endDate || ""
}&categoryId=${category || ""}&sortBy=${sortBy || "created_at"}&sort=${
sort || "asc"
}&category=${categorySlug || ""}&isBanner=${isBanner || ""}&categoryIds=${
categoryIds || ""
}&createdByIds=${createdByIds || ""}`
);
}
export async function getTopArticles(props: PaginationRequest) {
const { page, limit, search, startDate, endDate, isPublish, category } =
props;
return await httpGetInterceptor(
`/articles?sort=desc&sortBy=created_at&limit=${limit}&page=${page}&isPublish=${
isPublish === undefined ? "" : isPublish
}&title=${search}&startDate=${startDate || ""}&endDate=${
endDate || ""
}&category=${category || ""}&sortBy=view_count&sort=desc`
);
}
export async function createArticle(data: any) {
const headers = {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
};
const pathUrl = `/articles`;
return await httpPost(pathUrl, headers, data);
}
export async function createArticleSchedule(data: any) {
const headers = {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
};
const pathUrl = `/articles/publish-scheduling?id=${data.id}&date=${data.date}`;
return await httpPost(pathUrl, headers, data);
}
export async function updateArticle(id: string, data: any) {
const headers = {
"content-type": "application/json",
};
const pathUrl = `/articles/${id}`;
return await httpPut(pathUrl, headers, data);
}
export async function getArticleById(id: any) {
const headers = {
"content-type": "application/json",
};
return await httpGet(`/articles/${id}`, headers);
}
export async function deleteArticle(id: string) {
const headers = {
"content-type": "application/json",
};
return await httpDeleteInterceptor(`articles/${id}`, headers);
}
export async function getArticleByCategory() {
const headers = {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
};
return await httpGet(`/article-categories?limit=1000`, headers);
}
export async function getCategoryPagination(data: any) {
const headers = {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
};
return await httpGetInterceptor(
`/article-categories?limit=${data?.limit}&page=${data?.page}&title=${data?.search}`
);
}
export async function uploadArticleFile(id: string, data: any) {
const headers = {
"content-type": "multipart/form-data",
};
return await httpPost(`/article-files/${id}`, headers, data);
}
export async function uploadArticleThumbnail(id: string, data: any) {
const headers = {
"content-type": "multipart/form-data",
};
return await httpPost(`/articles/thumbnail/${id}`, headers, data);
}
export async function deleteArticleFiles(id: number) {
const headers = {
"content-type": "multipart/form-data",
};
return await httpDeleteInterceptor(`article-files/${id}`, headers);
}
export async function getUserLevelDataStat(startDate: string, endDate: string) {
const headers = {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
};
return await httpGet(
`/articles/statistic/user-levels?startDate=${startDate}&endDate=${endDate}`,
headers
);
}
export async function getStatisticMonthly(year: string) {
const headers = {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
};
return await httpGet(`/articles/statistic/monthly?year=${year}`, headers);
}
export async function getStatisticMonthlyFeedback(year: string) {
const headers = {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
};
return await httpGet(`/feedbacks/statistic/monthly?year=${year}`, headers);
}
export async function getStatisticSummary() {
const headers = {
"content-type": "application/json",
Authorization: `Bearer ${token}`,
};
return await httpGetInterceptor(`/articles/statistic/summary`);
}
export async function submitApproval(data: {
articleId: number;
message: string;
statusId: number;
}) {
const headers = {
"content-type": "multipart/form-data",
Authorization: `Bearer ${token}`,
};
return await httpPost(`/article-approvals`, headers, data);
}
export async function updateIsBannerArticle(id: number, status: boolean) {
const headers = {
"content-type": "application/json",
};
const pathUrl = `/articles/banner/${id}?isBanner=${status}`;
return await httpPut(pathUrl, headers);
}
export async function httpGetHumas(pathUrl: any, headers: any) {
const response = await axiosInterceptorInstanceHumas
.get(pathUrl, { headers })
.catch(function (error: any) {
console.log(error);
return error.response;
});
console.log("Response base svc : ", response);
if (response?.status == 200 || response?.status == 201) {
return {
error: false,
message: "success",
data: response?.data,
};
} else {
return {
error: true,
message: response?.data?.message || response?.data || null,
data: null,
};
}
}
export async function getArticleByIdHumas(id: any) {
const headers = {
"content-type": "application/json",
};
return await httpGetHumas(`/articles/${id}`, headers);
}