diff --git a/src/app_modules/admin/vote/child/table_reject/index.tsx b/src/app_modules/admin/vote/child/table_reject/index.tsx
index 467d3802..bb55b4b9 100644
--- a/src/app_modules/admin/vote/child/table_reject/index.tsx
+++ b/src/app_modules/admin/vote/child/table_reject/index.tsx
@@ -5,15 +5,16 @@ import {
AdminColor,
} from "@/app_modules/_global/color/color_pallet";
import { ComponentAdminGlobal_TitlePage } from "@/app_modules/admin/_admin_global/_component";
+import Admin_DetailButton from "@/app_modules/admin/_admin_global/_component/button/detail_button";
import { ComponentAdminGlobal_NotifikasiBerhasil } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_berhasil";
import { ComponentAdminGlobal_NotifikasiGagal } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_gagal";
import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/_admin_global/header_tamplate";
import ComponentAdminGlobal_IsEmptyData from "@/app_modules/admin/_admin_global/is_empty_data";
import CustomSkeleton from "@/app_modules/components/CustomSkeleton";
import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
+import { RouterAdminVote } from "@/lib/router_admin/router_admin_vote";
import { clientLogger } from "@/util/clientLogger";
import {
- Box,
Button,
Center,
Group,
@@ -21,15 +22,14 @@ import {
Pagination,
Paper,
ScrollArea,
- Spoiler,
Stack,
Table,
Text,
Textarea,
- TextInput,
+ TextInput
} from "@mantine/core";
import { useDisclosure, useShallowEffect } from "@mantine/hooks";
-import { IconBan, IconSearch } from "@tabler/icons-react";
+import { IconSearch } from "@tabler/icons-react";
import _ from "lodash";
import { useRouter } from "next/navigation";
import { useState } from "react";
@@ -127,7 +127,7 @@ function TableStatus() {
return data?.map((e, i) => (
- |
+ {/* |
- |
-
+ | */}
+ {/*
- |
+ */}
- {e?.Author?.Profile?.name}
+ {e?.Author?.username}
|
{e.title}
|
-
+ {/* |
- |
-
+ | */}
+ {/*
{e.Voting_DaftarNamaVote.map((v) => (
@@ -184,7 +184,7 @@ function TableStatus() {
))}
- |
+ */}
@@ -200,6 +200,12 @@ function TableStatus() {
}).format(new Date(e?.akhirVote))}
|
+
+
+
+
+
+ |
));
};
@@ -229,38 +235,25 @@ function TableStatus() {
) : (
-
+
- |
- Aksi
- |
-
- Catatan
- |
Author
|
Judul
|
-
- Deskripsi
- |
-
- Pilihan
- |
+
Mulai Vote
|
Selesai Vote
|
+
+ Aksi
+ |
{renderTableBody()}
diff --git a/src/app_modules/admin/vote/child/table_review/index.tsx b/src/app_modules/admin/vote/child/table_review/index.tsx
index 7e4b694e..eb83a1c6 100644
--- a/src/app_modules/admin/vote/child/table_review/index.tsx
+++ b/src/app_modules/admin/vote/child/table_review/index.tsx
@@ -53,6 +53,8 @@ import { apiGetAdminVotingByStatus } from "../../lib/api_fetch_admin_voting";
import _ from "lodash";
import CustomSkeleton from "@/app_modules/components/CustomSkeleton";
import ComponentAdminGlobal_IsEmptyData from "@/app_modules/admin/_admin_global/is_empty_data";
+import Admin_DetailButton from "@/app_modules/admin/_admin_global/_component/button/detail_button";
+import { RouterAdminVote } from "@/lib/router_admin/router_admin_vote";
export default function AdminVote_TableReview() {
return (
@@ -127,7 +129,7 @@ function TableStatus() {
async function onPageClick(p: any) {
setActivePage(p);
}
-
+
async function onLoadData() {
handleLoadData();
setIsLoading(false);
@@ -135,7 +137,6 @@ function TableStatus() {
setIsAdminVoting_TriggerReview(false);
}
-
async function onReject() {
const data = {
id: dataId,
@@ -216,7 +217,7 @@ function TableStatus() {
}
handleLoadData();
ComponentGlobal_NotifikasiBerhasil(res.message);
- closePublish()
+ closePublish();
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
@@ -248,27 +249,6 @@ function TableStatus() {
{e.title}
|
-
-
-
- {e.deskripsi}
-
-
- |
-
-
- {e.Voting_DaftarNamaVote.map((v) => (
-
- - {v.value}
-
- ))}
-
- |
@@ -286,6 +266,12 @@ function TableStatus() {
|
+
+
+
+ |
+
+ {/*
- |
+ */}
));
};
@@ -369,7 +355,6 @@ function TableStatus() {
verticalSpacing={"md"}
horizontalSpacing={"md"}
p={"md"}
- w={1500}
>
@@ -379,12 +364,6 @@ function TableStatus() {
|
Judul
|
-
- Deskripsi
- |
-
- Pilihan
- |
Mulai Vote
|
@@ -414,14 +393,14 @@ function TableStatus() {
-
+
- Apakah anda yakin ingin mempublish vote ini?
+
+ Apakah anda yakin ingin mempublish vote ini?
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/vote/component/button/comp_button_detail_review.tsx b/src/app_modules/admin/vote/component/button/comp_button_detail_review.tsx
new file mode 100644
index 00000000..303af99a
--- /dev/null
+++ b/src/app_modules/admin/vote/component/button/comp_button_detail_review.tsx
@@ -0,0 +1,228 @@
+import { MainColor } from "@/app_modules/_global/color";
+import { AdminColor } from "@/app_modules/_global/color/color_pallet";
+import {
+ ComponentGlobal_NotifikasiBerhasil,
+ ComponentGlobal_NotifikasiGagal,
+ ComponentGlobal_NotifikasiPeringatan,
+} from "@/app_modules/_global/notif_global";
+import adminNotifikasi_funCreateToUser from "@/app_modules/admin/notifikasi/fun/create/fun_create_notif_user";
+import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
+import { IRealtimeData } from "@/lib/global_state";
+import { Button, Group, Modal, Stack, Textarea, Title } from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconBan, IconCheck } from "@tabler/icons-react";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { WibuRealtime } from "wibu-pkg";
+import { AdminVote_funEditStatusPublishById } from "../../fun/edit/fun_edit_status_publish_by_id";
+import { AdminEvent_funEditCatatanById } from "../../fun/edit/fun_edit_status_reject_by_id";
+
+interface Props {
+ data: MODEL_VOTING;
+}
+
+export function AdminVoting_ComponentDetailReviewButton({ data }: Props) {
+ const router = useRouter();
+ const [openedReject, { open: openReject, close: closeReject }] =
+ useDisclosure(false);
+ const [openedPublish, { open: openPublish, close: closePublish }] =
+ useDisclosure(false);
+ const [catatan, setCatatan] = useState("");
+ const [isLoadingPublish, setLoadingPublish] = useState(false);
+ const [isLoadingReject, setLoadingReject] = useState(false);
+
+ async function handlePublish() {
+ const hariIni = new Date();
+ const cekHari = moment(data.awalVote).diff(hariIni, "days");
+
+ if (cekHari < 0)
+ return ComponentGlobal_NotifikasiPeringatan("Tanggal Voting Lewat");
+
+ try {
+ setLoadingPublish(true);
+ const res = await AdminVote_funEditStatusPublishById(data.id);
+ if (res.status === 200) {
+ const dataNotifikasi: IRealtimeData = {
+ appId: res.data?.id as string,
+ status: res.data?.Voting_Status?.name as any,
+ userId: res.data?.authorId as any,
+ pesan: res.data?.title as any,
+ kategoriApp: "VOTING",
+ title: "Voting publish",
+ };
+ const notif = await adminNotifikasi_funCreateToUser({
+ data: dataNotifikasi as any,
+ });
+ if (notif.status === 201) {
+ WibuRealtime.setData({
+ type: "notification",
+ pushNotificationTo: "USER",
+ dataMessage: dataNotifikasi,
+ });
+ WibuRealtime.setData({
+ type: "trigger",
+ pushNotificationTo: "USER",
+ dataMessage: dataNotifikasi,
+ });
+ }
+
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ closePublish();
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ } catch (error) {
+ console.log("Error get data voting", error);
+ setLoadingPublish(false);
+ }
+ }
+
+ async function handleReject() {
+ const fixData = {
+ id: data.id,
+ catatan: catatan,
+ };
+
+ try {
+ setLoadingReject(true);
+ const res = await AdminEvent_funEditCatatanById(fixData as any);
+ if (res.status === 200) {
+ const dataNotifikasi: IRealtimeData = {
+ appId: res.data?.id as string,
+ status: res.data?.Voting_Status?.name as any,
+ userId: res.data?.authorId as any,
+ pesan: res.data?.title as any,
+ kategoriApp: "VOTING",
+ title: "Voting anda di tolak !",
+ };
+
+ const notif = await adminNotifikasi_funCreateToUser({
+ data: dataNotifikasi as any,
+ });
+
+ if (notif.status === 201) {
+ WibuRealtime.setData({
+ type: "notification",
+ pushNotificationTo: "USER",
+ dataMessage: dataNotifikasi,
+ });
+ }
+
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ closeReject();
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ } catch (error) {
+ setLoadingReject(false);
+ console.error("Error update voting admin", error);
+ }
+ }
+
+ return (
+ <>
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ openPublish();
+ }}
+ >
+ Publish
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ openReject();
+ }}
+ >
+ Reject
+
+
+
+ {/* MODEL PUBLISH */}
+
+
+
+ Apakah anda yakin ingin mempublish vote ini?
+
+
+ closePublish()}>
+ Batal
+
+ {
+ handlePublish();
+ }}
+ style={{
+ backgroundColor: MainColor.green,
+ }}
+ >
+ Simpan
+
+
+
+
+
+ {/* MODEL REJECT */}
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/vote/component/detail.tsx b/src/app_modules/admin/vote/component/comp_detail.tsx
similarity index 100%
rename from src/app_modules/admin/vote/component/detail.tsx
rename to src/app_modules/admin/vote/component/comp_detail.tsx
diff --git a/src/app_modules/admin/vote/component/comp_publish.tsx b/src/app_modules/admin/vote/component/comp_detail_publish.tsx
similarity index 85%
rename from src/app_modules/admin/vote/component/comp_publish.tsx
rename to src/app_modules/admin/vote/component/comp_detail_publish.tsx
index 11acadf1..0796df9f 100644
--- a/src/app_modules/admin/vote/component/comp_publish.tsx
+++ b/src/app_modules/admin/vote/component/comp_detail_publish.tsx
@@ -2,7 +2,7 @@
import { SimpleGrid, Title } from "@mantine/core";
import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle";
-import { AdminVoting_ComponentDetail } from "./detail";
+import { AdminVoting_ComponentDetail } from "./comp_detail";
import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
import { AdminVoting_ComponentKontributorList } from "./comp_kontributor";
@@ -13,7 +13,7 @@ export function AdminVoting_ComponentDetailPublish({ data }: Props) {
return (
-
+
diff --git a/src/app_modules/admin/vote/component/comp_detail_reject.tsx b/src/app_modules/admin/vote/component/comp_detail_reject.tsx
new file mode 100644
index 00000000..b865f695
--- /dev/null
+++ b/src/app_modules/admin/vote/component/comp_detail_reject.tsx
@@ -0,0 +1,51 @@
+"use client";
+
+import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
+import { Grid, SimpleGrid, Text } from "@mantine/core";
+import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle";
+import { AdminVoting_ComponentDetail } from "./comp_detail";
+import { AdminVoting_ComponentDetailRejectButton } from "./button/comp_button_detail_reject";
+import { useState } from "react";
+
+interface Props {
+ data: MODEL_VOTING;
+}
+export function AdminVoting_ComponentDetailReject({ data }: Props) {
+ const [newData, setNewData] = useState(data);
+
+ return (
+
+
+
+
+ {
+ setNewData({
+ ...newData,
+ catatan: val,
+ });
+ }}
+ />
+
+
+ );
+}
+
+function ReportNote({ catatan }: { catatan: string }) {
+ return (
+ <>
+
+
+ Catatan report
+
+
+ :
+
+
+ {catatan}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/vote/component/comp_detail_review.tsx b/src/app_modules/admin/vote/component/comp_detail_review.tsx
new file mode 100644
index 00000000..22b758b0
--- /dev/null
+++ b/src/app_modules/admin/vote/component/comp_detail_review.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
+import { Button, Group, SimpleGrid } from "@mantine/core";
+import { Admin_ComponentBoxStyle } from "../../_admin_global/_component/comp_admin_boxstyle";
+import { AdminVoting_ComponentDetail } from "./comp_detail";
+import { AdminVoting_ComponentDetailReviewButton } from "./button/comp_button_detail_review";
+
+interface Props {
+ data: MODEL_VOTING;
+}
+export function AdminVoting_ComponentDetailReview({ data }: Props) {
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/src/app_modules/admin/vote/detail/detail_voting.tsx b/src/app_modules/admin/vote/detail/detail_voting.tsx
index 5eef6e55..e4ff6c96 100644
--- a/src/app_modules/admin/vote/detail/detail_voting.tsx
+++ b/src/app_modules/admin/vote/detail/detail_voting.tsx
@@ -8,8 +8,10 @@ import { useParams } from "next/navigation";
import { useState } from "react";
import AdminGlobal_ComponentBackButton from "../../_admin_global/back_button";
import ComponentAdminGlobal_HeaderTamplate from "../../_admin_global/header_tamplate";
-import { AdminVoting_ComponentDetailPublish } from "../component/comp_publish";
+import { AdminVoting_ComponentDetailPublish } from "../component/comp_detail_publish";
import { apiGetOneVotingById } from "../lib/api_fetch_admin_voting";
+import { AdminVoting_ComponentDetailReview } from "../component/comp_detail_review";
+import { AdminVoting_ComponentDetailReject } from "../component/comp_detail_reject";
export function AdminVote_DetailVoting() {
const param = useParams<{ id: string }>();
@@ -50,14 +52,12 @@ export function AdminVote_DetailVoting() {
{data && data.voting_StatusId === "1" ? (
) : data && data.voting_StatusId === "2" ? (
- "detail review"
+
) : data && data.voting_StatusId === "4" ? (
- "detail reject"
+
) : (
""
)}
-
- {/* {JSON.stringify(data, null, 2)} */}
>
);