{JSON.stringify(data, null, 2)} */}
>
);
}
diff --git a/src/app_modules/admin/job/_components/detail/review.tsx b/src/app_modules/admin/job/_components/detail/review.tsx
new file mode 100644
index 00000000..508b6e36
--- /dev/null
+++ b/src/app_modules/admin/job/_components/detail/review.tsx
@@ -0,0 +1,291 @@
+"use client";
+
+import { MainColor } from "@/app_modules/_global/color";
+import { AdminColor } from "@/app_modules/_global/color/color_pallet";
+import { ComponentGlobal_InputCountDown } from "@/app_modules/_global/component";
+import {
+ ComponentGlobal_NotifikasiBerhasil,
+ ComponentGlobal_NotifikasiGagal,
+} from "@/app_modules/_global/notif_global";
+import { Admin_ComponentBoxStyle } from "@/app_modules/admin/_admin_global/_component/comp_admin_boxstyle";
+import adminNotifikasi_funCreateToUser from "@/app_modules/admin/notifikasi/fun/create/fun_create_notif_user";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import { IRealtimeData } from "@/lib/global_state";
+import {
+ Button,
+ Grid,
+ Group,
+ Modal,
+ SimpleGrid,
+ Stack,
+ Text,
+ Textarea,
+} from "@mantine/core";
+import { IconBan, IconCircleCheck } from "@tabler/icons-react";
+import { useState } from "react";
+import { WibuRealtime } from "wibu-pkg";
+import { AdminJob_funEditCatatanById } from "../../fun/edit/fun_edit_catatan_by_id";
+import { AdminJob_funEditStatusPublishById } from "../../fun/edit/fun_edit_status_publish_by_id";
+import { AdminJob_ComponentImageView } from "./image_view";
+import { useRouter } from "next/navigation";
+
+export function AdminJob_DetailReview({ data }: { data: MODEL_JOB }) {
+ const router = useRouter();
+ const [publish, setPublish] = useState(false);
+ const [reject, setReject] = useState(false);
+ const [catatan, setCatatan] = useState("");
+ const [isLoadingPublish, setLoadingPublish] = useState(false);
+ const [isLoadingReject, setLoadingReject] = useState(false);
+
+ const listData = [
+ {
+ title: "Username",
+ value: data.Author.username,
+ },
+ {
+ title: "Judul",
+ value: data.title,
+ },
+ {
+ title: "Konten",
+ value: ,
+ },
+ {
+ title: "Deskripsi",
+ value: ,
+ },
+ ];
+
+ async function onPublish() {
+ try {
+ setLoadingPublish(true);
+ const publish = await AdminJob_funEditStatusPublishById(data.id);
+ if (publish.status === 200) {
+ const dataNotifikasi: IRealtimeData = {
+ appId: publish.data?.id as any,
+ status: publish.data?.MasterStatus?.name as any,
+ userId: publish.data?.authorId as any,
+ pesan: publish.data?.title as any,
+ kategoriApp: "JOB",
+ title: "Job publish",
+ };
+
+ const createNotifikasi = await adminNotifikasi_funCreateToUser({
+ data: dataNotifikasi as any,
+ });
+
+ if (createNotifikasi.status === 201) {
+ WibuRealtime.setData({
+ type: "notification",
+ pushNotificationTo: "USER",
+ dataMessage: dataNotifikasi,
+ });
+
+ WibuRealtime.setData({
+ type: "trigger",
+ pushNotificationTo: "USER",
+ dataMessage: dataNotifikasi,
+ });
+ }
+ setPublish(false);
+ ComponentGlobal_NotifikasiBerhasil(publish.message);
+
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(publish.message);
+ }
+ } catch (error) {
+ console.log("Error,", error);
+ } finally {
+ setLoadingPublish(false);
+ }
+ }
+
+ async function onReject() {
+ try {
+ setLoadingReject(true);
+ const reject = await AdminJob_funEditCatatanById(data.id, catatan);
+
+ if (reject.status === 200) {
+ ComponentGlobal_NotifikasiBerhasil(reject.message);
+ const dataNotifikasi: IRealtimeData = {
+ appId: reject.data?.id as any,
+ status: reject.data?.MasterStatus?.name as any,
+ userId: reject.data?.authorId as any,
+ pesan: reject.data?.title as any,
+ kategoriApp: "JOB",
+ title: "Job reject",
+ };
+
+ const createRejectNotifikasi = await adminNotifikasi_funCreateToUser({
+ data: dataNotifikasi as any,
+ });
+
+ if (createRejectNotifikasi.status === 201) {
+ WibuRealtime.setData({
+ type: "notification",
+ pushNotificationTo: "USER",
+ dataMessage: dataNotifikasi,
+ });
+ }
+ setReject(false);
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(reject.message);
+ }
+ } catch (error) {
+ console.log("Error reject", error);
+ } finally {
+ setLoadingReject(false);
+ }
+ }
+
+ return (
+ <>
+ {JSON.stringify(data, null, 2)} */}
+ >
+ );
+}
diff --git a/src/app_modules/admin/job/_view/detail.tsx b/src/app_modules/admin/job/_view/detail.tsx
index 107039a7..b22aeb33 100644
--- a/src/app_modules/admin/job/_view/detail.tsx
+++ b/src/app_modules/admin/job/_view/detail.tsx
@@ -9,11 +9,13 @@ import { useShallowEffect } from "@mantine/hooks";
import { clientLogger } from "@/util/clientLogger";
import { apiGetOneJobById } from "../lib/api_fetch_admin_job";
import CustomSkeleton from "@/app_modules/components/CustomSkeleton";
-import { AdminJob_DetailPublish } from "../_components/detail_status";
+import { AdminJob_DetailPublish } from "../_components/detail/publish";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import { AdminJob_DetailReview } from "../_components/detail/review";
export function AdminJob_ViewDetailPublish() {
- const param = useParams<{ id: string; status: string }>();
- const [data, setData] = useState();
+ const param = useParams<{ id: string }>();
+ const [data, setData] = useState