diff --git a/app/(admin)/admin/agent/create/page.tsx b/app/(admin)/admin/agent/create/page.tsx new file mode 100644 index 0000000..df48b03 --- /dev/null +++ b/app/(admin)/admin/agent/create/page.tsx @@ -0,0 +1,11 @@ +import AddAgentForm from "@/components/form/agent/agent-form"; +import CreateArticleForm from "@/components/form/article/create-article-form"; +import AddProductForm from "@/components/form/product/create-product-form"; + +export default function CreateAgent() { + return ( +
Kelola Agent JAECOO
+Article
+Article
+Kelola gambar banner yang tampil di halaman Utama website
+Kelola Galeri JAECOO
+Kelola Informasi Product Kendaraan JAECOO
+Kelola Promo JAECOO
+
- + JAECOO Admin +
+ {/* Admin Panel */}Ringkasan status aktivitas dan upload anda
+{username}
-2
+ {/*{summary?.totalToday}
-Today
+2
- {summary?.totalThisWeek} -
-This Week
-2
+ {/*+ {summary?.totalToday} +
+2
+- {summary?.totalAll} -
-Total Posts
+2
+ {/*+ {summary?.totalToday} +
+2
+- {summary?.totalViews} -
-Total Views
+2
+ {/*+ {summary?.totalToday} +
+2
+- {summary?.totalShares} -
-Total Shares
-- {summary?.totalComments} -
-Total Comments
++ Aktivitas Terakhir +
+ ++ Notifikasi +
++ {notif.text} +
++ {notif.time} +
++ Upload yang berstatus "Menunggu" akan direview oleh + Approver. Pastikan semua konten sudah sesuai panduan sebelum + upload untuk mempercepat proses approval. +
+{article.isPublish ? "Publish" : "Draft"}
+ ); + case "isBanner": + return{article.isBanner ? "Ya" : "Tidak"}
; + case "createdAt": + return{convertDateFormat(article.createdAt)}
; + case "category": + return ( ++ {article?.categories?.map((list: any) => list.title).join(", ") + + " "} +
+ ); + + case "actions": + return ( ++ Menampilkan {article.length} dari {article.length} data +
++ Halaman {page} dari {totalPage} +
+ +DELICATE OFF-ROAD SUV
+ + {/* Status badge */} +Pencarian
-Data
- -Kategori
- -Tanggal
-+ Menampilkan {article.length} dari {article.length} data +
++ Halaman {page} dari {totalPage} +
+DELICATE OFF-ROAD SUV
+ + {/* Status badge */} +{item.desc ?? "-"}
+ + {/* Date */} +Menampilkan {data.length} data
+ +{article.isPublish ? "Publish" : "Draft"}
+ ); + case "isBanner": + return{article.isBanner ? "Ya" : "Tidak"}
; + case "createdAt": + return{convertDateFormat(article.createdAt)}
; + case "category": + return ( ++ {article?.categories?.map((list: any) => list.title).join(", ") + + " "} +
+ ); + + case "actions": + return ( ++ Menampilkan {article.length} dari {article.length} data +
++ Halaman {page} dari {totalPage} +
+ +DELICATE OFF-ROAD SUV
+ + {/* Status badge */} +{article.isPublish ? "Publish" : "Draft"}
+ ); + case "isBanner": + return{article.isBanner ? "Ya" : "Tidak"}
; + case "createdAt": + return{convertDateFormat(article.createdAt)}
; + case "category": + return ( ++ {article?.categories?.map((list: any) => list.title).join(", ") + + " "} +
+ ); + + case "actions": + return ( ++ Menampilkan {article.length} dari {article.length} data +
++ Halaman {page} dari {totalPage} +
+ +DELICATE OFF-ROAD SUV
+ + {/* Status badge */} ++ {body} +
+ ) +} + +export { + useFormField, + Form, + FormItem, + FormLabel, + FormControl, + FormDescription, + FormMessage, + FormField, +} diff --git a/next.config.ts b/next.config.ts index 6abe5df..c6216cb 100644 --- a/next.config.ts +++ b/next.config.ts @@ -2,7 +2,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { images: { - domains: ["mikulnews.com", "dev.mikulnews.com"], + domains: ["mikulnews.com", "dev.mikulnews.com", "jaecoocihampelasbdg.com"], }, eslint: { ignoreDuringBuilds: true, diff --git a/package-lock.json b/package-lock.json index 7c4bd12..63d78e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,19 +10,19 @@ "dependencies": { "@ckeditor/ckeditor5-react": "^10.0.0", "@ckeditor/ckeditor5-watchdog": "^45.2.1", - "@hookform/resolvers": "^5.1.1", + "@hookform/resolvers": "^5.2.2", "@iconify/iconify": "^3.1.1", "@iconify/react": "^6.0.0", "@radix-ui/react-accordion": "^1.2.11", "@radix-ui/react-checkbox": "^1.3.2", "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-dropdown-menu": "^2.1.15", - "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-label": "^2.1.8", "@radix-ui/react-popover": "^1.1.14", "@radix-ui/react-radio-group": "^1.3.7", "@radix-ui/react-scroll-area": "^1.2.9", "@radix-ui/react-select": "^2.2.5", - "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-switch": "^1.2.5", "@types/js-cookie": "^3.0.6", "apexcharts": "^4.7.0", @@ -45,14 +45,14 @@ "react-day-picker": "^9.8.0", "react-dom": "^19.0.0", "react-dropzone": "^14.3.8", - "react-hook-form": "^7.60.0", + "react-hook-form": "^7.66.0", "react-intersection-observer": "^9.16.0", "react-password-checklist": "^1.8.1", "react-select": "^5.10.1", "sweetalert2": "^11.22.2", "sweetalert2-react-content": "^5.1.0", "tailwind-merge": "^3.3.1", - "zod": "^3.25.67" + "zod": "^3.25.76" }, "devDependencies": { "@tailwindcss/postcss": "^4", @@ -1209,9 +1209,9 @@ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==" }, "node_modules/@hookform/resolvers": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.1.1.tgz", - "integrity": "sha512-J/NVING3LMAEvexJkyTLjruSm7aOFx7QX21pzkiJfMoNG0wl5aFEjLTl7ay7IQb9EWY6AkrBy7tHL2Alijpdcg==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", + "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==", "dependencies": { "@standard-schema/utils": "^0.3.0" }, @@ -1943,6 +1943,23 @@ } } }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", @@ -2006,6 +2023,23 @@ } } }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-direction": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", @@ -2130,11 +2164,33 @@ } }, "node_modules/@radix-ui/react-label": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", - "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", + "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", "dependencies": { - "@radix-ui/react-primitive": "2.1.3" + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", @@ -2190,6 +2246,23 @@ } } }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-popover": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.14.tgz", @@ -2226,6 +2299,23 @@ } } }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-popper": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.7.tgz", @@ -2325,6 +2415,23 @@ } } }, + "node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-radio-group": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.7.tgz", @@ -2458,7 +2565,7 @@ } } }, - "node_modules/@radix-ui/react-slot": { + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", @@ -2475,6 +2582,23 @@ } } }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-switch": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.5.tgz", @@ -4809,9 +4933,9 @@ } }, "node_modules/react-hook-form": { - "version": "7.60.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.60.0.tgz", - "integrity": "sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.66.0.tgz", + "integrity": "sha512-xXBqsWGKrY46ZqaHDo+ZUYiMUgi8suYu5kdrS20EG8KiL7VRQitEbNjm+UcrDYrNi1YLyfpmAeGjCZYXLT9YBw==", "engines": { "node": ">=18.0.0" }, @@ -5462,9 +5586,9 @@ } }, "node_modules/zod": { - "version": "3.25.74", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.74.tgz", - "integrity": "sha512-J8poo92VuhKjNknViHRAIuuN6li/EwFbAC8OedzI8uxpEPGiXHGQu9wemIAioIpqgfB4SySaJhdk0mH5Y4ICBg==", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 62d7488..ec07767 100644 --- a/package.json +++ b/package.json @@ -11,19 +11,19 @@ "dependencies": { "@ckeditor/ckeditor5-react": "^10.0.0", "@ckeditor/ckeditor5-watchdog": "^45.2.1", - "@hookform/resolvers": "^5.1.1", + "@hookform/resolvers": "^5.2.2", "@iconify/iconify": "^3.1.1", "@iconify/react": "^6.0.0", "@radix-ui/react-accordion": "^1.2.11", "@radix-ui/react-checkbox": "^1.3.2", "@radix-ui/react-dialog": "^1.1.14", "@radix-ui/react-dropdown-menu": "^2.1.15", - "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-label": "^2.1.8", "@radix-ui/react-popover": "^1.1.14", "@radix-ui/react-radio-group": "^1.3.7", "@radix-ui/react-scroll-area": "^1.2.9", "@radix-ui/react-select": "^2.2.5", - "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-switch": "^1.2.5", "@types/js-cookie": "^3.0.6", "apexcharts": "^4.7.0", @@ -46,14 +46,14 @@ "react-day-picker": "^9.8.0", "react-dom": "^19.0.0", "react-dropzone": "^14.3.8", - "react-hook-form": "^7.60.0", + "react-hook-form": "^7.66.0", "react-intersection-observer": "^9.16.0", "react-password-checklist": "^1.8.1", "react-select": "^5.10.1", "sweetalert2": "^11.22.2", "sweetalert2-react-content": "^5.1.0", "tailwind-merge": "^3.3.1", - "zod": "^3.25.67" + "zod": "^3.25.76" }, "devDependencies": { "@tailwindcss/postcss": "^4", diff --git a/service/agent.ts b/service/agent.ts new file mode 100644 index 0000000..3c555a1 --- /dev/null +++ b/service/agent.ts @@ -0,0 +1,37 @@ +import { PaginationRequest } from "@/types/globals"; +import { + httpDeleteInterceptor, + httpGetInterceptor, + httpPostInterceptor, + httpPutInterceptor, +} from "./http-config/http-interceptor-services"; +import { httpGet } from "./http-config/http-base-services"; + +export async function getAgentData(props: PaginationRequest) { + const { page, limit, search } = props; + return await httpGetInterceptor(`/sales-agents`); +} + +export async function getAgentById(id: any) { + const headers = { + "content-type": "application/json", + }; + return await httpGet(`/sales-agents/${id}`, headers); +} + +export async function createAgent(data: any) { + const pathUrl = `/sales-agents`; + return await httpPostInterceptor(pathUrl, data); +} + +export async function updateAgent(id: number, data: any) { + const pathUrl = `/sales-agents/${id}`; + return await httpPutInterceptor(pathUrl, data); +} + +export async function deleteAgent(id: string) { + const headers = { + "content-type": "application/json", + }; + return await httpDeleteInterceptor(`sales-agents/${id}`, headers); +} diff --git a/service/article.ts b/service/article.ts index 8faddf4..d5da725 100644 --- a/service/article.ts +++ b/service/article.ts @@ -1,6 +1,11 @@ import { PaginationRequest } from "@/types/globals"; import { httpGet } from "./http-config/http-base-services"; -import { httpDeleteInterceptor, httpGetInterceptor, httpPostInterceptor, httpPutInterceptor } from "./http-config/http-interceptor-services"; +import { + httpDeleteInterceptor, + httpGetInterceptor, + httpPostInterceptor, + httpPutInterceptor, +} from "./http-config/http-interceptor-services"; export async function getListArticle(props: PaginationRequest) { const { @@ -42,11 +47,13 @@ export async function getArticlePagination(props: PaginationRequest) { isBanner, } = props; return await httpGetInterceptor( - `/articles?limit=${limit}&page=${page}&title=${search}&startDate=${startDate || ""}&endDate=${ - endDate || "" - }&categoryId=${category || ""}&sortBy=${sortBy || "created_at"}&sort=${ - sort || "asc" - }&category=${categorySlug || ""}&isBanner=${isBanner || ""}` + `/articles?limit=${limit}&page=${page}&title=${search}&startDate=${ + startDate || "" + }&endDate=${endDate || ""}&categoryId=${category || ""}&sortBy=${ + sortBy || "created_at" + }&sort=${sort || "asc"}&category=${categorySlug || ""}&isBanner=${ + isBanner || "" + }` ); } diff --git a/service/banner.ts b/service/banner.ts new file mode 100644 index 0000000..a7a8317 --- /dev/null +++ b/service/banner.ts @@ -0,0 +1,44 @@ +import { PaginationRequest } from "@/types/globals"; +import { + httpDeleteInterceptor, + httpGetInterceptor, + httpPostInterceptor, + httpPutInterceptor, +} from "./http-config/http-interceptor-services"; +import { httpGet } from "./http-config/http-base-services"; + +export async function getBannerData(props: PaginationRequest) { + const { page, limit, search } = props; + return await httpGetInterceptor(`/banners`); +} + +export async function getBannerById(id: any) { + const headers = { + "content-type": "application/json", + }; + return await httpGet(`/banners/${id}`, headers); +} + +// export async function createBanner(data: any) { +// const pathUrl = `/banners`; +// return await httpPostInterceptor(pathUrl, data); +// } + +export async function createBanner(data: any) { + const headers = { + "content-type": "multipart/form-data", + }; + return await httpPostInterceptor(`/banners`, data, headers); +} + +export async function updateBanner(data: any, id: any) { + const pathUrl = `/banners/${id}`; + return await httpPutInterceptor(pathUrl, data); +} + +export async function deleteBanner(id: string) { + const headers = { + "content-type": "application/json", + }; + return await httpDeleteInterceptor(`banners/${id}`, headers); +} diff --git a/service/galery.ts b/service/galery.ts new file mode 100644 index 0000000..8bb23ff --- /dev/null +++ b/service/galery.ts @@ -0,0 +1,46 @@ +import { PaginationRequest } from "@/types/globals"; +import { + httpDeleteInterceptor, + httpGetInterceptor, + httpPostInterceptor, + httpPutInterceptor, +} from "./http-config/http-interceptor-services"; +import { httpGet } from "./http-config/http-base-services"; + +export async function getGaleryData(props: PaginationRequest) { + const { page, limit, search } = props; + return await httpGetInterceptor(`/gallery-files`); +} + +export async function getGaleryById(id: any) { + const headers = { + "content-type": "application/json", + }; + return await httpGet(`/gallery-files/${id}`, headers); +} + +export async function createGalery(data: any) { + const headers = { + "content-type": "multipart/form-data", + }; + return await httpPostInterceptor(`/gallery-files`, data, headers); +} + +export async function updateGalery(id: any, data: any) { + const headers = { + "content-type": "multipart/form-data", + }; + return await httpPutInterceptor(`/gallery-files/${id}`, data, headers); +} + +// export async function updateGalery(data: any, id: any) { +// const pathUrl = `/gallery-files/${id}`; +// return await httpPutInterceptor(pathUrl, data); +// } + +export async function deleteGalery(id: string) { + const headers = { + "content-type": "application/json", + }; + return await httpDeleteInterceptor(`gallery-files/${id}`, headers); +} diff --git a/service/http-config/axios-base-instance.ts b/service/http-config/axios-base-instance.ts index de3efbe..561c72c 100644 --- a/service/http-config/axios-base-instance.ts +++ b/service/http-config/axios-base-instance.ts @@ -1,12 +1,12 @@ import axios from "axios"; -const baseURL = "https://dev.mikulnews.com/api"; +const baseURL = "https://jaecoocihampelasbdg.com/api"; const axiosBaseInstance = axios.create({ baseURL, headers: { "Content-Type": "application/json", - "X-Client-Key": "bb65b1ad-e954-4a1a-b4d0-74df5bb0b640" + "X-Client-Key": "bb65b1ad-e954-4a1a-b4d0-74df5bb0b640", }, }); diff --git a/service/http-config/axios-interceptor-instance.ts b/service/http-config/axios-interceptor-instance.ts index 422a192..bd116c1 100644 --- a/service/http-config/axios-interceptor-instance.ts +++ b/service/http-config/axios-interceptor-instance.ts @@ -2,7 +2,7 @@ import axios from "axios"; import { postSignIn } from "../master-user"; import Cookies from "js-cookie"; -const baseURL = "https://dev.mikulnews.com/api"; +const baseURL = "https://jaecoocihampelasbdg.com/api"; const refreshToken = Cookies.get("refresh_token"); @@ -10,7 +10,7 @@ const axiosInterceptorInstance = axios.create({ baseURL, headers: { "Content-Type": "application/json", - "X-Client-Key": "bb65b1ad-e954-4a1a-b4d0-74df5bb0b640" + "X-Client-Key": "bb65b1ad-e954-4a1a-b4d0-74df5bb0b640", }, withCredentials: true, }); diff --git a/service/product.ts b/service/product.ts new file mode 100644 index 0000000..1e8382f --- /dev/null +++ b/service/product.ts @@ -0,0 +1,36 @@ +import { PaginationRequest } from "@/types/globals"; +import { + httpDeleteInterceptor, + httpGetInterceptor, + httpPostInterceptor, + httpPutInterceptor, +} from "./http-config/http-interceptor-services"; + +export async function getProductPagination(props: PaginationRequest) { + const { page, limit, search } = props; + return await httpGetInterceptor(`/products`); +} + +// export async function createProduct(data: any) { +// const pathUrl = `/products`; +// return await httpPostInterceptor(pathUrl, data); +// } + +export async function createProduct(data: any) { + const headers = { + "content-type": "multipart/form-data", + }; + return await httpPostInterceptor(`/products`, data, headers); +} + +export async function updateProduct(data: any, id: any) { + const pathUrl = `/products/${id}`; + return await httpPutInterceptor(pathUrl, data); +} + +export async function deleteProduct(id: string) { + const headers = { + "content-type": "application/json", + }; + return await httpDeleteInterceptor(`products/${id}`, headers); +} diff --git a/service/promotion.ts b/service/promotion.ts new file mode 100644 index 0000000..65694e5 --- /dev/null +++ b/service/promotion.ts @@ -0,0 +1,39 @@ +import { PaginationRequest } from "@/types/globals"; +import { + httpDeleteInterceptor, + httpGetInterceptor, + httpPostInterceptor, + httpPutInterceptor, +} from "./http-config/http-interceptor-services"; +import { httpGet } from "./http-config/http-base-services"; + +export async function getPromotionPagination(props: PaginationRequest) { + const { page, limit, search } = props; + return await httpGetInterceptor(`/promotions`); +} + +export async function getPromotionById(id: any) { + const headers = { + "content-type": "application/json", + }; + return await httpGet(`/promotions/${id}`, headers); +} + +export async function createPromotion(data: any) { + const headers = { + "content-type": "multipart/form-data", + }; + return await httpPostInterceptor(`/promotions`, data, headers); +} + +export async function updatePromotion(data: any, id: any) { + const pathUrl = `/promotions/${id}`; + return await httpPutInterceptor(pathUrl, data); +} + +export async function deletePromotion(id: string) { + const headers = { + "content-type": "application/json", + }; + return await httpDeleteInterceptor(`promotions/${id}`, headers); +}