{
- setDataAdmin(val.data)
- setPageAdmin(val.nPage)
+ setDataAdmin(val.data);
+ setPageAdmin(val.nPage);
}}
/>
@@ -74,48 +78,66 @@ export default function AdminDeveloper({
);
}
-function NewTableUser({ data, nPage, onUpdated }: { data: any, nPage: any, onUpdated: (val: any) => void }) {
- const [isChoosePage, setChoosePage] = useState(1)
- const [dataUser, setDataUser] = useState(data)
- const [isNPage, setNPage] = useState(nPage)
- const [isSearch, setSearch] = useState('')
+function NewTableUser({
+ data,
+ nPage,
+ onUpdated,
+}: {
+ data: any;
+ nPage: any;
+ onUpdated: (val: any) => void;
+}) {
+ const [isChoosePage, setChoosePage] = useState(1);
+ const [dataUser, setDataUser] = useState(data);
+ const [isNPage, setNPage] = useState(nPage);
+ const [isSearch, setSearch] = useState("");
async function onPageClick(p: any) {
- setChoosePage(p)
- const loadData = await adminDeveloper_funGetListAllUser({ search: isSearch, page: p })
- setDataUser(loadData.data)
- setNPage(loadData.nPage)
+ setChoosePage(p);
+ const loadData = await adminDeveloper_funGetListAllUser({
+ search: isSearch,
+ page: p,
+ });
+ setDataUser(loadData.data);
+ setNPage(loadData.nPage);
}
async function onSearch(s: any) {
- setSearch(s)
- setChoosePage(1)
- const loadData = await adminDeveloper_funGetListAllUser({ search: s, page: 1 })
- setDataUser(loadData.data)
- setNPage(loadData.nPage)
+ setSearch(s);
+ setChoosePage(1);
+ const loadData = await adminDeveloper_funGetListAllUser({
+ search: s,
+ page: 1,
+ });
+ setDataUser(loadData.data);
+ setNPage(loadData.nPage);
}
async function onAccess(id: string) {
- const upd = await adminDeveloper_funEditUserAksesById(id, "2")
+ const upd = await adminDeveloper_funEditUserAksesById(id, "2");
if (upd.status == 200) {
- const loadData = await adminDeveloper_funGetListAllUser({ search: isSearch, page: isChoosePage })
- setDataUser(loadData.data)
- setNPage(loadData.nPage)
- const loadDataAdmin = await adminDeveloper_funGetListAllAdmin({ page: 1 })
- onUpdated(loadDataAdmin)
- ComponentGlobal_NotifikasiBerhasil(upd.message)
+ const loadData = await adminDeveloper_funGetListAllUser({
+ search: isSearch,
+ page: isChoosePage,
+ });
+ setDataUser(loadData.data);
+ setNPage(loadData.nPage);
+ const loadDataAdmin = await adminDeveloper_funGetListAllAdmin({
+ page: 1,
+ });
+ onUpdated(loadDataAdmin);
+ ComponentGlobal_NotifikasiBerhasil(upd.message);
} else {
- ComponentGlobal_NotifikasiGagal(upd.message)
+ ComponentGlobal_NotifikasiGagal(upd.message);
}
}
useEffect(() => {
- setDataUser(data)
- setNPage(nPage)
- setSearch('')
- setChoosePage(1)
- }, [data, nPage])
-
+ setDataUser(data);
+ setNPage(nPage);
+ setSearch("");
+ setChoosePage(1);
+ }, [data, nPage]);
return (
<>
@@ -132,7 +154,7 @@ function NewTableUser({ data, nPage, onUpdated }: { data: any, nPage: any, onUpd
radius={"xl"}
placeholder="Masukan username"
onChange={(val) => {
- onSearch(val.currentTarget.value)
+ onSearch(val.currentTarget.value);
}}
/>
@@ -168,9 +190,7 @@ function NewTableUser({ data, nPage, onUpdated }: { data: any, nPage: any, onUpd
|
-
@@ -183,7 +203,7 @@ function NewTableUser({ data, nPage, onUpdated }: { data: any, nPage: any, onUpd
{
- onPageClick(val)
+ onPageClick(val);
}}
total={isNPage}
/>
@@ -191,50 +211,67 @@ function NewTableUser({ data, nPage, onUpdated }: { data: any, nPage: any, onUpd
>
- )
+ );
}
-function NewTableAdmin({ data, nPage, onUpdated }: { data: any, nPage: any, onUpdated: (val: any) => void }) {
- const [isChoosePage, setChoosePage] = useState(1)
- const [dataAdmin, setDataAdmin] = useState(data)
- const [isNPage, setNPage] = useState(nPage)
- const [isSearch, setSearch] = useState('')
+function NewTableAdmin({
+ data,
+ nPage,
+ onUpdated,
+}: {
+ data: any;
+ nPage: any;
+ onUpdated: (val: any) => void;
+}) {
+ const [isChoosePage, setChoosePage] = useState(1);
+ const [dataAdmin, setDataAdmin] = useState(data);
+ const [isNPage, setNPage] = useState(nPage);
+ const [isSearch, setSearch] = useState("");
async function onPageClick(p: any) {
- setChoosePage(p)
- const loadData = await adminDeveloper_funGetListAllAdmin({ search: isSearch, page: p })
- setDataAdmin(loadData.data)
- setNPage(loadData.nPage)
+ setChoosePage(p);
+ const loadData = await adminDeveloper_funGetListAllAdmin({
+ search: isSearch,
+ page: p,
+ });
+ setDataAdmin(loadData.data);
+ setNPage(loadData.nPage);
}
async function onSearch(s: any) {
- setSearch(s)
- setChoosePage(1)
- const loadData = await adminDeveloper_funGetListAllAdmin({ search: s, page: 1 })
- setDataAdmin(loadData.data)
- setNPage(loadData.nPage)
+ setSearch(s);
+ setChoosePage(1);
+ const loadData = await adminDeveloper_funGetListAllAdmin({
+ search: s,
+ page: 1,
+ });
+ setDataAdmin(loadData.data);
+ setNPage(loadData.nPage);
}
async function onAccess(id: string) {
- const upd = await adminDeveloper_funEditUserAksesById(id, "1")
+ const upd = await adminDeveloper_funEditUserAksesById(id, "1");
if (upd.status == 200) {
- const loadData = await adminDeveloper_funGetListAllAdmin({ search: isSearch, page: isChoosePage })
- setDataAdmin(loadData.data)
- setNPage(loadData.nPage)
- const loadDataUser = await adminDeveloper_funGetListAllUser({ page: 1 })
- onUpdated(loadDataUser)
- ComponentGlobal_NotifikasiBerhasil(upd.message)
+ const loadData = await adminDeveloper_funGetListAllAdmin({
+ search: isSearch,
+ page: isChoosePage,
+ });
+ setDataAdmin(loadData.data);
+ setNPage(loadData.nPage);
+ const loadDataUser = await adminDeveloper_funGetListAllUser({ page: 1 });
+ onUpdated(loadDataUser);
+ ComponentGlobal_NotifikasiBerhasil(upd.message);
} else {
- ComponentGlobal_NotifikasiGagal(upd.message)
+ ComponentGlobal_NotifikasiGagal(upd.message);
}
}
useEffect(() => {
- setDataAdmin(data)
- setNPage(nPage)
- setSearch('')
- setChoosePage(1)
- }, [data, nPage])
+ setDataAdmin(data);
+ setNPage(nPage);
+ setSearch("");
+ setChoosePage(1);
+ }, [data, nPage]);
return (
<>
@@ -251,7 +288,7 @@ function NewTableAdmin({ data, nPage, onUpdated }: { data: any, nPage: any, onUp
radius={"xl"}
placeholder="Masukan username"
onChange={(val) => {
- onSearch(val.currentTarget.value)
+ onSearch(val.currentTarget.value);
}}
/>
@@ -287,7 +324,9 @@ function NewTableAdmin({ data, nPage, onUpdated }: { data: any, nPage: any, onUp
|
- onAccess(v.id)}
>
Delete Access
@@ -302,7 +341,7 @@ function NewTableAdmin({ data, nPage, onUpdated }: { data: any, nPage: any, onUp
{
- onPageClick(val)
+ onPageClick(val);
}}
total={isNPage}
/>
@@ -310,11 +349,9 @@ function NewTableAdmin({ data, nPage, onUpdated }: { data: any, nPage: any, onUp
>
- )
+ );
}
-
-
function TableAdmin({
dataAdmin,
setDataAdmin,
diff --git a/src/app_modules/admin/donasi/component/tampilan_detail_cerita.tsx b/src/app_modules/admin/donasi/component/tampilan_detail_cerita.tsx
new file mode 100644
index 00000000..d1b171ff
--- /dev/null
+++ b/src/app_modules/admin/donasi/component/tampilan_detail_cerita.tsx
@@ -0,0 +1,34 @@
+"use client"
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import { MODEL_CERITA_DONASI } from "@/app_modules/donasi/model/interface";
+import { Paper, Stack, Title, Box, AspectRatio, Image, Text } from "@mantine/core";
+
+export default function ComponentAdminDonasi_CeritaPenggalangDana({
+ cerita,
+}: {
+ cerita: MODEL_CERITA_DONASI;
+}) {
+ return (
+ <>
+ {/* {JSON.stringify(cerita, null, 2)} */}
+
+
+ Cerita Penggalang Dana
+ {cerita.pembukaan}
+
+
+
+
+
+
+
+ {cerita.cerita}
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/app_modules/admin/donasi/component/tampilan_detail_donasi.tsx b/src/app_modules/admin/donasi/component/tampilan_detail_donasi.tsx
new file mode 100644
index 00000000..42c28a04
--- /dev/null
+++ b/src/app_modules/admin/donasi/component/tampilan_detail_donasi.tsx
@@ -0,0 +1,50 @@
+"use client"
+
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
+import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
+import { Paper, Stack, Title, Box, AspectRatio, Group, Image, Text } from "@mantine/core";
+
+export default function ComponentAdminDonasi_TampilanDetailDonasi({ donasi }: { donasi: MODEL_DONASI }) {
+ return (
+ <>
+
+
+ Detail Data Donasi
+
+
+
+
+
+
+
+
+ {donasi.title}
+
+ Durasi: {donasi.DonasiMaster_Durasi.name} hari
+
+
+
+
+
+ Dana dibutuhkan
+
+
+
+
+
+ Kategori
+
+ {donasi.DonasiMaster_Ketegori.name}
+
+
+
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/app_modules/admin/donasi/detail_table/detail_reject.tsx b/src/app_modules/admin/donasi/detail/detail_reject.tsx
similarity index 66%
rename from src/app_modules/admin/donasi/detail_table/detail_reject.tsx
rename to src/app_modules/admin/donasi/detail/detail_reject.tsx
index a90cfe7a..7fcca317 100644
--- a/src/app_modules/admin/donasi/detail_table/detail_reject.tsx
+++ b/src/app_modules/admin/donasi/detail/detail_reject.tsx
@@ -24,22 +24,27 @@ import { AdminDonasi_funUpdateCatatanReject } from "../fun/update/fun_update_cat
import { NotifBerhasil } from "@/app_modules/donasi/component/notifikasi/notif_berhasil";
import { NotifGagal } from "@/app_modules/donasi/component/notifikasi/notif_gagal";
import { AdminDonasi_getOneById } from "../fun/get/get_one_by_id";
+import ComponentGlobal_InputCountDown from "@/app_modules/component_global/input_countdown";
+import ComponentGlobalAdmin_BackButton from "../../component_global/back_button";
+import ComponentAdminDonasi_TampilanDetailDonasi from "../component/tampilan_detail_donasi";
+import ComponentAdminDonasi_CeritaPenggalangDana from "../component/tampilan_detail_cerita";
export default function AdminDonasi_DetailReject({
dataReject,
}: {
dataReject: MODEL_DONASI;
}) {
- const [donasi, setDonasi] = useState(dataReject);
+ const [data, setData] = useState(dataReject);
return (
<>
+
-
-
+
+
>
@@ -66,11 +73,11 @@ function ButtonOnHeader({
donasiId: string;
setDonasi: any;
}) {
- const [catat, setCatat] = useState(catatan);
+ const [report, setReport] = useState(catatan);
const [opened, { open, close }] = useDisclosure(false);
async function onUpdate() {
- await AdminDonasi_funUpdateCatatanReject(donasiId, catat).then(
+ await AdminDonasi_funUpdateCatatanReject(donasiId, report).then(
async (res) => {
if (res.status === 200) {
NotifBerhasil(res.message);
@@ -87,26 +94,52 @@ function ButtonOnHeader({
<>
-
+
Tambah catatan
-
+
+
+ )}
+
+
+ {images ? (
+
+
+
+
+
+ ) : (
+ ""
+ )}
+
+
+ onSave({
+ router: router,
+ value: value,
+ donasiId: donasiId,
+ file: file as any,
+ nilaiNominal: nilaiNominal,
+ onSuccess1: (val: any) => onSuccess(val),
+ })
+ }
+ >
+ Simpan
+
+
+
+
+ >
+ );
+}
+
+async function onSave({
+ router,
+ value,
+ donasiId,
+ file,
+ nilaiNominal,
+
+ onSuccess1,
+}: {
+ router: AppRouterInstance;
+ value: any;
+ donasiId: string;
+ file: FormData;
+ nilaiNominal: number;
+ onSuccess1: (val: any) => void;
+}) {
+ const body = {
+ donasiId: donasiId,
+ nominalCair: nilaiNominal,
+ title: value.title,
+ deskripsi: value.deskripsi,
+ };
+
+ if (_.values(body).includes(""))
+ return ComponentGlobalAdmin_NotifikasiPeringatan("Lengkapi Data");
+ if (!file)
+ return ComponentGlobalAdmin_NotifikasiPeringatan(
+ "Lampirkan Bukti Transfer"
+ );
+
+ const gambar = new FormData();
+ gambar.append("file", file as any);
+
+ await AdminDonasi_funCreatePencairanDana(body as any, gambar).then(
+ async (res) => {
+ if (res.status === 200) {
+ await AdminDonasi_AkumulasiPencairanById(
+ body.donasiId as any,
+ body.nominalCair as any
+ ).then(async (res) => {
+ if (res.status === 200) {
+ const loadData = await AdminDonasi_getOneById(donasiId);
+ onSuccess1(loadData);
+ ComponentGlobalAdmin_NotifikasiBerhasil(res.message);
+ } else {
+ ComponentGlobalAdmin_NotifikasiGagal(res.message);
+ }
+ });
+ } else {
+ NotifGagal(res.message);
+ }
+ }
+ );
+}
diff --git a/src/app_modules/admin/donasi/detail_table/publish/proses_transaksi.tsx b/src/app_modules/admin/donasi/detail/publish/proses_transaksi.tsx
similarity index 97%
rename from src/app_modules/admin/donasi/detail_table/publish/proses_transaksi.tsx
rename to src/app_modules/admin/donasi/detail/publish/proses_transaksi.tsx
index 225cf83d..3797a6fe 100644
--- a/src/app_modules/admin/donasi/detail_table/publish/proses_transaksi.tsx
+++ b/src/app_modules/admin/donasi/detail/publish/proses_transaksi.tsx
@@ -28,7 +28,7 @@ import { NotifGagal } from "@/app_modules/donasi/component/notifikasi/notif_gaga
import { AdminDonasi_getListStatusInvoiceProses } from "../../fun/get/get_list_status_invoice_proses";
import { AdminDonasi_funUpdateProgresDanTerkumpul } from "../../fun/update/fun_update_progres_dan_terkumpul";
import { useDisclosure } from "@mantine/hooks";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
export default function AdminDonasi_ProsesTransaksi({
listProses,
@@ -183,7 +183,7 @@ function ModalBuktiTransfer({ imageId }: { imageId: string }) {
>
diff --git a/src/app_modules/admin/donasi/detail_table/detail_review.tsx b/src/app_modules/admin/donasi/detail_table/detail_review.tsx
deleted file mode 100644
index 94c52542..00000000
--- a/src/app_modules/admin/donasi/detail_table/detail_review.tsx
+++ /dev/null
@@ -1,206 +0,0 @@
-"use client";
-
-import {
- AspectRatio,
- Button,
- Divider,
- Group,
- Image,
- Modal,
- Paper,
- Progress,
- SimpleGrid,
- Stack,
- Text,
- TextInput,
- Textarea,
- Title,
-} from "@mantine/core";
-import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
-import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
-import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
-import {
- MODEL_CERITA_DONASI,
- MODEL_DONASI,
-} from "@/app_modules/donasi/model/interface";
-import { useState } from "react";
-import { useRouter } from "next/navigation";
-import { useDisclosure } from "@mantine/hooks";
-import { AdminDonasi_funUpdateStatusPublish } from "../fun/update/fun_status_publish";
-import { NotifBerhasil } from "@/app_modules/donasi/component/notifikasi/notif_berhasil";
-import { NotifPeringatan } from "@/app_modules/donasi/component/notifikasi/notif_peringatan";
-import toast from "react-simple-toasts";
-import { AdminDonasi_funUpdateStatusReject } from "../fun/update/fun_status_reject";
-import _ from "lodash";
-import { NotifGagal } from "@/app_modules/donasi/component/notifikasi/notif_gagal";
-
-export default function AdminDonasi_DetailReview({
- dataReview,
-}: {
- dataReview: MODEL_DONASI;
-}) {
- const [donasi, setDonasi] = useState(dataReview);
- return (
- <>
-
-
-
-
-
-
-
- >
- );
-}
-
-function ButtonOnHeader({ donasi }: { donasi: MODEL_DONASI }) {
- const router = useRouter();
- const [opened, { open, close }] = useDisclosure(false);
- const [catatan, setCatatan] = useState("");
-
- async function onPulish() {
- await AdminDonasi_funUpdateStatusPublish(donasi.id, "1").then((res) => {
- if (res.status === 200) {
- NotifBerhasil("Berhasil Mengubah Status Donasi");
- router.back();
- } else {
- NotifPeringatan("Gagal Mengubah Status Donasi");
- }
- });
- }
-
- async function onReject() {
- if (catatan === "") return NotifPeringatan("Lengkapi Alasan Penolakan");
-
- await AdminDonasi_funUpdateStatusReject(donasi.id, "4", catatan).then(
- (res) => {
- if (res.status === 200) {
- NotifBerhasil(res.message);
- router.back();
- } else {
- NotifGagal(res.message);
- }
- }
- );
- }
-
- return (
- <>
-
-
-
- onPulish()}
- >
- Publish
-
-
- Reject
-
-
-
-
-
-
-
-
-
- >
- );
-}
-
-function TampilanDetailDonasi({ donasi }: { donasi: MODEL_DONASI }) {
- return (
- <>
-
-
-
-
-
-
-
-
-
- {donasi.title}
-
- Durasi: {donasi.DonasiMaster_Durasi.name} hari
-
-
-
-
-
- Dana dibutuhkan
-
-
-
-
-
- Kategori
-
- {donasi.DonasiMaster_Ketegori.name}
-
-
-
-
-
-
- >
- );
-}
-
-function CeritaPenggalangDana({ cerita }: { cerita: MODEL_CERITA_DONASI }) {
- return (
- <>
-
- Cerita Penggalang Dana
- {cerita.pembukaan}
-
-
-
-
-
- {cerita.cerita}
-
- >
- );
-}
diff --git a/src/app_modules/admin/donasi/detail_table/publish/detail_publish.tsx b/src/app_modules/admin/donasi/detail_table/publish/detail_publish.tsx
deleted file mode 100644
index 3d5e4986..00000000
--- a/src/app_modules/admin/donasi/detail_table/publish/detail_publish.tsx
+++ /dev/null
@@ -1,406 +0,0 @@
-"use client";
-
-import {
- AspectRatio,
- Badge,
- Box,
- Button,
- Center,
- Divider,
- Grid,
- Group,
- Image,
- Modal,
- Pagination,
- Paper,
- Progress,
- ScrollArea,
- SimpleGrid,
- Spoiler,
- Stack,
- Table,
- Text,
- TextInput,
- Title,
-} from "@mantine/core";
-import ComponentAdminDonasi_TombolKembali from "../../component/tombol_kembali";
-import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
-import {
- IconClover,
- IconMessageChatbot,
- IconMoneybag,
-} from "@tabler/icons-react";
-import router from "next/router";
-import moment from "moment";
-import {
- MODEL_DONASI,
- MODEL_DONASI_INVOICE,
- MODEL_DONASI_PENCAIRAN_DANA,
-} from "@/app_modules/donasi/model/interface";
-import { useState } from "react";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
-import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
-import _ from "lodash";
-import { useRouter } from "next/navigation";
-import { useDisclosure, useInterval, useShallowEffect } from "@mantine/hooks";
-import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
-import { AdminDonasi_getOneById } from "../../fun/get/get_one_by_id";
-
-export default function AdminDonasi_DetailPublish({
- dataPublish,
- listDonatur,
- countDonatur,
- listPencairan,
-}: {
- dataPublish: MODEL_DONASI;
- listDonatur: any[];
- countDonatur: number;
- listPencairan: MODEL_DONASI_PENCAIRAN_DANA[];
-}) {
- const [donasi, setDonasi] = useState(dataPublish);
- const [donatur, setDoanutur] = useState(listDonatur);
- const interval = useInterval(() => reloadData(donasi.id), 5000);
- const [pencairan, setPencairan] = useState(listPencairan);
-
- useShallowEffect(() => {
- interval.start();
- }, []);
-
- async function reloadData(donasiId: string) {
- const data = await AdminDonasi_getOneById(donasiId);
- setDonasi(data as any);
- return data;
- }
- return (
- <>
- {/* {JSON.stringify(pencairan, null, 2)} */}
-
-
-
-
-
-
- >
- );
-}
-
-function TampilanDetailDonasi({
- donasi,
- countDonatur,
-}: {
- donasi: MODEL_DONASI;
- countDonatur: number;
-}) {
- const [opened, { open, close }] = useDisclosure(false);
- const router = useRouter();
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
- {donasi.title}
-
- Penggalang Dana
-
- {donasi.Author.username}
-
-
-
- Durasi
-
- {donasi.DonasiMaster_Durasi.name} hari
-
-
-
-
- Dana dibutuhkan
-
-
-
-
-
- Kategori
-
- {donasi.DonasiMaster_Ketegori.name}
-
-
-
- Total donatur
-
- {countDonatur}
-
-
-
- Progres
-
- {donasi.progres} %
-
-
-
- Dana terkumpul
-
-
-
-
- {/* Pencairan Dana */}
-
-
-
-
-
-
-
-
- Pencairan Dana
-
-
-
-
- Total Dana Dicairkan
-
-
-
-
-
-
-
- Bank Tujuan
- {donasi.namaBank}
-
-
-
-
-
-
- Akumulasi Pencairan
-
- {donasi.akumulasiPencairan} Kali
-
-
-
-
-
- Nomor Rekening
- {donasi.rekening}
-
-
-
-
-
- router.push(
- RouterAdminDonasi.pencairan_dana + `${donasi.id}`
- )
- }
- >
- Cairkan Dana
-
-
-
-
-
-
-
-
-
-
- >
- );
-}
-
-function PencairanDana() {
- return (
- <>
-
-
-
- >
- );
-}
-
-//######################## LIST DONATUR #####################//
-function TampilanListDonatur({
- donatur,
- donasi,
-}: {
- donatur: MODEL_DONASI_INVOICE[];
- donasi: MODEL_DONASI;
-}) {
- const router = useRouter();
- const tableRows = donatur.map((e, i) => (
- |
- | {e.Author.username} |
-
-
- |
- {`${moment(e.createdAt).format("ll")}`} |
-
-
-
- {e.DonasiMaster_StatusInvoice.name}
-
-
- |
-
- ));
-
- return (
- <>
-
-
-
- Update List Donatur
-
- router.push(RouterAdminDonasi.proses_transaksi + `${donasi.id}`)
- }
- >
- Proses transaksi
-
-
-
- {_.isEmpty(donatur) ? (
-
- BELUM ADA DONATUR
-
- ) : (
-
-
-
-
- | Nama Donatur |
- Jumlah Donasi |
- Tanggal |
-
- Status
- |
- {/*
- Aksi
- | */}
-
-
- {tableRows}
-
-
- )}
-
- {/*
- {[{ id: 1 }, { id: 2 },{ id: 3 }, { id: 4 }].map((e, i) => (
- Status
- ))}
- */}
-
-
- >
- );
-}
-
-//######################## LIST PENCAIRAN #####################//
-function TampilanListPencairan({
- pencairan,
-}: {
- pencairan: MODEL_DONASI_PENCAIRAN_DANA[];
-}) {
- const [opened, { open, close }] = useDisclosure(false);
- const [gambarId, setGambarId] = useState("");
-
- const rowTable = pencairan.map((e) => (
-
- |
-
- |
- {moment(e.createdAt).format("ll")} |
-
- {e.title}
- |
-
-
-
- {e.deskripsi}
-
-
- |
-
- {
-
-
- {
- open();
- setGambarId(e.imagesId);
- }}
- >
- Detail
-
-
-
- }
- |
-
- ));
-
- return (
- <>
-
-
-
-
-
-
-
- Rincian Pencairan Dana
- {/* {JSON.stringify(pencairan, null, 2)} */}
- {_.isEmpty(pencairan) ? (
-
- BELUM ADA PENCAIRAN DANA
-
- ) : (
-
-
-
-
- | Nominal |
- Tanggal |
- Judul |
-
- Deskripsi
- |
-
- Bukti Transfer
- |
-
-
- {rowTable}
-
-
- )}
-
- >
- );
-}
diff --git a/src/app_modules/admin/donasi/detail_table/publish/pencairan_dana.tsx b/src/app_modules/admin/donasi/detail_table/publish/pencairan_dana.tsx
deleted file mode 100644
index b11626df..00000000
--- a/src/app_modules/admin/donasi/detail_table/publish/pencairan_dana.tsx
+++ /dev/null
@@ -1,196 +0,0 @@
-"use client";
-
-import {
- AspectRatio,
- Button,
- Center,
- FileButton,
- Image,
- NumberInput,
- Paper,
- Stack,
- TextInput,
- Textarea,
- Title,
-} from "@mantine/core";
-import ComponentAdminDonasi_TombolKembali from "../../component/tombol_kembali";
-import { useState } from "react";
-import { IconCamera } from "@tabler/icons-react";
-import ComponentDonasi_NotedBox from "@/app_modules/donasi/component/noted_box";
-import { useRouter } from "next/navigation";
-import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
-import { MODEL_DONASI_PENCAIRAN_DANA } from "@/app_modules/donasi/model/interface";
-import _ from "lodash";
-import { NotifPeringatan } from "@/app_modules/donasi/component/notifikasi/notif_peringatan";
-import { AdminDonasi_funCreatePencairanDana } from "../../fun/create/fun_create_pencairan_dana";
-import { NotifBerhasil } from "@/app_modules/donasi/component/notifikasi/notif_berhasil";
-import { NotifGagal } from "@/app_modules/donasi/component/notifikasi/notif_gagal";
-import { AdminDonasi_AkumulasiPencairanById } from "../../fun/update/fun_update_akumulasi_pencairan";
-
-export default function AdminDonasi_PencairanDana({
- donasiId,
-}: {
- donasiId: string;
-}) {
- const router = useRouter();
- const [file, setFile] = useState(null);
- const [images, setImages] = useState();
- const [value, setValue] = useState({
- title: "",
- deskripsi: "",
- nilai: "",
- });
- return (
- <>
-
-
-
-
-
- Form Pencairan Dana
-
-
- {
- setValue({
- ...value,
- nilai: val.target.value,
- });
- }}
- />
- {
- setValue({
- ...value,
- title: val.target.value,
- });
- }}
- />
-
-
-
-
- >
- );
-}
-
-async function onSave(
- router: AppRouterInstance,
- value: any,
- donasiId: string,
- file: FormData
-) {
- const body = {
- donasiId: donasiId,
- nominalCair: value.nilai,
- title: value.title,
- deskripsi: value.deskripsi,
- };
-
- // console.log(body);
-
- if (_.values(body).includes("")) return NotifPeringatan("Lengkapi Data");
- if (!file) return NotifPeringatan("Lampirkan Bukti Transfer");
-
- const gambar = new FormData();
- gambar.append("file", file as any);
-
- await AdminDonasi_funCreatePencairanDana(body as any, gambar).then(
- async (res) => {
- if (res.status === 200) {
- await AdminDonasi_AkumulasiPencairanById(
- body.donasiId as any,
- body.nominalCair as any
- ).then((res) => {
- if (res.status === 200) {
- NotifBerhasil(res.message);
- router.back();
- } else {
- NotifGagal(res.message);
- }
- });
- } else {
- NotifGagal(res.message);
- }
- }
- );
-}
diff --git a/src/app_modules/admin/donasi/fun/create/fun_create_kategori.ts b/src/app_modules/admin/donasi/fun/create/fun_create_kategori.ts
new file mode 100644
index 00000000..46995b36
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/create/fun_create_kategori.ts
@@ -0,0 +1,25 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { RouterAdminDonasi } from "@/app/lib/router_admin/router_admin_donasi";
+import { revalidatePath } from "next/cache";
+
+export default async function adminDonasi_funCreateKategori({
+ newKategori,
+}: {
+ newKategori: string;
+}) {
+ const getCount = await prisma.donasiMaster_Kategori.findMany({});
+ const idKategori = getCount.length + 1;
+
+ const create = await prisma.donasiMaster_Kategori.create({
+ data: {
+ id: idKategori.toString(),
+ name: newKategori,
+ },
+ });
+
+ if (!create) return { status: 400, message: "Gagal menambahkan" };
+ revalidatePath(RouterAdminDonasi.table_kategori);
+ return { status: 200, message: "Berhasil menambahkan" };
+}
diff --git a/src/app_modules/admin/donasi/fun/delete/fun_delete_by_id.ts b/src/app_modules/admin/donasi/fun/delete/fun_delete_by_id.ts
new file mode 100644
index 00000000..21be57e7
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/delete/fun_delete_by_id.ts
@@ -0,0 +1,27 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { RouterAdminDonasi } from "@/app/lib/router_admin/router_admin_donasi";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
+import { revalidatePath } from "next/cache";
+
+export default async function adminDonasi_funDeleteKategori({
+ kategoriId,
+ isActive,
+}: {
+ kategoriId: string;
+ isActive: boolean;
+}) {
+ const del = await prisma.donasiMaster_Kategori.update({
+ where: {
+ id: kategoriId,
+ },
+ data: {
+ active: isActive,
+ },
+ });
+
+ if (!del) return { status: 400, message: "Gagal hapus kategori" };
+ revalidatePath(RouterAdminDonasi.table_kategori);
+ return { status: 200, message: "Kategori terhapus" };
+}
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_donasi_by_status.ts b/src/app_modules/admin/donasi/fun/get/get_list_donasi_by_status.ts
deleted file mode 100644
index a64c5684..00000000
--- a/src/app_modules/admin/donasi/fun/get/get_list_donasi_by_status.ts
+++ /dev/null
@@ -1,113 +0,0 @@
-"use server";
-
-import prisma from "@/app/lib/prisma";
-
-export async function AdminDonasi_getByStatus(status: string) {
- if (status === "1") {
- const getPublish = await prisma.donasi.findMany({
- orderBy: {
- createdAt: "desc",
- },
- where: {
- donasiMaster_StatusDonasiId: "1",
- },
- select: {
- id: true,
- title: true,
- target: true,
- // active: true,
- // createdAt: true,
- // updatedAt: true,
- // publishTime: true,
- authorId: true,
- // imagesId: true,
- terkumpul: true,
- // donasiMaster_KategoriId: true,
- // donasiMaster_DurasiId: true,
- // donasiMaster_StatusDonasiId: true,
- // Author: true,
- imageDonasi: true,
- // CeritaDonasi: true,
- DonasiMaster_Ketegori: true,
- DonasiMaster_Durasi: true,
- // DonasiMaster_Status: true,
- },
- });
- return getPublish;
- }
-
- if (status === "2") {
- const getReview = await prisma.donasi.findMany({
- where: {
- donasiMaster_StatusDonasiId: "2",
- },
- select: {
- id: true,
- title: true,
- target: true,
- active: true,
- createdAt: true,
- updatedAt: true,
- publishTime: true,
- authorId: true,
- imagesId: true,
- donasiMaster_KategoriId: true,
- donasiMaster_DurasiId: true,
- donasiMaster_StatusDonasiId: true,
- Author: true,
- imageDonasi: true,
- CeritaDonasi: true,
- DonasiMaster_Ketegori: true,
- DonasiMaster_Durasi: true,
- DonasiMaster_Status: true,
- },
- });
- return getReview;
- }
-
- if (status === "3") {
- const getReview = await prisma.donasi.findMany({
- where: {
- donasiMaster_StatusDonasiId: "3",
- },
- });
- return getReview;
- }
-
- if (status === "4") {
- const getReview = await prisma.donasi.findMany({
- where: {
- donasiMaster_StatusDonasiId: "4",
- },
- select: {
- id: true,
- title: true,
- target: true,
- active: true,
- createdAt: true,
- updatedAt: true,
- publishTime: true,
- catatan: true,
- authorId: true,
- imagesId: true,
- donasiMaster_KategoriId: true,
- donasiMaster_DurasiId: true,
- donasiMaster_StatusDonasiId: true,
- Author: true,
- imageDonasi: true,
- CeritaDonasi: true,
- DonasiMaster_Ketegori: true,
- DonasiMaster_Durasi: true,
- DonasiMaster_Status: true,
- },
- });
- return getReview;
- }
-
- if (status === undefined) {
- return {
- status: 400,
- message: "Not Found",
- };
- }
-}
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_donatur_by_id.ts b/src/app_modules/admin/donasi/fun/get/get_list_donatur_by_id.ts
index 2ee8d4f9..347ae21f 100644
--- a/src/app_modules/admin/donasi/fun/get/get_list_donatur_by_id.ts
+++ b/src/app_modules/admin/donasi/fun/get/get_list_donatur_by_id.ts
@@ -1,23 +1,59 @@
"use server";
import prisma from "@/app/lib/prisma";
+import { ceil } from "lodash";
-export async function AdminDonasi_getListDonatur(donasiId: string) {
- // console.log(donasiId)
- const data = await prisma.donasi_Invoice.findMany({
+export async function adminDonasi_getListDonatur({
+ donasiId,
+ page,
+ selectStatusId,
+}: {
+ donasiId: string;
+ page: number;
+ selectStatusId?: string;
+}) {
+ let takeData = 5;
+ let skipData = page * takeData - takeData;
+
+ const getData = await prisma.donasi_Invoice.findMany({
+ skip: skipData,
+ take: takeData,
+ orderBy: {
+ createdAt: "desc",
+ },
where: {
donasiId: donasiId,
+ donasiMaster_StatusInvoiceId: {
+ contains: selectStatusId,
+ mode: "insensitive",
+ },
},
select: {
id: true,
nominal: true,
createdAt: true,
Author: true,
- DonasiMaster_StatusInvoice: true
+ DonasiMaster_Bank: true,
+ DonasiMaster_StatusInvoice: true,
+ donasiMaster_StatusInvoiceId: true,
+ imagesId: true,
},
});
-// console.log(data)
+ const nCount = await prisma.donasi_Invoice.count({
+ where: {
+ donasiId: donasiId,
+ donasiMaster_StatusInvoiceId: {
+ contains: selectStatusId,
+ mode: "insensitive",
+ },
+ },
+ });
- return data;
+ const allData = {
+ data: getData,
+ nPage: ceil(nCount / takeData),
+ };
+
+ return allData;
}
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id.ts b/src/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id.ts
index 9007e75a..5ac9b43d 100644
--- a/src/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id.ts
+++ b/src/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id.ts
@@ -1,13 +1,16 @@
-"use server"
+"use server";
-import prisma from "@/app/lib/prisma"
+import prisma from "@/app/lib/prisma";
-export async function AdminDonasi_getListPencairanDana(donasiId:string) {
- const data = await prisma.donasi_PencairanDana.findMany({
- where: {
- donasiId: donasiId
- }
- })
+export async function AdminDonasi_getListPencairanDana(donasiId: string) {
+ const data = await prisma.donasi_PencairanDana.findMany({
+ orderBy: {
+ createdAt: "desc",
+ },
+ where: {
+ donasiId: donasiId,
+ },
+ });
- return data
-}
\ No newline at end of file
+ return data;
+}
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_publish.ts b/src/app_modules/admin/donasi/fun/get/get_list_publish.ts
new file mode 100644
index 00000000..faea420c
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/get/get_list_publish.ts
@@ -0,0 +1,60 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { count } from "console";
+import _, { ceil } from "lodash";
+
+export default async function adminDonasi_getListPublish({
+ page,
+ search,
+}: {
+ page: number;
+ search?: string;
+}) {
+ let takeData = 10;
+ let skipData = page * takeData - takeData;
+
+ const dataPublish = await prisma.donasi.findMany({
+ skip: skipData,
+ take: takeData,
+ orderBy: {
+ createdAt: "desc",
+ },
+ where: {
+ donasiMaster_StatusDonasiId: "1",
+ active: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ target: true,
+ authorId: true,
+ terkumpul: true,
+ imageDonasi: true,
+ DonasiMaster_Ketegori: true,
+ DonasiMaster_Durasi: true,
+ },
+ });
+
+ const nCount = await prisma.donasi.count({
+ where: {
+ donasiMaster_StatusDonasiId: "1",
+ active: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ });
+
+ const allData = {
+ data: dataPublish,
+ nPage: ceil(nCount / takeData),
+ };
+
+ return allData;
+}
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_reject.ts b/src/app_modules/admin/donasi/fun/get/get_list_reject.ts
new file mode 100644
index 00000000..f9cf5935
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/get/get_list_reject.ts
@@ -0,0 +1,69 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { RouterAdminDonasi } from "@/app/lib/router_admin/router_admin_donasi";
+import { count } from "console";
+import _, { ceil } from "lodash";
+import { revalidatePath } from "next/cache";
+
+export default async function adminDonasi_getListReject({
+ page,
+ search,
+}: {
+ page: number;
+ search?: string;
+}) {
+ let takeData = 2;
+ let skipData = page * takeData - takeData;
+
+ const dataReview = await prisma.donasi.findMany({
+ skip: skipData,
+ take: takeData,
+ orderBy: {
+ createdAt: "desc",
+ },
+ where: {
+ donasiMaster_StatusDonasiId: "4",
+ active: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ target: true,
+ authorId: true,
+ terkumpul: true,
+ imageDonasi: true,
+ DonasiMaster_Ketegori: true,
+ DonasiMaster_Durasi: true,
+ Author: {
+ select: {
+ id: true,
+ username: true,
+ },
+ },
+ },
+ });
+
+ const nCount = await prisma.donasi.count({
+ where: {
+ donasiMaster_StatusDonasiId: "4",
+ active: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ });
+
+ // console.log(nCount)
+ const allData = {
+ data: dataReview,
+ nPage: ceil(nCount / takeData),
+ };
+
+ return allData;
+}
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_review.ts b/src/app_modules/admin/donasi/fun/get/get_list_review.ts
new file mode 100644
index 00000000..316f4898
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/get/get_list_review.ts
@@ -0,0 +1,69 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { RouterAdminDonasi } from "@/app/lib/router_admin/router_admin_donasi";
+import { count } from "console";
+import _, { ceil } from "lodash";
+import { revalidatePath } from "next/cache";
+
+export default async function adminDonasi_getListReview({
+ page,
+ search,
+}: {
+ page: number;
+ search?: string;
+}) {
+ let takeData = 10;
+ let skipData = page * takeData - takeData;
+
+ const dataReview = await prisma.donasi.findMany({
+ skip: skipData,
+ take: takeData,
+ orderBy: {
+ createdAt: "desc",
+ },
+ where: {
+ donasiMaster_StatusDonasiId: "2",
+ active: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ target: true,
+ authorId: true,
+ terkumpul: true,
+ imageDonasi: true,
+ DonasiMaster_Ketegori: true,
+ DonasiMaster_Durasi: true,
+ Author: {
+ select: {
+ id: true,
+ username: true,
+ },
+ },
+ },
+ });
+
+ const nCount = await prisma.donasi.count({
+ where: {
+ donasiMaster_StatusDonasiId: "2",
+ active: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ });
+
+ // console.log(nCount)
+ const allData = {
+ data: dataReview,
+ nPage: ceil(nCount / takeData),
+ };
+
+ return allData;
+}
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses.ts b/src/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses.ts
index 79dca473..7a3b42d0 100644
--- a/src/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses.ts
+++ b/src/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses.ts
@@ -4,6 +4,9 @@ import prisma from "@/app/lib/prisma";
export async function AdminDonasi_getListStatusInvoiceProses(donasiId: string) {
const dataStatus = await prisma.donasi_Invoice.findMany({
+ orderBy: {
+ createdAt: "desc",
+ },
where: {
donasiId: donasiId,
donasiMaster_StatusInvoiceId: {
@@ -18,31 +21,30 @@ export async function AdminDonasi_getListStatusInvoiceProses(donasiId: string) {
imagesId: true,
Donasi: {
select: {
- id: true,
- title: true,
- target: true,
- active: true,
- createdAt: true,
- updatedAt: true,
- publishTime: true,
- catatan: true,
- terkumpul: true,
- donasiMaster_KategoriId: true,
- donasiMaster_DurasiId: true,
- donasiMaster_StatusDonasiId: true,
- Author: true,
- imageDonasi: true,
- CeritaDonasi: true,
- DonasiMaster_Ketegori: true,
- DonasiMaster_Durasi: true,
- DonasiMaster_Status: true,
- },
+ id: true,
+ title: true,
+ target: true,
+ active: true,
+ createdAt: true,
+ updatedAt: true,
+ publishTime: true,
+ catatan: true,
+ terkumpul: true,
+ donasiMaster_KategoriId: true,
+ donasiMaster_DurasiId: true,
+ donasiMaster_StatusDonasiId: true,
+ Author: true,
+ imageDonasi: true,
+ CeritaDonasi: true,
+ DonasiMaster_Ketegori: true,
+ DonasiMaster_Durasi: true,
+ DonasiMaster_Status: true,
+ },
},
DonasiMaster_Bank: true,
DonasiMaster_StatusInvoice: true,
},
});
-
return dataStatus;
}
diff --git a/src/app_modules/admin/donasi/fun/get/get_one_by_id.ts b/src/app_modules/admin/donasi/fun/get/get_one_by_id.ts
index 4f964f95..cc0d6049 100644
--- a/src/app_modules/admin/donasi/fun/get/get_one_by_id.ts
+++ b/src/app_modules/admin/donasi/fun/get/get_one_by_id.ts
@@ -33,8 +33,8 @@ export async function AdminDonasi_getOneById(id: string) {
DonasiMaster_Ketegori: true,
DonasiMaster_Durasi: true,
DonasiMaster_Status: true,
+
},
});
- // console.log(res)
return res;
}
diff --git a/src/app_modules/admin/donasi/fun/master/get_list_kategori.ts b/src/app_modules/admin/donasi/fun/master/get_list_kategori.ts
new file mode 100644
index 00000000..3e7ff6ac
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/master/get_list_kategori.ts
@@ -0,0 +1,13 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export default async function adminDonasi_getMasterKategori() {
+ const data = await prisma.donasiMaster_Kategori.findMany({
+ orderBy: {
+ createdAt: "asc",
+ },
+
+ });
+ return data;
+}
diff --git a/src/app_modules/admin/donasi/fun/master/get_status_id.ts b/src/app_modules/admin/donasi/fun/master/get_status_id.ts
new file mode 100644
index 00000000..4dbb21f8
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/master/get_status_id.ts
@@ -0,0 +1,9 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export default async function adminDonasi_getMasterStatus() {
+ const data = await prisma.donasiMaster_StatusInvoice.findMany({});
+
+ return data;
+}
diff --git a/src/app_modules/admin/donasi/fun/update/fun_status_publish.ts b/src/app_modules/admin/donasi/fun/update/fun_status_publish.ts
index f22113d0..0c3f4756 100644
--- a/src/app_modules/admin/donasi/fun/update/fun_status_publish.ts
+++ b/src/app_modules/admin/donasi/fun/update/fun_status_publish.ts
@@ -1,7 +1,7 @@
"use server";
import prisma from "@/app/lib/prisma";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import { revalidatePath } from "next/cache";
diff --git a/src/app_modules/admin/donasi/fun/update/fun_status_reject.ts b/src/app_modules/admin/donasi/fun/update/fun_status_reject.ts
index e511171b..da707f7d 100644
--- a/src/app_modules/admin/donasi/fun/update/fun_status_reject.ts
+++ b/src/app_modules/admin/donasi/fun/update/fun_status_reject.ts
@@ -1,7 +1,8 @@
"use server";
import prisma from "@/app/lib/prisma";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminDonasi } from "@/app/lib/router_admin/router_admin_donasi";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import { revalidatePath } from "next/cache";
@@ -21,7 +22,7 @@ export async function AdminDonasi_funUpdateStatusReject(
});
if (!data) return { status: 400, message: "Data tidak ditemukan" };
- revalidatePath("/dev/admin/donasi/table/review");
+ revalidatePath(RouterAdminDonasi.table_review);
return {
status: 200,
message: "Status berhasil diganti",
diff --git a/src/app_modules/admin/donasi/fun/update/fun_update_kategori_by_id.ts b/src/app_modules/admin/donasi/fun/update/fun_update_kategori_by_id.ts
new file mode 100644
index 00000000..9428c49f
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/update/fun_update_kategori_by_id.ts
@@ -0,0 +1,24 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { update } from "lodash";
+
+export default async function adminDonasi_funUpdatekategoriById({
+ kategoriId,
+ name,
+}: {
+ kategoriId: string;
+ name: string;
+}) {
+ const updt = await prisma.donasiMaster_Kategori.update({
+ where: {
+ id: kategoriId,
+ },
+ data: {
+ name: name,
+ },
+ });
+
+ if (!updt) return { status: 200, message: "Gagal update" };
+ return { status: 200, message: "Berhasil update" };
+}
diff --git a/src/app_modules/admin/donasi/fun/update/fun_update_status_dan_total.ts b/src/app_modules/admin/donasi/fun/update/fun_update_status_dan_total.ts
new file mode 100644
index 00000000..abedc57d
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/update/fun_update_status_dan_total.ts
@@ -0,0 +1,49 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
+import { revalidatePath } from "next/cache";
+
+// NEW FUNCTION
+export default async function adminDonasi_funUpdateStatusDanTotal({
+ invoiceId,
+ donasiId,
+ statusInvoiceId,
+ nominal,
+ jumlahTerkumpul,
+ target,
+}: {
+ invoiceId: string;
+ donasiId: string;
+ statusInvoiceId: string;
+ nominal: number;
+ jumlahTerkumpul: number;
+ target: number;
+}) {
+ let totalNominal = nominal + jumlahTerkumpul;
+ const progres = (totalNominal / target) * 100;
+
+ const updateInvoice = await prisma.donasi_Invoice.update({
+ where: {
+ id: invoiceId,
+ },
+ data: {
+ donasiMaster_StatusInvoiceId: statusInvoiceId,
+ },
+ });
+ if (!updateInvoice) return { status: 400, message: "Update invoice gagal" };
+
+ const updateDonasi = await prisma.donasi.update({
+ where: {
+ id: donasiId,
+ },
+ data: {
+ terkumpul: "" + totalNominal,
+ progres: "" + progres,
+ },
+ });
+
+ if (!updateDonasi) return { status: 400, message: "Update donasi gagal" };
+ revalidatePath(RouterAdminDonasi_OLD.detail_publish + donasiId);
+ return { status: 200, message: "Update Berhasil" };
+}
diff --git a/src/app_modules/admin/donasi/fun/update/fun_update_status_invoice.ts b/src/app_modules/admin/donasi/fun/update/fun_update_status_invoice.ts
index de471247..e1296212 100644
--- a/src/app_modules/admin/donasi/fun/update/fun_update_status_invoice.ts
+++ b/src/app_modules/admin/donasi/fun/update/fun_update_status_invoice.ts
@@ -1,7 +1,7 @@
"use server";
import prisma from "@/app/lib/prisma";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { revalidatePath } from "next/cache";
export async function AdminDonasi_funUpdateStatusInvoice(
diff --git a/src/app_modules/admin/donasi/index.tsx b/src/app_modules/admin/donasi/index.tsx
index 23917fc1..bc8e4568 100644
--- a/src/app_modules/admin/donasi/index.tsx
+++ b/src/app_modules/admin/donasi/index.tsx
@@ -1,12 +1,15 @@
import AdminDonasi_Main from "./main";
-import AdminDonasi_TablePublish from "./table_status/table_publish";
-import AdminDonasi_DetailPublish from "./detail_table/publish/detail_publish";
-import AdminDonasi_TableReview from "./table_status/table_review";
-import AdminDonasi_DetailReview from "./detail_table/detail_review";
-import AdminDonasi_TableReject from "./table_status/table_reject";
-import AdminDonasi_DetailReject from "./detail_table/detail_reject";
-import AdminDonasi_ProsesTransaksi from "./detail_table/publish/proses_transaksi";
-import AdminDonasi_PencairanDana from "./detail_table/publish/pencairan_dana";
+import AdminDonasi_TablePublish from "./sub_menu/table_publish";
+import AdminDonasi_DetailPublish from "./detail/publish/detail_publish";
+import AdminDonasi_TableReview from "./sub_menu/table_review";
+import AdminDonasi_DetailReview from "./detail/detail_review";
+import AdminDonasi_TableReject from "./sub_menu/table_reject";
+import AdminDonasi_DetailReject from "./detail/detail_reject";
+import AdminDonasi_ProsesTransaksi from "./detail/publish/proses_transaksi";
+import AdminDonasi_PencairanDana from "./detail/publish/pencairan_dana";
+import AdminDonasi_TableKategori from "./sub_menu/table_kategori";
+import AdminDonasi_BuktiTransfer from "./sub-detail/bukti_transfer";
+import AdminDonasi_BuktiTransferPencairan from "./sub-detail/bukti_transfer_pencairan";
export {
AdminDonasi_Main,
@@ -18,4 +21,7 @@ export {
AdminDonasi_DetailReject,
AdminDonasi_ProsesTransaksi,
AdminDonasi_PencairanDana,
+ AdminDonasi_TableKategori,
+ AdminDonasi_BuktiTransfer,
+ AdminDonasi_BuktiTransferPencairan,
};
diff --git a/src/app_modules/admin/donasi/main/index.tsx b/src/app_modules/admin/donasi/main/index.tsx
index 3f496f1e..39a9c8c0 100644
--- a/src/app_modules/admin/donasi/main/index.tsx
+++ b/src/app_modules/admin/donasi/main/index.tsx
@@ -1,6 +1,6 @@
"use client";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import {
Stack,
Title,
@@ -15,6 +15,7 @@ import {
} from "@mantine/core";
import { IconChevronsRight } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
export default function AdminDonasi_Main({
countPublish,
@@ -33,14 +34,14 @@ export default function AdminDonasi_Main({
id: 1,
name: "Publish",
jumlah: countPublish,
- link: RouterAdminDonasi.table_publish,
+ link: RouterAdminDonasi_OLD.table_publish,
color: "green",
},
{
id: 2,
name: "Review",
jumlah: countReview,
- link: RouterAdminDonasi.table_review,
+ link: RouterAdminDonasi_OLD.table_review,
color: "orange",
},
{
@@ -54,13 +55,45 @@ export default function AdminDonasi_Main({
id: 4,
name: "Reject",
jumlah: countReject,
- link: RouterAdminDonasi.table_reject,
+ link: RouterAdminDonasi_OLD.table_reject,
color: "red",
},
];
return (
<>
-
+
+
+
+
+ {listBox.map((e, i) => (
+
+
+
+ {e.name}
+ {e.jumlah}
+
+
+
+ ))}
+
+
+
+ {/*
Donasi
))}
-
+ */}
>
);
}
diff --git a/src/app_modules/admin/donasi/sub-detail/bukti_transfer.tsx b/src/app_modules/admin/donasi/sub-detail/bukti_transfer.tsx
new file mode 100644
index 00000000..7bdd4f2b
--- /dev/null
+++ b/src/app_modules/admin/donasi/sub-detail/bukti_transfer.tsx
@@ -0,0 +1,47 @@
+"use client";
+
+import { AspectRatio, Box, Image, Paper, Stack } from "@mantine/core";
+import ComponentGlobalAdmin_BackButton from "../../component_global/back_button";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
+
+export default function AdminDonasi_BuktiTransfer({
+ imageId,
+}: {
+ imageId: string;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function BuktiTransfer({ imageId }: { imageId: string }) {
+ return (
+ <>
+
+
+
+
+ {/*
+
+
+
+ */}
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/donasi/sub-detail/bukti_transfer_pencairan.tsx b/src/app_modules/admin/donasi/sub-detail/bukti_transfer_pencairan.tsx
new file mode 100644
index 00000000..4d2dedf7
--- /dev/null
+++ b/src/app_modules/admin/donasi/sub-detail/bukti_transfer_pencairan.tsx
@@ -0,0 +1,48 @@
+"use client";
+
+import { AspectRatio, Box, Image, Paper, Stack } from "@mantine/core";
+import ComponentGlobalAdmin_BackButton from "../../component_global/back_button";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+
+export default function AdminDonasi_BuktiTransferPencairan({
+ imageId,
+}: {
+ imageId: string;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function BuktiTransfer({ imageId }: { imageId: string }) {
+ return (
+ <>
+
+
+
+
+ {/*
+
+
+
+ */}
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/donasi/sub_menu/table_kategori.tsx b/src/app_modules/admin/donasi/sub_menu/table_kategori.tsx
new file mode 100644
index 00000000..accb70a0
--- /dev/null
+++ b/src/app_modules/admin/donasi/sub_menu/table_kategori.tsx
@@ -0,0 +1,360 @@
+"use client";
+
+import {
+ Stack,
+ Group,
+ Title,
+ Paper,
+ ScrollArea,
+ Center,
+ Pagination,
+ Table,
+ Grid,
+ TextInput,
+ Button,
+ Text,
+ ActionIcon,
+ Overlay,
+ Switch,
+ Modal,
+} from "@mantine/core";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
+import { MODEL_NEW_DEFAULT_MASTER } from "@/app_modules/model_global/interface";
+import { useState } from "react";
+import { IconCirclePlus, IconEdit, IconTrash } from "@tabler/icons-react";
+import adminDonasi_funCreateKategori from "../fun/create/fun_create_kategori";
+import { ComponentGlobalAdmin_NotifikasiBerhasil } from "../../component_global/admin_notifikasi/notifikasi_berhasil";
+import { ComponentGlobalAdmin_NotifikasiGagal } from "../../component_global/admin_notifikasi/notifikasi_gagal";
+import adminDonasi_getMasterKategori from "../fun/master/get_list_kategori";
+import adminDonasi_funDeleteKategori from "../fun/delete/fun_delete_by_id";
+import adminDonasi_funUpdatekategoriById from "../fun/update/fun_update_kategori_by_id";
+import _ from "lodash";
+
+export default function AdminDonasi_TableKategori({
+ listKategori,
+}: {
+ listKategori: MODEL_NEW_DEFAULT_MASTER[];
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableView({ list }: { list: MODEL_NEW_DEFAULT_MASTER[] }) {
+ const [data, setData] = useState(list);
+
+ const [create, setCreate] = useState("");
+ const [isCreate, setIsCreate] = useState(false);
+
+ // const [kategoriId, setKategoriId] = useState("");
+ const [updateKategori, setUpdateKategori] = useState({
+ kategoriId: "",
+ name: "",
+ });
+ const [isUpdate, setIsUpdate] = useState(false);
+
+ const [updateStatus, setUpdateStatus] = useState({
+ kategoriId: "",
+ isActive: "",
+ });
+ const [isChangeStatus, setIsChangeStatus] = useState(false);
+
+ async function onCreateNewKategori() {
+ const tambahData = await adminDonasi_funCreateKategori({
+ newKategori: create,
+ });
+ if (tambahData.status === 200) {
+ const loadNewdata = await adminDonasi_getMasterKategori();
+ setData(loadNewdata);
+ setCreate("");
+ ComponentGlobalAdmin_NotifikasiBerhasil(tambahData.message);
+ } else {
+ ComponentGlobalAdmin_NotifikasiGagal(tambahData.message);
+ }
+ }
+
+ async function onChangeStatus() {
+ // console.log(updateStatus.kategoriId, updateStatus.isActive);
+ const del = await adminDonasi_funDeleteKategori({
+ kategoriId: updateStatus.kategoriId,
+ isActive: updateStatus.isActive as any,
+ });
+
+ if (del.status === 200) {
+ const loadNewdata = await adminDonasi_getMasterKategori();
+ setData(loadNewdata);
+ ComponentGlobalAdmin_NotifikasiBerhasil(del.message);
+ setIsChangeStatus(false);
+ } else {
+ ComponentGlobalAdmin_NotifikasiGagal(del.message);
+ }
+ }
+
+ async function onUpdate() {
+ const updt = await adminDonasi_funUpdatekategoriById({
+ kategoriId: updateKategori.kategoriId,
+ name: updateKategori.name,
+ });
+ if (updt.status === 200) {
+ setUpdateKategori({ kategoriId: "", name: "" });
+ ComponentGlobalAdmin_NotifikasiBerhasil(updt.message);
+ const loadData = await adminDonasi_getMasterKategori();
+ setData(loadData);
+ setIsUpdate(false);
+ } else {
+ ComponentGlobalAdmin_NotifikasiGagal(updt.message);
+ }
+ }
+
+ const rowTable = data.map((e, i) => (
+
+ |
+
+ {e?.name}
+
+ |
+
+
+ {
+ const status = val.currentTarget.checked;
+ setIsChangeStatus(true);
+ setUpdateStatus({
+ kategoriId: e?.id,
+ isActive: status as any,
+ });
+ }}
+ />
+
+ |
+
+
+ {
+ setIsUpdate(true);
+ setIsCreate(false);
+ setUpdateKategori({
+ kategoriId: e?.id,
+ name: e?.name,
+ });
+ }}
+ >
+
+
+
+ |
+
+ ));
+
+ return (
+ <>
+
+ {/* {JSON.stringify(listUser, null, 2)} */}
+
+ Kategori
+ }
+ radius={"xl"}
+ onClick={() => {
+ setIsCreate(true);
+ setIsUpdate(false);
+ }}
+ >
+ Tambah
+
+
+
+
+
+
+
+
+
+
+ |
+ Kategori
+ |
+
+ Status
+ |
+
+ Aksi
+ |
+
+
+ {rowTable}
+
+
+ {/*
+ {
+ // onPageClick(val);
+ // }}
+ />
+ */}
+
+
+
+
+ {isCreate ? (
+
+
+ Tambah Kategori}
+ placeholder="Masukan kategori baru"
+ onChange={(val) => {
+ setCreate(val.currentTarget.value);
+ }}
+ />
+
+ {
+ setIsCreate(false);
+ setCreate("");
+ }}
+ >
+ Batal
+
+ {
+ onCreateNewKategori();
+ }}
+ >
+ Simpan
+
+
+
+
+ ) : (
+ ""
+ )}
+
+ {isUpdate ? (
+
+
+ Update Kategori}
+ placeholder="Update kategori"
+ onChange={(val) => {
+ const data = _.clone(updateKategori);
+ setUpdateKategori({
+ kategoriId: data.kategoriId,
+ name: val.currentTarget.value,
+ });
+ }}
+ />
+
+ {
+ setIsUpdate(false);
+ setUpdateKategori({
+ kategoriId: "",
+ name: "",
+ });
+ }}
+ >
+ Batal
+
+ {
+ onUpdate();
+ }}
+ >
+ Update
+
+
+
+
+ ) : (
+ ""
+ )}
+
+
+
+
+ setIsChangeStatus(false)}
+ withCloseButton={false}
+ centered
+ >
+
+
+ Anda ingin{" "}
+ {updateStatus.isActive ? (
+
+ mengaktifkan
+
+ ) : (
+
+ menonaktifkan
+
+ )}{" "}
+ Bank ini ?
+
+
+ setIsChangeStatus(false)}>
+ Batal
+
+ {
+ onChangeStatus();
+ }}
+ >
+ Iya
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/donasi/sub_menu/table_publish.tsx b/src/app_modules/admin/donasi/sub_menu/table_publish.tsx
new file mode 100644
index 00000000..8e896daf
--- /dev/null
+++ b/src/app_modules/admin/donasi/sub_menu/table_publish.tsx
@@ -0,0 +1,187 @@
+"use client";
+
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
+import {
+ ActionIcon,
+ Box,
+ Button,
+ Center,
+ Group,
+ Pagination,
+ Paper,
+ ScrollArea,
+ Stack,
+ Table,
+ Text,
+ TextInput,
+ Title,
+} from "@mantine/core";
+import { IconChevronLeft, IconEyeCheck, IconSearch } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
+import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
+import { useState } from "react";
+import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
+import adminDonasi_getListPublish from "../fun/get/get_list_publish";
+
+export default function AdminDonasi_TablePublish({
+ listPublish,
+}: {
+ listPublish: any;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listPublish }: { listPublish: any }) {
+ const router = useRouter();
+ const [isLoading, setLoading] = useState(false);
+ const [idData, setIdData] = useState("");
+
+ const [data, setData] = useState(listPublish.data);
+ const [isNPage, setNPage] = useState(listPublish.nPage);
+ const [isActivePage, setActivePage] = useState(1);
+ const [isSearch, setSearch] = useState("");
+
+ async function onSearch(s: string) {
+ setSearch(s);
+ const loadData = await adminDonasi_getListPublish({
+ page: 1,
+ search: s,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ async function onPageClick(p: any) {
+ setActivePage(p);
+ const loadData = await adminDonasi_getListPublish({
+ search: isSearch,
+ page: p,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ const TableRows = data.map((e, i) => (
+
+ |
+ {e.title}
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ {e.DonasiMaster_Ketegori.name}
+ |
+
+ {e.DonasiMaster_Durasi.name} hari
+ |
+
+
+ }
+ radius={"xl"}
+ variant="outline"
+ onClick={() => {
+ setLoading(true);
+ setIdData(e?.id);
+ router.push(RouterAdminDonasi_OLD.detail_publish + `${e.id}`);
+ }}
+ >
+ Tampilkan
+
+
+ |
+
+ ));
+
+ return (
+ <>
+
+ {/* {JSON.stringify(listUser, null, 2)} */}
+
+ Publish
+ }
+ radius={"xl"}
+ placeholder="Masukan judul"
+ onChange={(val) => {
+ onSearch(val.currentTarget.value);
+ }}
+ />
+
+
+
+
+
+
+
+ |
+ Judul
+ |
+
+ Target
+ |
+
+ Terkumpul
+ |
+
+ Ketegori
+ |
+
+ Durasi
+ |
+
+ Aksi
+ |
+
+
+ {TableRows}
+
+
+ {/*
+ */}
+
+ {
+ onPageClick(val);
+ }}
+ />
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/donasi/sub_menu/table_reject.tsx b/src/app_modules/admin/donasi/sub_menu/table_reject.tsx
new file mode 100644
index 00000000..effb2074
--- /dev/null
+++ b/src/app_modules/admin/donasi/sub_menu/table_reject.tsx
@@ -0,0 +1,220 @@
+"use client";
+
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
+import {
+ ActionIcon,
+ Box,
+ Button,
+ Center,
+ Group,
+ Modal,
+ Pagination,
+ Paper,
+ ScrollArea,
+ Stack,
+ Table,
+ Text,
+ TextInput,
+ Title,
+} from "@mantine/core";
+import {
+ IconChevronLeft,
+ IconEyeCheck,
+ IconEyeClosed,
+ IconEyeEdit,
+ IconSearch,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
+import { useDisclosure } from "@mantine/hooks";
+import AdminDonasi_DetailReview from "../detail/detail_review";
+import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
+import { useState } from "react";
+import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
+import adminDonasi_getListReject from "../fun/get/get_list_reject";
+
+export default function AdminDonasi_TableReject({
+ dataReject,
+}: {
+ dataReject: any;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ dataReject }: { dataReject: any }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [isLoading, setLoading] = useState(false);
+ const [idData, setIdData] = useState("");
+ const [data, setData] = useState(dataReject.data);
+ const [isNPage, setNPage] = useState(dataReject.nPage);
+ const [isActivePage, setActivePage] = useState(1);
+ const [isSearch, setSearch] = useState("");
+
+ async function onSearch(s: string) {
+ setSearch(s);
+ const loadData = await adminDonasi_getListReject({
+ page: 1,
+ search: s,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ async function onPageClick(p: any) {
+ setActivePage(p);
+ const loadData = await adminDonasi_getListReject({
+ search: isSearch,
+ page: p,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ const TableRows = data.map((e, i) => (
+
+ |
+ {e?.Author?.username}
+ |
+
+ {e?.title}
+ |
+
+
+
+
+ |
+
+ {e?.DonasiMaster_Ketegori.name}
+ |
+
+ {e?.DonasiMaster_Durasi.name} hari
+ |
+
+
+ }
+ radius={"xl"}
+ variant="outline"
+ onClick={() =>
+ router.push(RouterAdminDonasi_OLD.detail_reject + `${e.id}`)
+ }
+ >
+ Lihat Alasan
+
+
+
+ {/* */}
+ |
+
+ ));
+
+ return (
+ <>
+
+ {/* {JSON.stringify(listUser, null, 2)} */}
+
+ Reject
+ }
+ radius={"xl"}
+ placeholder="Masukan judul"
+ onChange={(val) => {
+ onSearch(val.currentTarget.value);
+ }}
+ />
+
+
+
+
+
+
+
+ |
+ Username
+ |
+
+ Judul
+ |
+
+ Target
+ |
+
+ Ketegori
+ |
+
+ Durasi
+ |
+
+ Alasan
+ |
+
+
+ {TableRows}
+
+
+ {/*
+ */}
+
+ {
+ onPageClick(val);
+ }}
+ />
+
+
+
+
+ {data.map((e, i) => (
+
+
+ Alasan penolakan
+ {i}
+
+
+ ))}
+ >
+ );
+}
+
+async function ModalReject(opened: any, close: any) {
+ return (
+ <>
+
+
+ Alasan penolakan
+ {"test"}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/donasi/sub_menu/table_review.tsx b/src/app_modules/admin/donasi/sub_menu/table_review.tsx
new file mode 100644
index 00000000..b11cf446
--- /dev/null
+++ b/src/app_modules/admin/donasi/sub_menu/table_review.tsx
@@ -0,0 +1,187 @@
+"use client";
+
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
+import {
+ ActionIcon,
+ Box,
+ Button,
+ Center,
+ Group,
+ Modal,
+ Pagination,
+ Paper,
+ ScrollArea,
+ Stack,
+ Table,
+ Text,
+ TextInput,
+ Title,
+} from "@mantine/core";
+import { IconChevronLeft, IconEyeCheck, IconSearch } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
+import { useDisclosure } from "@mantine/hooks";
+import AdminDonasi_DetailReview from "../detail/detail_review";
+import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
+import { useState } from "react";
+import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
+import _ from "lodash";
+import adminDonasi_getListReview from "../fun/get/get_list_review";
+
+export default function AdminDonasi_TableReview({
+ listReview,
+}: {
+ listReview: MODEL_DONASI[];
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listReview }: { listReview: any }) {
+ const router = useRouter();
+ const [isLoading, setLoading] = useState(false);
+ const [idData, setIdData] = useState("");
+ const [data, setData] = useState(listReview.data);
+ const [isNPage, setNPage] = useState(listReview.nPage);
+ const [isActivePage, setActivePage] = useState(1);
+ const [isSearch, setSearch] = useState("");
+
+ async function onSearch(s: string) {
+ setSearch(s);
+ const loadData = await adminDonasi_getListReview({
+ page: 1,
+ search: s,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ async function onPageClick(p: any) {
+ setActivePage(p);
+ const loadData = await adminDonasi_getListReview({
+ search: isSearch,
+ page: p,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ const TableRows = data.map((e, i) => (
+
+ |
+ {e?.Author?.username}
+ |
+
+ {e?.title}
+ |
+
+
+
+
+ |
+
+ {e?.DonasiMaster_Ketegori.name}
+ |
+
+ {e?.DonasiMaster_Durasi.name} hari
+ |
+
+
+ }
+ radius={"xl"}
+ variant="outline"
+ onClick={() => {
+ setLoading(true);
+ setIdData(e?.id);
+ router.push(RouterAdminDonasi_OLD.detail_review + `${e?.id}`);
+ }}
+ >
+ Tampilkan
+
+
+ |
+
+ ));
+
+ return (
+ <>
+
+ {/* {JSON.stringify(listUser, null, 2)} */}
+
+ Review
+ }
+ radius={"xl"}
+ placeholder="Masukan judul"
+ onChange={(val) => {
+ onSearch(val.currentTarget.value);
+ }}
+ />
+
+
+
+
+
+
+
+ |
+ Username
+ |
+
+ Judul
+ |
+
+ Target
+ |
+
+ Ketegori
+ |
+
+ Durasi
+ |
+
+ Aksi
+ |
+
+
+ {TableRows}
+
+
+
+ {
+ onPageClick(val);
+ }}
+ />
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/donasi/table_status/table_publish.tsx b/src/app_modules/admin/donasi/table_status/table_publish.tsx
deleted file mode 100644
index 4a935c72..00000000
--- a/src/app_modules/admin/donasi/table_status/table_publish.tsx
+++ /dev/null
@@ -1,101 +0,0 @@
-"use client";
-
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
-import {
- ActionIcon,
- Box,
- Button,
- Center,
- Group,
- Stack,
- Table,
- Text,
- Title,
-} from "@mantine/core";
-import { IconChevronLeft, IconEyeCheck } from "@tabler/icons-react";
-import { useRouter } from "next/navigation";
-import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
-import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
-import { useState } from "react";
-import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
-
-export default function AdminDonasi_TablePublish({
- listPublish,
-}: {
- listPublish: MODEL_DONASI;
-}) {
- return (
- <>
-
-
-
-
- >
- );
-}
-
-function TableStatus({ listPublish }: { listPublish: MODEL_DONASI[] }) {
- const router = useRouter();
- const [donasi, setDonasi] = useState(listPublish);
-
-
- const TableRows = donasi.map((e, i) => (
-
- | {e.title} |
-
-
- |
-
-
- |
- {e.DonasiMaster_Ketegori.name} |
- {e.DonasiMaster_Durasi.name} hari |
-
-
- }
- radius={"xl"}
- variant="outline"
- onClick={() => router.push(RouterAdminDonasi.detail_publish + `${e.id}`)}
- >
- Tampilkan
-
-
- |
-
- ));
-
- return (
- <>
-
-
-
- PUBLISH
-
-
-
-
-
- | Judul |
- Target |
- Terkumpul |
- Ketegori |
- Durasi |
- Aksi |
-
-
- {TableRows}
-
-
- >
- );
-}
diff --git a/src/app_modules/admin/donasi/table_status/table_reject.tsx b/src/app_modules/admin/donasi/table_status/table_reject.tsx
deleted file mode 100644
index 2ec2fb01..00000000
--- a/src/app_modules/admin/donasi/table_status/table_reject.tsx
+++ /dev/null
@@ -1,131 +0,0 @@
-"use client";
-
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
-import {
- ActionIcon,
- Box,
- Button,
- Center,
- Group,
- Modal,
- Stack,
- Table,
- Text,
- Title,
-} from "@mantine/core";
-import { IconChevronLeft, IconEyeCheck } from "@tabler/icons-react";
-import { useRouter } from "next/navigation";
-import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
-import { useDisclosure } from "@mantine/hooks";
-import AdminDonasi_DetailReview from "../detail_table/detail_review";
-import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
-import { useState } from "react";
-import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
-
-export default function AdminDonasi_TableReject({
- dataReject,
-}: {
- dataReject: MODEL_DONASI[];
-}) {
- return (
- <>
-
-
-
-
- >
- );
-}
-
-function TableStatus({ dataReject }: { dataReject: MODEL_DONASI[] }) {
- const router = useRouter();
- const [opened, { open, close }] = useDisclosure(false);
- const [donasi, setDonasi] = useState(dataReject);
-
- const TableRows = donasi.map((e, i) => (
-
- | {e.title} |
-
-
- |
- {e.DonasiMaster_Ketegori.name} |
- {e.DonasiMaster_Durasi.name} hari |
-
-
- }
- radius={"xl"}
- variant="outline"
- onClick={() => router.push(RouterAdminDonasi.detail_reject + `${e.id}`)}
- >
- Tampilkan
-
-
-
- {/* */}
- |
-
- ));
-
- return (
- <>
- {donasi.map((e,i) => (
-
-
- Alasan penolakan
- {i}
-
-
- ))}
-
-
-
- REJECT
-
-
-
-
-
- | Judul |
- Target |
- Ketegori |
- Durasi |
-
- Lihat alasan
- |
-
-
- {TableRows}
-
-
- >
- );
-}
-
-async function ModalReject(opened: any, close: any) {
- return (
- <>
-
-
- Alasan penolakan
- {"test"}
-
-
- >
- );
-}
diff --git a/src/app_modules/admin/donasi/table_status/table_review.tsx b/src/app_modules/admin/donasi/table_status/table_review.tsx
deleted file mode 100644
index 88a28e93..00000000
--- a/src/app_modules/admin/donasi/table_status/table_review.tsx
+++ /dev/null
@@ -1,108 +0,0 @@
-"use client";
-
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
-import {
- ActionIcon,
- Box,
- Button,
- Center,
- Group,
- Modal,
- Stack,
- Table,
- Text,
- Title,
-} from "@mantine/core";
-import { IconChevronLeft, IconEyeCheck } from "@tabler/icons-react";
-import { useRouter } from "next/navigation";
-import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
-import { useDisclosure } from "@mantine/hooks";
-import AdminDonasi_DetailReview from "../detail_table/detail_review";
-import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
-import { useState } from "react";
-import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
-
-export default function AdminDonasi_TableReview({
- listReview,
-}: {
- listReview: MODEL_DONASI[];
-}) {
- return (
- <>
-
-
-
-
- >
- );
-}
-
-function TableStatus({ listReview }: { listReview: MODEL_DONASI[] }) {
- const router = useRouter();
- const [opened, { open, close }] = useDisclosure(false);
- const [donasi, setDonasi] = useState(listReview);
-
- async function onClick() {
- // router.push(RouterAdminDonasi.detail_publish);
- }
-
- const TableRows = donasi.map((e, i) => (
-
- | {e.title} |
-
-
- |
- {e.DonasiMaster_Ketegori.name} |
- {e.DonasiMaster_Durasi.name} hari |
-
-
- }
- radius={"xl"}
- variant="outline"
- onClick={() => router.push(RouterAdminDonasi.detail_review + `${e.id}`)}
- >
- Tampilkan
-
-
- |
-
- ));
-
- return (
- <>
-
-
-
- REVIEW
-
-
-
-
-
- | Judul |
- Target |
- Ketegori |
- Durasi |
-
- Aksi
- |
-
-
- {TableRows}
-
-
-
-
- >
- );
-}
diff --git a/src/app_modules/admin/event/child/riwayat.tsx b/src/app_modules/admin/event/child/riwayat.tsx
index 6fce60ee..33ab6a77 100644
--- a/src/app_modules/admin/event/child/riwayat.tsx
+++ b/src/app_modules/admin/event/child/riwayat.tsx
@@ -18,7 +18,7 @@ import {
Text,
Title,
} from "@mantine/core";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
import {
MODEL_EVENT,
MODEL_EVENT_PESERTA,
diff --git a/src/app_modules/admin/event/child/tipe_acara.tsx b/src/app_modules/admin/event/child/tipe_acara.tsx
index 78479e1d..46db69a0 100644
--- a/src/app_modules/admin/event/child/tipe_acara.tsx
+++ b/src/app_modules/admin/event/child/tipe_acara.tsx
@@ -16,8 +16,8 @@ import {
Title,
} from "@mantine/core";
import ComponentAdminDonasi_TombolKembali from "../../donasi/component/tombol_kembali";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
-import { MODEL_DEFAULT_MASTER } from "@/app_modules/model_global/interface";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
+import { MODEL_DEFAULT_MASTER_OLD } from "@/app_modules/model_global/interface";
import { useState } from "react";
import { AdminEvent_funCreateTipeAcara } from "../fun/create/fun_create_tipe_acara";
import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
@@ -45,11 +45,11 @@ export default function AdminEvent_DetailTipeAcara({
);
}
-function DetailTipeAcara({ listTipe }: { listTipe: MODEL_DEFAULT_MASTER[] }) {
+function DetailTipeAcara({ listTipe }: { listTipe: MODEL_DEFAULT_MASTER_OLD[] }) {
const [tipe, setTipe] = useState(listTipe);
const [name, setName] = useState("");
const [openEditor, setOpenEditor] = useState(false);
- const [edit, setEdit] = useState(null);
+ const [edit, setEdit] = useState(null);
const [opened, { open, close }] = useDisclosure(false);
const [hapusTipe, setHapusTipe] = useState({
id: "",
@@ -222,7 +222,7 @@ async function onUpdate(id: any, edit: any, setTipe: any, setOpenEditor: any) {
});
}
-async function onDelete(data: MODEL_DEFAULT_MASTER, close: any, setTipe: any) {
+async function onDelete(data: MODEL_DEFAULT_MASTER_OLD, close: any, setTipe: any) {
await AdminEvent_funEditActivationTipeAcaraById(data.id as any).then(
async (res) => {
if (res.status === 200) {
diff --git a/src/app_modules/admin/event/main/index.tsx b/src/app_modules/admin/event/main/index.tsx
index 680a3e74..acb7a734 100644
--- a/src/app_modules/admin/event/main/index.tsx
+++ b/src/app_modules/admin/event/main/index.tsx
@@ -16,7 +16,7 @@ import {
} from "@mantine/core";
import { IconChevronsRight } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
export default function AdminEvent_Main({
countPublish,
diff --git a/src/app_modules/admin/event/table_status/table_publish.tsx b/src/app_modules/admin/event/table_status/table_publish.tsx
index 646bbae7..fbfa20c5 100644
--- a/src/app_modules/admin/event/table_status/table_publish.tsx
+++ b/src/app_modules/admin/event/table_status/table_publish.tsx
@@ -1,6 +1,6 @@
"use client";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import {
ActionIcon,
Avatar,
@@ -36,7 +36,7 @@ import {
MODEL_EVENT,
MODEL_EVENT_PESERTA,
} from "@/app_modules/event/model/interface";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
import moment from "moment";
import _ from "lodash";
import { AdminEvent_funEditStatusPublishById } from "../fun/edit/fun_edit_status_publish_by_id";
diff --git a/src/app_modules/admin/event/table_status/table_reject.tsx b/src/app_modules/admin/event/table_status/table_reject.tsx
index 99471bc8..41f0e590 100644
--- a/src/app_modules/admin/event/table_status/table_reject.tsx
+++ b/src/app_modules/admin/event/table_status/table_reject.tsx
@@ -1,6 +1,6 @@
"use client";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import {
ActionIcon,
Box,
@@ -33,7 +33,7 @@ import { useState } from "react";
import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
import ComponentAdminDonasi_TombolKembali from "../../donasi/component/tombol_kembali";
import { MODEL_EVENT } from "@/app_modules/event/model/interface";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
import moment from "moment";
import _ from "lodash";
import { AdminEvent_funEditStatusPublishById } from "../fun/edit/fun_edit_status_publish_by_id";
diff --git a/src/app_modules/admin/event/table_status/table_review.tsx b/src/app_modules/admin/event/table_status/table_review.tsx
index a3fe6ebc..bf41a05f 100644
--- a/src/app_modules/admin/event/table_status/table_review.tsx
+++ b/src/app_modules/admin/event/table_status/table_review.tsx
@@ -1,6 +1,6 @@
"use client";
-import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import {
ActionIcon,
Box,
@@ -31,7 +31,7 @@ import { useState } from "react";
import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
import ComponentAdminDonasi_TombolKembali from "../../donasi/component/tombol_kembali";
import { MODEL_EVENT } from "@/app_modules/event/model/interface";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
import moment from "moment";
import _ from "lodash";
import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
@@ -134,9 +134,7 @@ function TableStatus({ listReview }: { listReview: MODEL_EVENT[] }) {
{
- onReject(eventId, catatan, setData, close);
-
- // console.log("hehe")
+ onReject(eventId, catatan, setData, close)
}}
>
Simpan
diff --git a/src/app_modules/admin/forum/child/publish/index.tsx b/src/app_modules/admin/forum/child/publish/index.tsx
index c63b9d9d..d665b271 100644
--- a/src/app_modules/admin/forum/child/publish/index.tsx
+++ b/src/app_modules/admin/forum/child/publish/index.tsx
@@ -2,7 +2,7 @@
import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum";
import { RouterForum } from "@/app/lib/router_hipmi/router_forum";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import { MODEL_FORUM_POSTING } from "@/app_modules/forum/model/interface";
import {
Badge,
diff --git a/src/app_modules/admin/forum/children/semua_komentar/index.tsx b/src/app_modules/admin/forum/children/semua_komentar/index.tsx
index 7a91f6ea..c01e13f7 100644
--- a/src/app_modules/admin/forum/children/semua_komentar/index.tsx
+++ b/src/app_modules/admin/forum/children/semua_komentar/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import ComponentAdminDonasi_TombolKembali from "@/app_modules/admin/donasi/component/tombol_kembali";
import {
MODEL_FORUM_KOMENTAR,
diff --git a/src/app_modules/admin/forum/hasil_report/komentar/index.tsx b/src/app_modules/admin/forum/hasil_report/komentar/index.tsx
index f30cb47f..e9b9156c 100644
--- a/src/app_modules/admin/forum/hasil_report/komentar/index.tsx
+++ b/src/app_modules/admin/forum/hasil_report/komentar/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import ComponentAdminDonasi_TombolKembali from "@/app_modules/admin/donasi/component/tombol_kembali";
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
diff --git a/src/app_modules/admin/forum/hasil_report/posting/index.tsx b/src/app_modules/admin/forum/hasil_report/posting/index.tsx
index c89610c8..756ba301 100644
--- a/src/app_modules/admin/forum/hasil_report/posting/index.tsx
+++ b/src/app_modules/admin/forum/hasil_report/posting/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import ComponentAdminDonasi_TombolKembali from "@/app_modules/admin/donasi/component/tombol_kembali";
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
diff --git a/src/app_modules/admin/forum/main/index.tsx b/src/app_modules/admin/forum/main/index.tsx
index 9ab092f7..d17fc5c5 100644
--- a/src/app_modules/admin/forum/main/index.tsx
+++ b/src/app_modules/admin/forum/main/index.tsx
@@ -1,8 +1,8 @@
"use client";
import { Group, Paper, SimpleGrid, Stack, Text, Title } from "@mantine/core";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
-import ComponentAdminGlobal_LoadingPage from "../../component/loading_admin_page";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
+import ComponentAdminGlobal_LoadingPage from "../../component_global/loading_admin_page";
export default function AdminForum_Main({
countPublish,
diff --git a/src/app_modules/admin/global_state/index.ts b/src/app_modules/admin/global_state/index.ts
index 689ebfa2..fb8e9df0 100644
--- a/src/app_modules/admin/global_state/index.ts
+++ b/src/app_modules/admin/global_state/index.ts
@@ -5,6 +5,14 @@ import { atomWithStorage } from "jotai/utils";
* @type number
* @
*/
-export const gs_admin_hotMenu = atomWithStorage("gs_admin_hotMenu", 1)
+export const gs_admin_hotMenu = atomWithStorage("gs_admin_hotMenu", 1);
-export const gs_admin_subMenu = atomWithStorage("gs_admin_subMenu",null)
\ No newline at end of file
+export const gs_admin_subMenu = atomWithStorage(
+ "gs_admin_subMenu",
+ null
+);
+
+export const gs_layout_admin_isNavbarOpen = atomWithStorage(
+ "gs_layout_admin_isNavbarOpen",
+ false
+);
diff --git a/src/app_modules/admin/investasi/bukti_transfer/view.tsx b/src/app_modules/admin/investasi/bukti_transfer/view.tsx
index 75127ec8..7b62b166 100644
--- a/src/app_modules/admin/investasi/bukti_transfer/view.tsx
+++ b/src/app_modules/admin/investasi/bukti_transfer/view.tsx
@@ -1,6 +1,6 @@
"use client";
-import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
import {
Avatar,
@@ -41,7 +41,7 @@ export default function Admin_BuktiTransferInvestasi() {
<>
{/* Box Username */}
{listUsername.map((e) => (
- router.push(RouterAdminInvestasi.status_transfer)}>
+ router.push(RouterAdminInvestasi_OLD.status_transfer)}>
Username
diff --git a/src/app_modules/admin/investasi/fun/fun_reject_investasi.ts b/src/app_modules/admin/investasi/fun/fun_reject_investasi.ts
index 00a60faa..421e8bb1 100644
--- a/src/app_modules/admin/investasi/fun/fun_reject_investasi.ts
+++ b/src/app_modules/admin/investasi/fun/fun_reject_investasi.ts
@@ -1,7 +1,7 @@
"use server"
import prisma from "@/app/lib/prisma"
-import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"
+import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin"
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"
import { revalidatePath } from "next/cache"
@@ -17,7 +17,7 @@ export default async function Admin_funRejectInvestasi(data: any) {
})
if(!res) return {status: 400, message: "Gagal reject"}
- revalidatePath(RouterAdminInvestasi.main_investasi)
+ revalidatePath(RouterAdminInvestasi_OLD.main_investasi)
return {
status: 200,
diff --git a/src/app_modules/admin/investasi/halaman_aksi/view.tsx b/src/app_modules/admin/investasi/halaman_aksi/view.tsx
index fd8dca9c..3334db96 100644
--- a/src/app_modules/admin/investasi/halaman_aksi/view.tsx
+++ b/src/app_modules/admin/investasi/halaman_aksi/view.tsx
@@ -1,6 +1,6 @@
"use client";
-import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import {
Box,
Button,
@@ -24,13 +24,13 @@ export default function Admin_HalamanAksi({idInves}: {idInves: string}) {
id: 1,
name: "Konfirmasi",
desc: "Publis atau non - aktifkan proyek invetsasi",
- route: RouterAdminInvestasi.konfirmasi,
+ route: RouterAdminInvestasi_OLD.konfirmasi,
},
{
id: 2,
name: "Bukti Transfer",
desc: "Lihat bukti transfer investor",
- route: RouterAdminInvestasi.bukti_transfer,
+ route: RouterAdminInvestasi_OLD.bukti_transfer,
},
];
diff --git a/src/app_modules/admin/investasi/konfirmasi/view.tsx b/src/app_modules/admin/investasi/konfirmasi/view.tsx
index 6ae5b934..57715133 100644
--- a/src/app_modules/admin/investasi/konfirmasi/view.tsx
+++ b/src/app_modules/admin/investasi/konfirmasi/view.tsx
@@ -53,7 +53,7 @@ import { useRouter } from "next/navigation";
import { useState } from "react";
import toast, { toastConfig } from "react-simple-toasts";
import Admin_funRejectInvestasi from "../fun/fun_reject_investasi";
-import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import "react-simple-toasts/dist/theme/dark.css";
import { BeritaInvestasi } from "@/app_modules/investasi";
@@ -125,7 +125,7 @@ export default function Admin_KonfirmasiInvestasi({
await funGantiStatusInvestasi(investasi.id, "3", "1").then((res) => {
if (res.status === 200) {
setTimeout(() => setPublish(false), 1000);
- router.push(RouterAdminInvestasi.table_status_review);
+ router.push(RouterAdminInvestasi_OLD.table_status_review);
toast("Proyek Investasi Di Publish");
}
});
diff --git a/src/app_modules/admin/investasi/main/table_publish.tsx b/src/app_modules/admin/investasi/main/table_publish.tsx
index 1437c2b6..03bca98f 100644
--- a/src/app_modules/admin/investasi/main/table_publish.tsx
+++ b/src/app_modules/admin/investasi/main/table_publish.tsx
@@ -1,5 +1,5 @@
"use client";
-import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi";
import {
Badge,
@@ -55,7 +55,7 @@ export default function Admin_TablePublishInvestasi({
- router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`)
+ router.push(RouterAdminInvestasi_OLD.konfirmasi + `${e.id}`)
}
>
@@ -72,7 +72,7 @@ export default function Admin_TablePublishInvestasi({
return (
<>
- router.push(RouterAdminInvestasi.main_investasi)}>
+ router.push(RouterAdminInvestasi_OLD.main_investasi)}>
diff --git a/src/app_modules/admin/investasi/main/table_reject.tsx b/src/app_modules/admin/investasi/main/table_reject.tsx
index 08781012..5370977a 100644
--- a/src/app_modules/admin/investasi/main/table_reject.tsx
+++ b/src/app_modules/admin/investasi/main/table_reject.tsx
@@ -1,5 +1,5 @@
"use client";
-import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi";
import {
Badge,
@@ -44,7 +44,7 @@ export default function Admin_TableRejectInvestasi({
- router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`)
+ router.push(RouterAdminInvestasi_OLD.konfirmasi + `${e.id}`)
}
>
@@ -61,7 +61,7 @@ export default function Admin_TableRejectInvestasi({
return (
<>
- router.push(RouterAdminInvestasi.main_investasi)}>
+ router.push(RouterAdminInvestasi_OLD.main_investasi)}>
diff --git a/src/app_modules/admin/investasi/main/table_review.tsx b/src/app_modules/admin/investasi/main/table_review.tsx
index 8900969d..4562bd18 100644
--- a/src/app_modules/admin/investasi/main/table_review.tsx
+++ b/src/app_modules/admin/investasi/main/table_review.tsx
@@ -1,5 +1,5 @@
"use client";
-import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi";
import {
Badge,
@@ -55,7 +55,7 @@ export default function Admin_TableReviewInvestasi({
- router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`)
+ router.push(RouterAdminInvestasi_OLD.konfirmasi + `${e.id}`)
}
>
@@ -71,7 +71,7 @@ export default function Admin_TableReviewInvestasi({
return (
<>
- router.push(RouterAdminInvestasi.main_investasi)}>
+ router.push(RouterAdminInvestasi_OLD.main_investasi)}>
diff --git a/src/app_modules/admin/investasi/main/view.tsx b/src/app_modules/admin/investasi/main/view.tsx
index 7a858a6b..1bc6fdea 100644
--- a/src/app_modules/admin/investasi/main/view.tsx
+++ b/src/app_modules/admin/investasi/main/view.tsx
@@ -1,6 +1,6 @@
"use client";
-import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin";
+import { RouterAdminInvestasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi";
import {
ActionIcon,
@@ -13,6 +13,7 @@ import {
Group,
Paper,
ScrollArea,
+ SimpleGrid,
Stack,
Table,
Text,
@@ -37,6 +38,7 @@ import moment from "moment";
import _ from "lodash";
import TableTotalInvestasi from "./table_total_investasi";
import TablePublikasiProgresInvestasi from "./table_publikasi_progres";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
export default function Admin_Investasi({
listInvestasi,
@@ -70,73 +72,57 @@ export default function Admin_Investasi({
id: 2,
name: "Review",
jumlah: countReview,
- link: RouterAdminInvestasi.table_status_review,
+ link: RouterAdminInvestasi_OLD.table_status_review,
color: "orange",
},
{
id: 3,
name: "Publish",
jumlah: countPublish,
- link: RouterAdminInvestasi.table_status_publish,
+ link: RouterAdminInvestasi_OLD.table_status_publish,
color: "green",
},
{
id: 4,
name: "Reject",
jumlah: countReject,
- link: RouterAdminInvestasi.table_status_reject,
+ link: RouterAdminInvestasi_OLD.table_status_reject,
color: "red",
},
];
return (
<>
-
- Investasi
-
- {/* Status box */}
-
- {listBox.map((e) => (
-
-
-
- {e.name}
-
- {e.jumlah}
-
-
-
- {e.link === "" ? (
-
- {/* */}
-
- ) : (
- router.push(e.link)}
- >
-
-
- )}
-
-
-
- ))}
-
+
+
- {/* Table Total & Progres */}
- {/*
-
-
-
-
-
-
- */}
+
+ {listBox.map((e, i) => (
+
+
+
+ {e.name}
+ {e.jumlah}
+
+
+
+ ))}
+
>
);
diff --git a/src/app_modules/admin/job/child/arsip/index.tsx b/src/app_modules/admin/job/child/arsip/index.tsx
index af1cd6c1..e9809966 100644
--- a/src/app_modules/admin/job/child/arsip/index.tsx
+++ b/src/app_modules/admin/job/child/arsip/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
import {
diff --git a/src/app_modules/admin/job/child/publish/index.tsx b/src/app_modules/admin/job/child/publish/index.tsx
new file mode 100644
index 00000000..dcd0e6fe
--- /dev/null
+++ b/src/app_modules/admin/job/child/publish/index.tsx
@@ -0,0 +1,224 @@
+"use client";
+
+import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import {
+ Badge,
+ Button,
+ Center,
+ Group,
+ Pagination,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ TextInput,
+ Title
+} from "@mantine/core";
+import {
+ IconEyeCheck,
+ IconSearch
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import adminJob_getListPublish from "../../fun/get/get_list_publish";
+import { IconPhotoCheck } from "@tabler/icons-react";
+
+export default function AdminJob_TablePublish({
+ dataPublish,
+}: {
+ dataPublish: any;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ dataPublish }: { dataPublish: any }) {
+ const router = useRouter();
+
+ const [data, setData] = useState(dataPublish.data);
+ const [nPage, setNPage] = useState(dataPublish.nPage);
+ const [activePage, setActivePage] = useState(1);
+ const [isSearch, setSearch] = useState("");
+
+
+ async function onSearch(s: string) {
+ setSearch(s);
+ setActivePage(1);
+ const loadData = await adminJob_getListPublish({
+ page: 1,
+ search: s,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ async function onPageClick(p: any) {
+ setActivePage(p);
+ const loadData = await adminJob_getListPublish({
+ search: isSearch,
+ page: p,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ const TableRows = data?.map((e, i) => (
+
+ |
+
+ {e?.Author?.username}
+
+ |
+
+
+
+ {e?.isArsip ? (
+ Arsip
+ ) : (
+ Publish
+ )}
+
+
+ |
+
+
+ {e.title}
+
+ |
+
+
+ {e.imagesId ? (
+ }
+ onClick={() => {
+ router.push(RouterAdminJob.detail_poster + e?.imagesId);
+ }}
+ >
+ Lihat
+
+ ) : (
+
+
+ Tidak ada poster
+
+
+ )}
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ ));
+
+ return (
+ <>
+
+
+
+ {/* {JSON.stringify(listUser, null, 2)} */}
+
+
+ Publish
+
+ }
+ radius={"xl"}
+ placeholder="Masukan judul"
+ onChange={(val) => {
+ onSearch(val.currentTarget.value);
+ }}
+ />
+
+
+
+
+
+
+
+ |
+ Author
+ |
+
+ Status
+ |
+
+ Judul
+ |
+
+ Poster
+ |
+
+ Syarat Ketentuan
+ |
+
+ Deskripsi
+ |
+
+
+ {TableRows}
+
+
+
+ {
+ onPageClick(val);
+ }}
+ />
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/job/child/reject/index.tsx b/src/app_modules/admin/job/child/reject/index.tsx
new file mode 100644
index 00000000..f3a8b497
--- /dev/null
+++ b/src/app_modules/admin/job/child/reject/index.tsx
@@ -0,0 +1,338 @@
+"use client";
+
+import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
+import ComponentGlobal_InputCountDown from "@/app_modules/component_global/input_countdown";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import {
+ Button,
+ Center,
+ Group,
+ Modal,
+ Pagination,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ TextInput,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { IconBan, IconPhotoCheck, IconSearch } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { AdminJob_funEditCatatanById } from "../../fun/edit/fun_edit_catatan_by_id";
+import adminJob_getListReject from "../../fun/get/get_list_reject";
+import { AdminJob_getListTableByStatusId } from "../../fun/get/get_list_table_by_status_id";
+import mqtt_client from "@/util/mqtt_client";
+import adminNotifikasi_funCreateToUser from "@/app_modules/admin/notifikasi/fun/create/fun_create_notif_user";
+
+export default function AdminJob_TableReject({
+ dataReject,
+}: {
+ dataReject: any;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listReject }: { listReject: any }) {
+ const router = useRouter();
+ const [data, setData] = useState(listReject.data);
+ const [nPage, setNPage] = useState(listReject.nPage);
+ const [activePage, setActivePage] = useState(1);
+ const [isSearch, setSearch] = useState("");
+
+ const [reject, setReject] = useState(false);
+ const [jobId, setJobId] = useState("");
+ const [catatan, setCatatan] = useState("");
+
+ async function onSearch(s: string) {
+ setSearch(s);
+ const loadData = await adminJob_getListReject({
+ page: 1,
+ search: s,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ setActivePage(1);
+ }
+
+ async function onPageClick(p: any) {
+ setActivePage(p);
+ const loadData = await adminJob_getListReject({
+ search: isSearch,
+ page: p,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ const rowTable = data?.map((e, i) => (
+
+ |
+
+ {e?.Author?.username}
+
+ |
+
+
+ {e.title}
+
+ |
+
+
+ {e.imagesId ? (
+ }
+ onClick={() => {
+ router.push(RouterAdminJob.detail_poster + e?.imagesId);
+ }}
+ >
+ Lihat
+
+ ) : (
+
+
+ Tidak ada poster
+
+
+ )}
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+ {e.catatan}
+
+ |
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ setReject(true);
+ setJobId(e.id);
+ setCatatan(e.catatan);
+ }}
+ >
+
+ Tambah
+ Catatan
+
+
+ |
+
+ ));
+
+ return (
+ <>
+ {
+ setReject(false);
+ }}
+ withCloseButton={false}
+ size={"sm"}
+ centered
+ >
+
+
+
+
+ setReject(false)}>
+ Batal
+
+ {
+ onReject({
+ catatan: catatan,
+ jobId: jobId,
+ onSetData(val) {
+ setData(val.data);
+ setNPage(val.nPage);
+ },
+ });
+ setReject(false);
+ }}
+ >
+ Simpan
+
+
+
+
+
+
+
+
+ Reject
+
+ }
+ radius={"xl"}
+ placeholder="Masukan judul"
+ onChange={(val) => {
+ onSearch(val.currentTarget.value);
+ }}
+ />
+
+
+
+
+
+
+
+ |
+ Author
+ |
+
+ Judul
+ |
+
+ Poster
+ |
+
+ Syarat Ketentuan
+ |
+
+ Deskripsi
+ |
+
+ Report
+ |
+
+ Aksi
+ |
+
+
+ {rowTable}
+
+
+
+ {
+ onPageClick(val);
+ }}
+ />
+
+
+
+ >
+ );
+}
+
+async function onReject({
+ jobId,
+ catatan,
+ onSetData,
+}: {
+ jobId: string;
+ catatan: string;
+ onSetData: (val: any) => void;
+}) {
+ const reject = await AdminJob_funEditCatatanById(jobId, catatan);
+ if (reject.status === 200) {
+ const loadData = await adminJob_getListReject({ page: 1 });
+ onSetData(loadData);
+
+ const dataNotif = {
+ 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: "Report tambahan",
+ };
+
+ const notif = await adminNotifikasi_funCreateToUser({
+ data: dataNotif as any,
+ });
+
+ if (notif.status === 201) {
+ mqtt_client.publish(
+ "USER",
+ JSON.stringify({ userId: reject?.data?.authorId, count: 1 })
+ );
+ }
+
+ ComponentGlobal_NotifikasiBerhasil(reject.message);
+ } else {
+ ComponentGlobal_NotifikasiGagal(reject.message);
+ }
+}
diff --git a/src/app_modules/admin/job/child/review/index.tsx b/src/app_modules/admin/job/child/review/index.tsx
new file mode 100644
index 00000000..75b4145a
--- /dev/null
+++ b/src/app_modules/admin/job/child/review/index.tsx
@@ -0,0 +1,403 @@
+"use client";
+
+import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
+import adminNotifikasi_funCreateToUser from "@/app_modules/admin/notifikasi/fun/create/fun_create_notif_user";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import mqtt_client from "@/util/mqtt_client";
+import {
+ Button,
+ Center,
+ Group,
+ Modal,
+ Pagination,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ TextInput,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { useShallowEffect } from "@mantine/hooks";
+import {
+ IconBan,
+ IconEyeCheck,
+ IconEyeShare,
+ IconHandFinger,
+ IconSearch,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+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_getListReview from "../../fun/get/get_list_review";
+import { IconPhotoCheck } from "@tabler/icons-react";
+import ComponentGlobal_InputCountDown from "@/app_modules/component_global/input_countdown";
+
+export default function AdminJob_TableReview({
+ dataReview,
+}: {
+ dataReview: any;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listReview }: { listReview: any }) {
+ const router = useRouter();
+ const [data, setData] = useState(listReview.data);
+ const [nPage, setNPage] = useState(listReview.nPage);
+ const [activePage, setActivePage] = useState(1);
+ const [isSearch, setSearch] = useState("");
+
+ const [reject, setReject] = useState(false);
+ const [jobId, setJobId] = useState("");
+ const [catatan, setCatatan] = useState("");
+
+ useShallowEffect(() => {
+ onLoadData({
+ onSuccessLoad(val) {
+ setData(val.data);
+ setNPage(val.nPage);
+ },
+ });
+ }, [setData, setNPage]);
+
+ async function onLoadData({
+ onSuccessLoad,
+ }: {
+ onSuccessLoad: (val: any) => any;
+ }) {
+ const loadData = await adminJob_getListReview({ page: 1 });
+ onSuccessLoad(loadData);
+ }
+
+ async function onSearch(s: string) {
+ setSearch(s);
+ setActivePage(1)
+ const loadData = await adminJob_getListReview({
+ page: 1,
+ search: s,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ async function onPageClick(p: any) {
+ setActivePage(p);
+ const loadData = await adminJob_getListReview({
+ search: isSearch,
+ page: p,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ const rowTable = data?.map((e, i) => (
+
+ |
+
+ {e?.Author?.username}
+
+ |
+
+
+ {e.title}
+
+ |
+
+
+ {e.imagesId ? (
+ }
+ onClick={() => {
+ router.push(RouterAdminJob.detail_poster + e?.imagesId);
+ }}
+ >
+ Lihat
+
+ ) : (
+
+
+ Tidak ada poster
+
+
+ )}
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+ }
+ radius={"xl"}
+ onClick={() =>
+ onPublish({
+ jobId: e?.id,
+ onLoadData(val: any) {
+ setData(val.data);
+ setNPage(val.nPage);
+ },
+ })
+ }
+ >
+ Publish
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ setReject(true);
+ setJobId(e.id);
+ }}
+ >
+ Reject
+
+
+
+ |
+
+ ));
+
+ return (
+ <>
+ {
+ setReject(false);
+ }}
+ withCloseButton={false}
+ size={"sm"}
+ centered
+ >
+
+
+
+
+ setReject(false)}>
+ Batal
+
+ {
+ onReject({
+ jobId: jobId,
+ catatan: catatan,
+ onLoadData(val) {
+ setData(val.data);
+ setNPage(val.nPage);
+ },
+ });
+ setReject(false);
+ }}
+ >
+ Simpan
+
+
+
+
+
+
+
+
+ Review
+
+ }
+ radius={"xl"}
+ placeholder="Masukan judul"
+ onChange={(val) => {
+ onSearch(val.currentTarget.value);
+ }}
+ />
+
+
+
+
+
+
+
+ |
+ Author
+ |
+
+ Judul
+ |
+
+ Poster
+ |
+
+ Syarat Ketentuan
+ |
+
+ Deskripsi
+ |
+
+ Aksi
+ |
+
+
+ {rowTable}
+
+
+
+ {
+ onPageClick(val);
+ }}
+ />
+
+
+
+ >
+ );
+}
+
+async function onPublish({
+ jobId,
+ onLoadData,
+}: {
+ jobId: string;
+ onLoadData: (val: any) => void;
+}) {
+ const publish = await AdminJob_funEditStatusPublishById(jobId);
+ if (publish.status === 200) {
+ const loadData = await adminJob_getListReview({ page: 1 });
+ onLoadData(loadData);
+
+ const dataNotif = {
+ 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 notif = await adminNotifikasi_funCreateToUser({
+ data: dataNotif as any,
+ });
+
+ if (notif.status === 201) {
+ mqtt_client.publish(
+ "USER",
+ JSON.stringify({ userId: publish?.data?.authorId, count: 1 })
+ );
+ }
+
+ ComponentGlobal_NotifikasiBerhasil(publish.message);
+ } else {
+ ComponentGlobal_NotifikasiGagal(publish.message);
+ }
+}
+
+async function onReject({
+ jobId,
+ catatan,
+ onLoadData,
+}: {
+ jobId: string;
+ catatan: string;
+ onLoadData: (val: any) => void;
+}) {
+ const reject = await AdminJob_funEditCatatanById(jobId, catatan);
+
+ if (reject.status === 200) {
+ const loadData = await adminJob_getListReview({ page: 1 });
+ onLoadData(loadData);
+
+ ComponentGlobal_NotifikasiBerhasil(reject.message);
+
+ const dataNotif = {
+ 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 anda ditolak !",
+ };
+
+ const notif = await adminNotifikasi_funCreateToUser({
+ data: dataNotif as any,
+ });
+
+ if (notif.status === 201) {
+ mqtt_client.publish(
+ "USER",
+ JSON.stringify({ userId: dataNotif.userId, count: 1 })
+ );
+ }
+ } else {
+ ComponentGlobal_NotifikasiGagal(reject.message);
+ }
+}
diff --git a/src/app_modules/admin/job/child/table_publish/index.tsx b/src/app_modules/admin/job/child/table_publish/index.tsx
deleted file mode 100644
index 5ed128dd..00000000
--- a/src/app_modules/admin/job/child/table_publish/index.tsx
+++ /dev/null
@@ -1,171 +0,0 @@
-"use client";
-
-import { RouterJob } from "@/app/lib/router_hipmi/router_job";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
-import { MODEL_JOB } from "@/app_modules/job/model/interface";
-import {
- Avatar,
- Badge,
- Box,
- Button,
- Card,
- Center,
- Divider,
- Grid,
- Group,
- Image,
- Modal,
- Paper,
- ScrollArea,
- Spoiler,
- Stack,
- Table,
- Text,
- Title,
-} from "@mantine/core";
-import { useDisclosure } from "@mantine/hooks";
-import { IconBan, IconEyeCheck, IconEyeShare } from "@tabler/icons-react";
-import _ from "lodash";
-import { useRouter } from "next/navigation";
-import { useState } from "react";
-
-export default function AdminJob_TablePublish({
- dataVote,
-}: {
- dataVote?: any;
-}) {
- return (
- <>
-
-
-
-
- >
- );
-}
-
-function TableStatus({ listReview }: { listReview: MODEL_JOB[] }) {
- const router = useRouter();
- const [opened, { open, close }] = useDisclosure(false);
- const [data, setData] = useState(listReview);
- const [img, setImg] = useState("");
-
- const TableRows = data?.map((e, i) => (
-
- |
-
- {e.title}
-
- |
-
-
- {e.imagesId ? (
- }
- onClick={() => {
- setImg(e.imagesId);
- open();
- }}
- >
- Lihat
-
- ) : (
-
-
- Tidak ada poster
-
-
- )}
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
- ));
-
- return (
- <>
-
-
-
-
-
-
-
-
-
- PUBLISH
-
-
-
-
-
-
- |
- Judul
- |
-
- Poster
- |
-
- Syarat Ketentuan
- |
-
- Deskripsi
- |
-
-
- {TableRows}
-
-
-
- {_.isEmpty(TableRows) ? (
-
- Tidak Ada Data
-
- ) : (
- ""
- )}
-
-
- {/* {JSON.stringify(data, null, 2)} */}
- >
- );
-}
diff --git a/src/app_modules/admin/job/child/table_reject/index.tsx b/src/app_modules/admin/job/child/table_reject/index.tsx
deleted file mode 100644
index 2016b06f..00000000
--- a/src/app_modules/admin/job/child/table_reject/index.tsx
+++ /dev/null
@@ -1,251 +0,0 @@
-"use client";
-
-import { RouterJob } from "@/app/lib/router_hipmi/router_job";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
-import { MODEL_JOB } from "@/app_modules/job/model/interface";
-import {
- Avatar,
- Badge,
- Box,
- Button,
- Card,
- Center,
- Divider,
- Grid,
- Group,
- Image,
- Modal,
- Paper,
- ScrollArea,
- Spoiler,
- Stack,
- Table,
- Text,
- Textarea,
- Title,
-} from "@mantine/core";
-import { useDisclosure } from "@mantine/hooks";
-import { IconBan, IconEyeCheck, IconEyeShare } from "@tabler/icons-react";
-import _ from "lodash";
-import { useRouter } from "next/navigation";
-import { useState } from "react";
-import { AdminJob_funEditCatatanById } from "../../fun/edit/fun_edit_catatan_by_id";
-import { AdminJob_getListTableByStatusId } from "../../fun/get/get_list_table_by_status_id";
-import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
-import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
-
-export default function AdminJob_TableReject({ dataVote }: { dataVote?: any }) {
- return (
- <>
-
-
-
-
- >
- );
-}
-
-function TableStatus({ listReject }: { listReject: MODEL_JOB[] }) {
- const [opened, { open, close }] = useDisclosure(false);
- const [data, setData] = useState(listReject);
- const [reject, setReject] = useState(false);
- const [img, setImg] = useState("");
- const [jobId, setJobId] = useState("");
- const [catatan, setCatatan] = useState("");
-
- const TableRows = data?.map((e, i) => (
-
- |
-
- {e.title}
-
- |
-
-
- {e.imagesId ? (
- }
- onClick={() => {
- setImg(e.imagesId);
- open();
- }}
- >
- Lihat
-
- ) : (
-
-
- Tidak ada poster
-
-
- )}
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
- {e.catatan}
-
- |
-
- }
- radius={"xl"}
- onClick={() => {
- setReject(true);
- setJobId(e.id);
- setCatatan(e.catatan);
- }}
- >
- Reject
-
- |
-
- ));
-
- return (
- <>
-
-
-
-
-
-
- {
- setReject(false);
- }}
- withCloseButton={false}
- size={"lg"}
- centered
- >
-
-
-
-
-
-
-
- REJECT
-
-
-
-
-
-
- |
- Judul
- |
-
- Poster
- |
-
- Syarat Ketentuan
- |
-
- Deskripsi
- |
-
- Catatan
- |
-
- Aksi
- |
-
-
- {TableRows}
-
-
-
- {_.isEmpty(TableRows) ? (
-
- Tidak Ada Data
-
- ) : (
- ""
- )}
-
-
- {/* {JSON.stringify(data, null, 2)} */}
- >
- );
-}
-
-async function onReject(jobId: string, catatan: string, setData: any) {
- await AdminJob_funEditCatatanById(jobId, catatan).then(async (res) => {
- if (res.status === 200) {
- await AdminJob_getListTableByStatusId("4").then((val) => {
- setData(val);
- ComponentGlobal_NotifikasiBerhasil(res.message);
- });
- } else {
- ComponentGlobal_NotifikasiGagal(res.message);
- }
- });
-}
diff --git a/src/app_modules/admin/job/child/table_review/index.tsx b/src/app_modules/admin/job/child/table_review/index.tsx
deleted file mode 100644
index 31e80a2e..00000000
--- a/src/app_modules/admin/job/child/table_review/index.tsx
+++ /dev/null
@@ -1,263 +0,0 @@
-"use client";
-
-import { RouterJob } from "@/app/lib/router_hipmi/router_job";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
-import { MODEL_JOB } from "@/app_modules/job/model/interface";
-import {
- Avatar,
- Badge,
- Box,
- Button,
- Card,
- Center,
- Divider,
- Grid,
- Group,
- Image,
- Modal,
- Paper,
- ScrollArea,
- Spoiler,
- Stack,
- Table,
- Text,
- Textarea,
- Title,
-} from "@mantine/core";
-import { useDisclosure } from "@mantine/hooks";
-import { IconBan, IconEyeCheck, IconEyeShare } from "@tabler/icons-react";
-import _ from "lodash";
-import { useRouter } from "next/navigation";
-import { useState } from "react";
-import { AdminJob_funEditStatusPublishById } from "../../fun/edit/fun_edit_status_publish_by_id";
-import { AdminJob_getListTableByStatusId } from "../../fun/get/get_list_table_by_status_id";
-import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
-import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
-import { AdminJob_funEditCatatanById } from "../../fun/edit/fun_edit_catatan_by_id";
-
-export default function AdminJob_TableReview({ dataVote }: { dataVote?: any }) {
- return (
- <>
-
-
-
-
- >
- );
-}
-
-function TableStatus({ listReview }: { listReview: MODEL_JOB[] }) {
- const router = useRouter();
- const [opened, { open, close }] = useDisclosure(false);
- const [data, setData] = useState(listReview);
- const [reject, setReject] = useState(false);
- const [img, setImg] = useState("");
- const [jobId, setJobId] = useState("");
- const [catatan, setCatatan] = useState("");
-
- const TableRows = data?.map((e, i) => (
-
- |
-
- {e.title}
-
- |
-
-
- {e.imagesId ? (
- }
- onClick={() => {
- setImg(e.imagesId);
- open();
- }}
- >
- Lihat
-
- ) : (
-
-
- Tidak ada poster
-
-
- )}
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
-
-
- }
- radius={"xl"}
- onClick={() => onPublish(e.id, setData)}
- >
- Publish
-
- }
- radius={"xl"}
- onClick={() => {
- setReject(true);
- setJobId(e.id);
- }}
- >
- Reject
-
-
-
- |
-
- ));
-
- return (
- <>
-
-
-
-
-
-
- {
- setReject(false);
- }}
- withCloseButton={false}
- size={"lg"}
- centered
- >
-
-
-
-
-
-
-
- REVIEW
-
-
-
-
-
-
- |
- Judul
- |
-
- Poster
- |
-
- Syarat Ketentuan
- |
-
- Deskripsi
- |
-
- Aksi
- |
-
-
- {TableRows}
-
-
-
- {_.isEmpty(TableRows) ? (
-
- Tidak Ada Data
-
- ) : (
- ""
- )}
-
-
- {/* {JSON.stringify(data, null, 2)} */}
- >
- );
-}
-
-async function onPublish(jobId: string, setData: any) {
- await AdminJob_funEditStatusPublishById(jobId).then(async (res) => {
- if (res.status === 200) {
- await AdminJob_getListTableByStatusId("2").then((res) => {
- setData(res);
- ComponentGlobal_NotifikasiBerhasil("Berhasil Update");
- });
- } else {
- ComponentGlobal_NotifikasiGagal(res.message);
- }
- });
-}
-
-async function onReject(jobId: string, catatan: string, setData: any) {
- await AdminJob_funEditCatatanById(jobId, catatan).then(async (res) => {
- if (res.status === 200) {
- await AdminJob_getListTableByStatusId("2").then((val) => {
- setData(val);
- ComponentGlobal_NotifikasiBerhasil(res.message);
- });
- } else {
- ComponentGlobal_NotifikasiGagal(res.message);
- }
- });
-}
diff --git a/src/app_modules/admin/job/detail/detail_poster.tsx b/src/app_modules/admin/job/detail/detail_poster.tsx
new file mode 100644
index 00000000..a3757528
--- /dev/null
+++ b/src/app_modules/admin/job/detail/detail_poster.tsx
@@ -0,0 +1,27 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { Center, Image, Stack } from "@mantine/core";
+import ComponentGlobalAdmin_BackButton from "../../component_global/back_button";
+
+export default function AdminJob_DetailPoster({
+ imageId,
+}: {
+ imageId: string;
+}) {
+ return (
+ <>
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/job/fun/edit/fun_edit_catatan_by_id.ts b/src/app_modules/admin/job/fun/edit/fun_edit_catatan_by_id.ts
index 9efc1005..18aee664 100644
--- a/src/app_modules/admin/job/fun/edit/fun_edit_catatan_by_id.ts
+++ b/src/app_modules/admin/job/fun/edit/fun_edit_catatan_by_id.ts
@@ -7,7 +7,7 @@ export async function AdminJob_funEditCatatanById(
jobId: string,
catatan: string
) {
- const up = await prisma.job.update({
+ const udpt = await prisma.job.update({
where: {
id: jobId,
},
@@ -15,9 +15,21 @@ export async function AdminJob_funEditCatatanById(
masterStatusId: "4",
catatan: catatan,
},
+ select: {
+ id: true,
+ authorId: true,
+ MasterStatus: {
+ select: {
+ name: true,
+ },
+ },
+ title: true,
+ },
});
- if (!up) return { status: 400, message: "Gagal reject" };
+
+
+ if (!udpt) return { status: 400, message: "Gagal menambah catatan" };
revalidatePath("/dev/admin/job/child/table_review");
- return { status: 200, message: "Berhasil reject" };
+ return {data: udpt, status: 200, message: "Berhasil menambah catatan" };
}
diff --git a/src/app_modules/admin/job/fun/edit/fun_edit_status_publish_by_id.ts b/src/app_modules/admin/job/fun/edit/fun_edit_status_publish_by_id.ts
index 95c9f233..b2933fde 100644
--- a/src/app_modules/admin/job/fun/edit/fun_edit_status_publish_by_id.ts
+++ b/src/app_modules/admin/job/fun/edit/fun_edit_status_publish_by_id.ts
@@ -11,10 +11,20 @@ export async function AdminJob_funEditStatusPublishById(jobId: string) {
data: {
masterStatusId: "1",
},
+ select: {
+ id: true,
+ authorId: true,
+ MasterStatus: {
+ select: {
+ name: true,
+ },
+ },
+ title: true,
+ },
});
if(!updt) return {status: 400, message: "Update Gagal"}
revalidatePath("/dev/admin/job/child/table_review");
- return {status: 200, message: "Berhasil Update"}
+ return {data: updt, status: 200, message: "Berhasil Update"}
}
diff --git a/src/app_modules/admin/job/fun/get/get_list_publish.ts b/src/app_modules/admin/job/fun/get/get_list_publish.ts
new file mode 100644
index 00000000..48c0c5f2
--- /dev/null
+++ b/src/app_modules/admin/job/fun/get/get_list_publish.ts
@@ -0,0 +1,63 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { ceil } from "lodash";
+
+export default async function adminJob_getListPublish({
+ page,
+ search,
+}: {
+ page: number;
+ search?: string;
+}) {
+ let takeData = 5;
+ let skipData = page * takeData - takeData;
+
+ const getData = await prisma.job.findMany({
+ skip: skipData,
+ take: takeData,
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "1",
+ isActive: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ isArsip: true,
+ createdAt: true,
+ updatedAt: true,
+ content: true,
+ deskripsi: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ imagesId: true,
+ },
+ });
+
+ const nCount = await prisma.job.count({
+ where: {
+ masterStatusId: "1",
+ isActive: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ });
+
+ const allData = {
+ data: getData,
+ nPage: ceil(nCount / takeData),
+ };
+
+ return allData;
+}
diff --git a/src/app_modules/admin/job/fun/get/get_list_reject.ts b/src/app_modules/admin/job/fun/get/get_list_reject.ts
new file mode 100644
index 00000000..a0bd212d
--- /dev/null
+++ b/src/app_modules/admin/job/fun/get/get_list_reject.ts
@@ -0,0 +1,62 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { ceil } from "lodash";
+
+export default async function adminJob_getListReject({
+ page,
+ search,
+}: {
+ page: number;
+ search?: string;
+}) {
+ let takeData = 5;
+ let skipData = page * takeData - takeData;
+
+ const getData = await prisma.job.findMany({
+ skip: skipData,
+ take: takeData,
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "4",
+ isActive: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ content: true,
+ deskripsi: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ imagesId: true,
+ },
+ });
+
+ const nCount = await prisma.job.count({
+ where: {
+ masterStatusId: "4",
+ isActive: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ });
+
+ const allData = {
+ data: getData,
+ nPage: ceil(nCount / takeData),
+ };
+
+ return allData;
+}
diff --git a/src/app_modules/admin/job/fun/get/get_list_review.ts b/src/app_modules/admin/job/fun/get/get_list_review.ts
new file mode 100644
index 00000000..a5b1fa49
--- /dev/null
+++ b/src/app_modules/admin/job/fun/get/get_list_review.ts
@@ -0,0 +1,62 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { ceil } from "lodash";
+
+export default async function adminJob_getListReview({
+ page,
+ search,
+}: {
+ page: number;
+ search?: string;
+}) {
+ let takeData = 5;
+ let skipData = page * takeData - takeData;
+
+ const getData = await prisma.job.findMany({
+ skip: skipData,
+ take: takeData,
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "2",
+ isActive: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ content: true,
+ deskripsi: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ imagesId: true,
+ },
+ });
+
+ const nCount = await prisma.job.count({
+ where: {
+ masterStatusId: "2",
+ isActive: true,
+ title: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ });
+
+ const allData = {
+ data: getData,
+ nPage: ceil(nCount / takeData),
+ };
+
+ return allData;
+}
diff --git a/src/app_modules/admin/job/index.tsx b/src/app_modules/admin/job/index.tsx
index 1ad41655..66200ba8 100644
--- a/src/app_modules/admin/job/index.tsx
+++ b/src/app_modules/admin/job/index.tsx
@@ -1,6 +1,13 @@
import AdminJob_Main from "./main";
-import AdminJob_TablePublish from "./child/table_publish";
-import AdminJob_TableReview from "./child/table_review";
-import AdminJob_TableReject from "./child/table_reject";
+import AdminJob_TablePublish from "./child/publish";
+import AdminJob_TableReview from "./child/review";
+import AdminJob_TableReject from "./child/reject";
+import AdminJob_DetailPoster from "./detail/detail_poster";
-export { AdminJob_Main, AdminJob_TablePublish, AdminJob_TableReview, AdminJob_TableReject };
+export {
+ AdminJob_Main,
+ AdminJob_TablePublish,
+ AdminJob_TableReview,
+ AdminJob_TableReject,
+ AdminJob_DetailPoster,
+};
diff --git a/src/app_modules/admin/job/main/index.tsx b/src/app_modules/admin/job/main/index.tsx
index 59197fed..3e1c4f77 100644
--- a/src/app_modules/admin/job/main/index.tsx
+++ b/src/app_modules/admin/job/main/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { Group, Paper, SimpleGrid, Stack, Text, Title } from "@mantine/core";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
import { useRouter } from "next/navigation";
export default function AdminJob_Main({
@@ -23,24 +23,28 @@ export default function AdminJob_Main({
name: "Publish",
jumlah: countPublish,
color: "green",
+ text_color: "white",
},
{
id: 2,
name: "Review",
jumlah: countReview,
color: "orange",
+ text_color: "white",
},
{
id: 3,
name: "Reject",
jumlah: countReject,
color: "red",
+ text_color: "white",
},
{
id: 4,
name: "Arsip",
jumlah: countArsip,
color: "gray",
+ text_color: "white",
},
];
return (
diff --git a/src/app_modules/admin/layout.tsx b/src/app_modules/admin/layout.tsx
index 1fdc3da0..56552365 100644
--- a/src/app_modules/admin/layout.tsx
+++ b/src/app_modules/admin/layout.tsx
@@ -1,90 +1,83 @@
"use client";
+import mqtt_client from "@/util/mqtt_client";
import {
ActionIcon,
AppShell,
- Avatar,
+ Badge,
Box,
Burger,
+ Card,
+ Center,
Divider,
Drawer,
- Footer,
Group,
Header,
- Loader,
+ Indicator,
MediaQuery,
NavLink,
Navbar,
+ Paper,
ScrollArea,
Stack,
Text,
Title,
useMantineTheme,
} from "@mantine/core";
-import React, { useState } from "react";
-import ComponentGlobal_HeaderTamplate from "../component_global/header_tamplate";
-import { useDisclosure } from "@mantine/hooks";
import {
+ IconBell,
IconCheck,
+ IconChecks,
IconCircleDot,
IconCircleDotFilled,
- IconDashboard,
- IconHome,
- IconLetterH,
- IconLogout,
+ IconUserSquareRounded,
} from "@tabler/icons-react";
-import {
- RouterAdminAward,
- RouterAdminDashboard,
- RouterAdminDonasi,
- RouterAdminInvestasi,
-} from "@/app/lib/router_hipmi/router_admin";
-import { useRouter } from "next/navigation";
-import { RouterHome } from "@/app/lib/router_hipmi/router_home";
-import { Logout } from "@/app_modules/auth";
import { useAtom } from "jotai";
-import { gs_admin_hotMenu, gs_admin_subMenu } from "./global_state";
-import Admin_Logout from "./component/logout";
-import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
import _ from "lodash";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { useRouter } from "next/navigation";
+import React, { useEffect, useState } from "react";
+import { MODEL_USER } from "../home/model/interface";
+import { MODEL_NOTIFIKASI } from "../notifikasi/model/interface";
+import Admin_Logout from "./component_global/logout";
+import {
+ gs_admin_hotMenu,
+ gs_admin_subMenu,
+ gs_layout_admin_isNavbarOpen,
+} from "./global_state";
import { listAdminPage } from "./list_page";
-import { RouterAdminVote } from "@/app/lib/router_admin/router_admin_vote";
-import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job";
-import { gs_kodeId } from "../auth/state/state";
-import { auth_Logout } from "../auth/fun/fun_logout";
-import { ComponentGlobal_NotifikasiBerhasil } from "../component_global/notif_global/notifikasi_berhasil";
-import { ComponentGlobal_NotifikasiPeringatan } from "../component_global/notif_global/notifikasi_peringatan";
+import adminNotifikasi_countNotifikasi from "./notifikasi/fun/count/count_is_read";
+import adminNotifikasi_getByUserId from "./notifikasi/fun/get/get_notifikasi_by_user_id";
+import adminNotifikasi_funUpdateIsReadById from "./notifikasi/fun/update/fun_update_is_read_by_id";
export default function AdminLayout({
- userRole,
children,
+ listNotif,
+ dataUser,
+ countNotifikasi,
}: {
- userRole: string;
children: React.ReactNode;
+ listNotif: MODEL_NOTIFIKASI[];
+ dataUser: MODEL_USER;
+ countNotifikasi: number;
}) {
const theme = useMantineTheme();
const [opened, setOpened] = useState(false);
const router = useRouter();
- const [active, setActive] = useAtom(gs_admin_hotMenu);
+ const [activeId, setActiveId] = useAtom(gs_admin_hotMenu);
const [activeChild, setActiveChild] = useAtom(gs_admin_subMenu);
const [loading, setLoading] = useState(false);
- const [kodeId, setKodeId] = useAtom(gs_kodeId);
- async function onClickLogout() {
- // await auth_Logout(kodeId).then((res) => {
- // ComponentGlobal_NotifikasiBerhasil("Berhasil Logout");
- // });
- await auth_Logout(kodeId).then((res) => {
- if (res.status === 200) {
- ComponentGlobal_NotifikasiBerhasil(res.message);
- setKodeId("");
- } else {
- ComponentGlobal_NotifikasiPeringatan(res.message);
- }
- });
- }
+ const [user, setUser] = useState(dataUser);
+ const userRoleId = user.masterUserRoleId;
- const navbarItems = listAdminPage.map((e, i) => (
+ const [isNotif, setIsNotif] = useState(false);
+ const [dataNotif, setDataNotif] = useState(listNotif);
+
+ const [countNotif, setCountNotif] = useState(countNotifikasi);
+ const [isNavbarOpen, setIsNavbarOpen] = useAtom(gs_layout_admin_isNavbarOpen);
+
+ const developerNavbar = listAdminPage.map((e, i) => (
: e.icon : e.icon
e.icon
@@ -100,7 +93,7 @@ export default function AdminLayout({
label={{e.name}}
onClick={() => {
setLoading(true);
- setActive(e.id);
+ setActiveId(e.id);
setActiveChild(null);
e.path === "" ? router.push(e.child[0].path) : router.push(e.path);
e.path === "" ? setActiveChild(e.child[0].id) : "";
@@ -128,7 +121,7 @@ export default function AdminLayout({
)
}
onClick={() => {
- setActive(e.id);
+ setActiveId(e.id);
setActiveChild(v.id);
router.push(v.path);
}}
@@ -142,26 +135,26 @@ export default function AdminLayout({
));
const bukanDeveloper = listAdminPage.slice(0, -1);
- const notAdminDev = bukanDeveloper.map((e) => (
+ const adminNavbar = bukanDeveloper.map((e) => (
: e.icon : e.icon
- e.icon
- }
+ fw={activeId === e.id ? "bold" : "normal"}
+ icon={e.icon}
label={{e.name}}
onClick={() => {
setLoading(true);
- setActive(e.id);
+ setActiveId(e.id);
setActiveChild(null);
e.path === "" ? router.push(e.child[0].path) : router.push(e.path);
e.path === "" ? setActiveChild(e.child[0].id) : "";
+
+ setIsNavbarOpen(true);
}}
>
{_.isEmpty(e.child) ? (
@@ -186,7 +179,7 @@ export default function AdminLayout({
)
}
onClick={() => {
- setActive(e.id);
+ setActiveId(e.id);
setActiveChild(v.id);
router.push(v.path);
}}
@@ -199,20 +192,20 @@ export default function AdminLayout({
));
- const navbarAdmin = (
-
- }
- label="Developer"
- sx={{
- ":hover": {
- backgroundColor: "transparent",
- },
- }}
- />
-
- );
+ async function onLoadNotifikasi() {
+ const loadNotif = await adminNotifikasi_getByUserId();
+ setDataNotif(loadNotif as any);
+ }
+
+ useEffect(() => {
+ mqtt_client.subscribe("ADMIN");
+
+ mqtt_client.on("message", (topic: any, message: any) => {
+ const data = JSON.parse(message.toString());
+ // console.log(data);
+ setCountNotif(countNotif + data.count);
+ });
+ }, [countNotif]);
return (
<>
@@ -220,29 +213,37 @@ export default function AdminLayout({
padding="md"
navbarOffsetBreakpoint="md"
asideOffsetBreakpoint="sm"
- navbar={
-
-
-
-
-
- {userRole === "3" ? navbarItems : notAdminDev}
- {/* } label="Create Admin" /> */}
-
-
-
-
-
- }
header={
-
+
+ {/* Web View */}
+
+
+ Dashboard Admin
+
+
+ {
+ setIsNotif(true);
+ onLoadNotifikasi();
+ }}
+ >
+ {countNotif}}
+ >
+
+
+
+
+
+ {user?.username}
+
+
+
+
+
+
{/* Mobile View */}
@@ -254,31 +255,47 @@ export default function AdminLayout({
mr="xl"
/>
Dashboard Admin
-
-
-
-
- {/* Web View */}
-
-
- Dashboard Admin
- HIPMI
- {/*
- {listAdminPage.map((e) => (
- router.push(e.route)}>
- {e.name}
-
- ))}
- */}
-
+ {/* */}
+
+
+
}
+ navbar={
+
+
+
+
+ {userRoleId === "3" ? developerNavbar : adminNavbar}
+
+
+
+
+
+
+
+ V 1.0.0
+
+
+
+
+
+
+
+ }
>
- {/* {JSON.stringify(active)} */}
{children}
+ {/* Drawer Mobile View */}
setOpened(false)} size={"50%"}>
{listAdminPage.map((e) => (
@@ -288,6 +305,210 @@ export default function AdminLayout({
))}
+
+ {/* Drawer Notifikasi */}
+
+
+ Notifikasi
+
+
+ }
+ opened={isNotif}
+ onClose={() => setIsNotif(false)}
+ position="right"
+ size={"xs"}
+ >
+ {
+ setDataNotif(val);
+ }}
+ onChangeNavbar={(val: any) => {
+ setActiveId(val.id);
+ setActiveChild(val.childId);
+ }}
+ onToggleNavbar={setIsNavbarOpen}
+ onLoadCountNotif={(val: any) => {
+ setCountNotif(val);
+ }}
+ />
+
>
);
}
+
+function DrawerNotifikasi({
+ data,
+ onLoadReadNotif,
+ onChangeNavbar,
+ onToggleNavbar,
+ onLoadCountNotif,
+}: {
+ data: MODEL_NOTIFIKASI[];
+ onLoadReadNotif: (val: any) => void;
+ onChangeNavbar: (val: any) => void;
+ onToggleNavbar: (val: any) => void;
+ onLoadCountNotif: (val: any) => void;
+}) {
+ const router = useRouter();
+
+ if (_.isEmpty(data)) {
+ return (
+ <>
+
+
+ Tidak ada notifikasi
+
+
+ >
+ );
+ }
+
+ return (
+ <>
+
+
+ {data.map((e, i) => (
+ {
+ e?.kategoriApp === "JOB" &&
+ findRouterJob({
+ data: e,
+ router: router,
+ onChangeNavbar2: (val: any) => {
+ onChangeNavbar(val);
+ },
+ onToggleNavbar2: onToggleNavbar,
+ });
+
+ const updateIsRead = await adminNotifikasi_funUpdateIsReadById({
+ notifId: e?.id,
+ });
+
+ if (updateIsRead) {
+ const loadCountNotif =
+ await adminNotifikasi_countNotifikasi();
+ onLoadCountNotif(loadCountNotif);
+
+ const loadDataNotif = await adminNotifikasi_getByUserId();
+ onLoadReadNotif(loadDataNotif);
+ } else {
+ return null;
+ }
+
+ // callBackIsNotifikasi(false);
+ }}
+ >
+
+
+
+
+ # {e?.kategoriApp}
+
+ {e?.status ? (
+
+ {e?.status}
+
+ ) : (
+ ""
+ )}
+
+
+
+
+
+
+
+ {e?.title}
+
+
+ {e?.pesan}
+
+
+
+
+
+
+ {new Intl.DateTimeFormat("id-ID", {
+ dateStyle: "long",
+ }).format(e?.createdAt)}
+
+
+ {", "}
+ {new Intl.DateTimeFormat("id-ID", {
+ timeStyle: "short",
+ }).format(e?.createdAt)}
+
+
+ {e?.isRead ? (
+
+
+
+ Sudah dilihat
+
+
+ ) : (
+
+
+
+ Belum dilihat
+
+
+ )}
+
+
+
+ ))}
+
+
+ >
+ );
+}
+
+async function findRouterJob({
+ data,
+ router,
+ onChangeNavbar2,
+ onToggleNavbar2,
+}: {
+ data: MODEL_NOTIFIKASI;
+ router: AppRouterInstance;
+ onChangeNavbar2: (val: any) => void;
+ onToggleNavbar2: (val: any) => void;
+}) {
+ const routeName = "/dev/admin/job/child/";
+
+ if (data.status === "Review") {
+ router.push(routeName + _.lowerCase(data.status));
+ onChangeNavbar2({
+ id: 6,
+ childId: 63,
+ });
+ }
+
+ if (data.status === "Draft") {
+ router.push(routeName + "review");
+ onChangeNavbar2({
+ id: 6,
+ childId: 63,
+ });
+ }
+
+ onToggleNavbar2(true);
+}
diff --git a/src/app_modules/admin/list_page.tsx b/src/app_modules/admin/list_page.tsx
index 54cadf1c..583b3244 100644
--- a/src/app_modules/admin/list_page.tsx
+++ b/src/app_modules/admin/list_page.tsx
@@ -1,19 +1,23 @@
import { RouterAdminColab } from "@/app/lib/router_admin/router_admin_colab";
import { RouterAdminDeveloper } from "@/app/lib/router_admin/router_admin_developer";
+import { RouterAdminDonasi } from "@/app/lib/router_admin/router_admin_donasi";
import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum";
+import { RouterAdminInvestasi } from "@/app/lib/router_admin/router_admin_investasi";
import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job";
import { RouterAdminVote } from "@/app/lib/router_admin/router_admin_vote";
import { RouterAdminUserAccess } from "@/app/lib/router_admin/router_admn_user_acces";
+import { RouterAdminAppInformation } from "@/app/lib/router_admin/router_app_information";
import {
RouterAdminDashboard,
- RouterAdminDonasi,
- RouterAdminInvestasi,
+ RouterAdminDonasi_OLD,
+ RouterAdminInvestasi_OLD,
} from "@/app/lib/router_hipmi/router_admin";
import {
IconAffiliate,
IconBriefcase,
IconDashboard,
+ IconDeviceMobile,
IconMessages,
IconUserCog,
} from "@tabler/icons-react";
@@ -26,6 +30,7 @@ import {
} from "@tabler/icons-react";
export const listAdminPage = [
+ // Main Dashboard
{
id: 1,
name: "Main Dashboard",
@@ -33,21 +38,73 @@ export const listAdminPage = [
icon: ,
child: [],
},
+
+ // Investasi
{
id: 2,
name: "Investasi",
- path: RouterAdminInvestasi.main_investasi,
+ path: "",
icon: ,
-
- child: [],
+ child: [
+ {
+ id: 21,
+ name: "Dashboard",
+ path: RouterAdminInvestasi.main,
+ },
+ {
+ id: 22,
+ name: "Table Publish",
+ path: RouterAdminInvestasi.table_publish,
+ },
+ {
+ id: 23,
+ name: "Table Review",
+ path: RouterAdminInvestasi.table_review,
+ },
+ {
+ id: 24,
+ name: "Table Reject",
+ path: RouterAdminInvestasi.table_reject,
+ },
+ ],
},
+
+ //Donasi
{
id: 3,
name: "Donasi",
- path: RouterAdminDonasi.main_donasi,
+ path: "",
icon: ,
- child: [],
+ child: [
+ {
+ id: 31,
+ name: "Dashboard",
+ path: RouterAdminDonasi.main,
+ },
+ {
+ id: 32,
+ name: "Table Publish",
+ path: RouterAdminDonasi.table_publish,
+ },
+ {
+ id: 33,
+ name: "Table Review",
+ path: RouterAdminDonasi.table_review,
+ },
+ {
+ id: 34,
+ name: "Table Reject",
+ path: RouterAdminDonasi.table_reject,
+ },
+ {
+ id: 35,
+ name: "Table Kategori",
+ path: RouterAdminDonasi.table_kategori,
+ },
+ ],
},
+
+ // Event
{
id: 4,
name: "Event",
@@ -86,6 +143,8 @@ export const listAdminPage = [
},
],
},
+
+ // Voting
{
id: 5,
name: "Voting",
@@ -119,6 +178,8 @@ export const listAdminPage = [
},
],
},
+
+ // Job Vacancy
{
id: 6,
name: "Job Vacancy",
@@ -133,25 +194,27 @@ export const listAdminPage = [
{
id: 62,
name: "Table Publish",
- path: RouterAdminJob.table_publish,
+ path: RouterAdminJob.publish,
},
{
id: 63,
name: "Table Review",
- path: RouterAdminJob.table_review,
+ path: RouterAdminJob.review,
},
{
id: 64,
name: "Table Reject",
- path: RouterAdminJob.table_reject,
- },
- {
- id: 65,
- name: "Arsip",
- path: RouterAdminJob.arsip,
+ path: RouterAdminJob.reject,
},
+ // {
+ // id: 65,
+ // name: "Arsip",
+ // path: RouterAdminJob.arsip,
+ // },
],
},
+
+ // Forum
{
id: 7,
name: "Forum",
@@ -180,6 +243,8 @@ export const listAdminPage = [
// },
],
},
+
+ // Project Collaboration
{
id: 8,
name: "Project Collaboration",
@@ -208,6 +273,16 @@ export const listAdminPage = [
},
],
},
+
+ {
+ id: 97,
+ name: "App Information",
+ path: RouterAdminAppInformation.main,
+ icon: ,
+ child: [],
+ },
+
+ // User Access
{
id: 98,
name: "User Access",
@@ -215,6 +290,8 @@ export const listAdminPage = [
icon: ,
child: [],
},
+
+ // Developer
{
id: 99,
name: "Developer",
diff --git a/src/app_modules/admin/main_dashboard/fun/count/fun_count_user.ts b/src/app_modules/admin/main_dashboard/fun/count/fun_count_user.ts
index 36a66612..d95451c8 100644
--- a/src/app_modules/admin/main_dashboard/fun/count/fun_count_user.ts
+++ b/src/app_modules/admin/main_dashboard/fun/count/fun_count_user.ts
@@ -1,8 +1,13 @@
-"use server"
+"use server";
-import prisma from "@/app/lib/prisma"
+import prisma from "@/app/lib/prisma";
export async function AdminMainDashboard_CountUser() {
- const data = await prisma.user.count()
- return data
-}
\ No newline at end of file
+ const data = await prisma.user.count({
+ where: {
+ active: true,
+ masterUserRoleId: "1",
+ },
+ });
+ return data;
+}
diff --git a/src/app_modules/admin/notifikasi/fun/count/count_is_read.ts b/src/app_modules/admin/notifikasi/fun/count/count_is_read.ts
new file mode 100644
index 00000000..8d1ca366
--- /dev/null
+++ b/src/app_modules/admin/notifikasi/fun/count/count_is_read.ts
@@ -0,0 +1,18 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token";
+
+export default async function adminNotifikasi_countNotifikasi() {
+ const adminId = await user_getOneUserId();
+
+ const data = await prisma.notifikasi.findMany({
+ where: {
+ adminId: adminId,
+ isRead: false,
+ userRoleId: "2",
+ },
+ });
+
+ return data.length;
+}
diff --git a/src/app_modules/admin/notifikasi/fun/create/fun_create_notif_user.ts b/src/app_modules/admin/notifikasi/fun/create/fun_create_notif_user.ts
new file mode 100644
index 00000000..9be8ca49
--- /dev/null
+++ b/src/app_modules/admin/notifikasi/fun/create/fun_create_notif_user.ts
@@ -0,0 +1,28 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token";
+import { MODEL_NOTIFIKASI } from "@/app_modules/notifikasi/model/interface";
+
+export default async function adminNotifikasi_funCreateToUser({
+ data,
+}: {
+ data: MODEL_NOTIFIKASI;
+}) {
+ const adminId = await user_getOneUserId();
+
+ const create = await prisma.notifikasi.create({
+ data: {
+ adminId: adminId,
+ userId: data.userId,
+ appId: data.appId,
+ status: data.status,
+ title: data.title,
+ pesan: data.pesan,
+ kategoriApp: data.kategoriApp,
+ userRoleId: "1",
+ },
+ });
+
+ return { status: 201, message: "Berhasil mengirim notifikasi" };
+}
diff --git a/src/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id.ts b/src/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id.ts
new file mode 100644
index 00000000..5f2bfc74
--- /dev/null
+++ b/src/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id.ts
@@ -0,0 +1,21 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token";
+import { NextRequest } from "next/server";
+
+export default async function adminNotifikasi_getByUserId() {
+ const adminId = await user_getOneUserId();
+
+ const data = await prisma.notifikasi.findMany({
+
+ orderBy: {
+ createdAt: "desc",
+ },
+ where: {
+ adminId: adminId,
+ userRoleId: "2",
+ },
+ });
+ return data;
+}
diff --git a/src/app_modules/admin/notifikasi/fun/update/fun_update_is_read_by_id.ts b/src/app_modules/admin/notifikasi/fun/update/fun_update_is_read_by_id.ts
new file mode 100644
index 00000000..39d680d8
--- /dev/null
+++ b/src/app_modules/admin/notifikasi/fun/update/fun_update_is_read_by_id.ts
@@ -0,0 +1,21 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export default async function adminNotifikasi_funUpdateIsReadById({
+ notifId,
+}: {
+ notifId: string;
+}) {
+ const updt = await prisma.notifikasi.update({
+ where: {
+ id: notifId,
+ },
+ data: {
+ isRead: true,
+ },
+ });
+
+ if (!updt) return { status: 400 };
+ return { status: 200 };
+}
diff --git a/src/app_modules/admin/notifikasi/index.ts b/src/app_modules/admin/notifikasi/index.ts
new file mode 100644
index 00000000..f1de6874
--- /dev/null
+++ b/src/app_modules/admin/notifikasi/index.ts
@@ -0,0 +1,2 @@
+// test notif
+
diff --git a/src/app_modules/admin/user-access/fun/get/get_list_all_user.ts b/src/app_modules/admin/user-access/fun/get/get_list_all_user.ts
index ada9cdb1..55f8da17 100644
--- a/src/app_modules/admin/user-access/fun/get/get_list_all_user.ts
+++ b/src/app_modules/admin/user-access/fun/get/get_list_all_user.ts
@@ -1,13 +1,47 @@
"use server";
import prisma from "@/app/lib/prisma";
+import _, { ceil } from "lodash";
-export default async function adminUserAccess_getListUser() {
- const get = await prisma.user.findMany({
+export default async function adminUserAccess_getListUser({
+ search,
+ page,
+}: {
+ search?: string;
+ page: number;
+}) {
+ const dataSkip = _.toNumber(page) * 9 - 9;
+ const dataTake = 9;
+
+ const getData = await prisma.user.findMany({
+ skip: dataSkip,
+ take: 9,
+ orderBy: {
+ updatedAt: "asc",
+ },
where: {
masterUserRoleId: "1",
+ username: {
+ contains: search,
+ mode: "insensitive",
+ },
},
});
- return get;
+ const nCount = await prisma.user.count({
+ where: {
+ masterUserRoleId: "1",
+ username: {
+ contains: search,
+ mode: "insensitive",
+ },
+ },
+ });
+
+ const allData = {
+ data: getData,
+ nPage: ceil(nCount / dataTake),
+ };
+
+ return allData;
}
diff --git a/src/app_modules/admin/user-access/view/index.tsx b/src/app_modules/admin/user-access/view/index.tsx
index 8e266805..3180cda9 100644
--- a/src/app_modules/admin/user-access/view/index.tsx
+++ b/src/app_modules/admin/user-access/view/index.tsx
@@ -5,6 +5,7 @@ import {
Button,
Center,
Group,
+ Pagination,
Paper,
ScrollArea,
Stack,
@@ -19,17 +20,21 @@ import adminUserAccess_getListUser from "../fun/get/get_list_all_user";
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
-export default function AdminUserAccess_View({
- listUser,
-}: {
- listUser: MODEL_USER[];
-}) {
- const [data, setData] = useState(listUser);
+export default function AdminUserAccess_View({ listUser }: { listUser: any }) {
+ const [data, setData] = useState(listUser.data);
+ const [isActivePage, setActivePage] = useState(1);
+ const [isNPage, setNPage] = useState(listUser.nPage);
+ const [isSearch, setSearch] = useState("");
+
async function onAccess(id: string) {
await adminUserAccess_funEditAccess(id, true).then(async (res) => {
if (res.status === 200) {
- const value = await adminUserAccess_getListUser();
- setData(value as any);
+ const value = await adminUserAccess_getListUser({
+ page: 1,
+ search: isSearch,
+ });
+ setData(value.data as any);
+ setNPage(value.nPage);
ComponentGlobal_NotifikasiBerhasil(res.message);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
@@ -40,8 +45,12 @@ export default function AdminUserAccess_View({
async function onDelAccess(id: string) {
await adminUserAccess_funEditAccess(id, false).then(async (res) => {
if (res.status === 200) {
- const value = await adminUserAccess_getListUser();
- setData(value as any);
+ const value = await adminUserAccess_getListUser({
+ page: 1,
+ search: isSearch,
+ });
+ setData(value.data as any);
+ setNPage(value.nPage);
ComponentGlobal_NotifikasiBerhasil(res.message);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
@@ -49,6 +58,27 @@ export default function AdminUserAccess_View({
});
}
+ async function onSearch(s: any) {
+ setSearch(s);
+ setActivePage(1);
+ const loadData = await adminUserAccess_getListUser({
+ search: s,
+ page: 1,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
+ async function onPageClick(p: any) {
+ setActivePage(p);
+ const loadData = await adminUserAccess_getListUser({
+ search: isSearch,
+ page: p,
+ });
+ setData(loadData.data as any);
+ setNPage(loadData.nPage);
+ }
+
const tableBody = data.map((e, i) => (
|
@@ -86,9 +116,10 @@ export default function AdminUserAccess_View({
|
));
+
return (
<>
-
+
{/* {JSON.stringify(listUser, null, 2)} */}
Table User
- {/* }
- radius={"xl"}
- placeholder="Masukan username"
- /> */}
+ }
+ radius={"xl"}
+ placeholder="Masukan username"
+ onChange={(val) => {
+ onSearch(val.currentTarget.value);
+ }}
+ />
-
-
+
+
+
+
+ {
+ onPageClick(val);
+ }}
+ />
+
>
diff --git a/src/app_modules/admin/vote/child/riwayat/index.tsx b/src/app_modules/admin/vote/child/riwayat/index.tsx
index 59c464ea..e1f513c8 100644
--- a/src/app_modules/admin/vote/child/riwayat/index.tsx
+++ b/src/app_modules/admin/vote/child/riwayat/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
diff --git a/src/app_modules/admin/vote/child/table_publish/index.tsx b/src/app_modules/admin/vote/child/table_publish/index.tsx
index d52c337f..ddc2224b 100644
--- a/src/app_modules/admin/vote/child/table_publish/index.tsx
+++ b/src/app_modules/admin/vote/child/table_publish/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
import {
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 4f68d1ae..5e7b544e 100644
--- a/src/app_modules/admin/vote/child/table_reject/index.tsx
+++ b/src/app_modules/admin/vote/child/table_reject/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
import {
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 a2bae3d2..643466cb 100644
--- a/src/app_modules/admin/vote/child/table_review/index.tsx
+++ b/src/app_modules/admin/vote/child/table_review/index.tsx
@@ -1,7 +1,7 @@
"use client";
import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
-import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component_global/header_tamplate";
import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
import {
diff --git a/src/app_modules/admin/vote/main/index.tsx b/src/app_modules/admin/vote/main/index.tsx
index 5c5e7c3d..ba29d2e5 100644
--- a/src/app_modules/admin/vote/main/index.tsx
+++ b/src/app_modules/admin/vote/main/index.tsx
@@ -2,7 +2,7 @@
import { Stack, SimpleGrid, Paper, Group, Title, Text } from "@mantine/core";
import { useRouter } from "next/navigation";
-import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate";
export default function AdminVote_Main({
countPublish,
diff --git a/src/app_modules/auth/validasi/layout.tsx b/src/app_modules/auth/validasi/layout.tsx
index 56e952a4..9e611223 100644
--- a/src/app_modules/auth/validasi/layout.tsx
+++ b/src/app_modules/auth/validasi/layout.tsx
@@ -1,6 +1,6 @@
"use client";
-import { ActionIcon, AppShell, Box, Group, Header, Stack } from "@mantine/core";
+import { ActionIcon, Box, Stack } from "@mantine/core";
import { IconChevronLeft } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
import React from "react";
@@ -32,29 +32,3 @@ export default function LayoutValidasi({
);
}
-// export default function LayoutValidasi({
-// children,
-// }: {
-// children: React.ReactNode;
-// }) {
-// const router = useRouter()
-
-// return (
-// <>
-//
-//
-// router.back()} >
-//
-//
-//
-//
-// }
-// >
-// {children}
-//
-// >
-// );
-// }
diff --git a/src/app_modules/colab/create/layout.tsx b/src/app_modules/colab/create/layout.tsx
index 8acd4dea..1fd529de 100644
--- a/src/app_modules/colab/create/layout.tsx
+++ b/src/app_modules/colab/create/layout.tsx
@@ -1,6 +1,6 @@
"use client";
-import { AppShell } from "@mantine/core";
+import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import React from "react";
import ComponentColab_HeaderTamplate from "../component/header_tamplate";
@@ -11,11 +11,11 @@ export default function LayoutColab_Create({
}) {
return (
<>
- }
>
{children}
-
+
>
);
}
diff --git a/src/app_modules/colab/detail/grup/layout.tsx b/src/app_modules/colab/detail/grup/layout.tsx
index ee0ef30d..57848624 100644
--- a/src/app_modules/colab/detail/grup/layout.tsx
+++ b/src/app_modules/colab/detail/grup/layout.tsx
@@ -1,35 +1,23 @@
"use client";
+import { RouterColab } from "@/app/lib/router_hipmi/router_colab";
import {
ActionIcon,
- AppShell,
Box,
Center,
- Footer,
Grid,
Group,
Header,
Stack,
- Text,
- TextInput,
- Textarea,
- Title,
+ Title
} from "@mantine/core";
-import React, { useState } from "react";
-import ComponentColab_HeaderTamplate from "../../component/header_tamplate";
import {
IconChevronLeft,
- IconInfoSquareRounded,
- IconPlane,
- IconSend,
+ IconInfoSquareRounded
} from "@tabler/icons-react";
-import { useAtom } from "jotai";
-import { gs_colab_pesan } from "../../global_state";
-import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
-import { MODEL_COLLABORATION_ROOM_CHAT } from "../../model/interface";
-import { RouterColab } from "@/app/lib/router_hipmi/router_colab";
-import { useViewportSize } from "@mantine/hooks";
import { useRouter } from "next/navigation";
+import React, { useState } from "react";
+import { MODEL_COLLABORATION_ROOM_CHAT } from "../../model/interface";
export default function LayoutColab_DetailGrupDiskusi({
children,
diff --git a/src/app_modules/colab/detail/main_detail/layout.tsx b/src/app_modules/colab/detail/main_detail/layout.tsx
index c975154c..aa743d40 100644
--- a/src/app_modules/colab/detail/main_detail/layout.tsx
+++ b/src/app_modules/colab/detail/main_detail/layout.tsx
@@ -1,10 +1,10 @@
"use client";
-import { AppShell } from "@mantine/core";
+import { RouterColab } from "@/app/lib/router_hipmi/router_colab";
+import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
+import { IconEdit } from "@tabler/icons-react";
import React from "react";
import ComponentColab_HeaderTamplate from "../../component/header_tamplate";
-import { IconEdit } from "@tabler/icons-react";
-import { RouterColab } from "@/app/lib/router_hipmi/router_colab";
export default function LayoutColab_MainDetail({
children,
@@ -17,7 +17,7 @@ export default function LayoutColab_MainDetail({
}) {
return (
<>
-
{children}
-
+
>
);
}
diff --git a/src/app_modules/colab/detail/proyek/partisipasi/layout.tsx b/src/app_modules/colab/detail/proyek/partisipasi/layout.tsx
index bd39b3b8..9634aaeb 100644
--- a/src/app_modules/colab/detail/proyek/partisipasi/layout.tsx
+++ b/src/app_modules/colab/detail/proyek/partisipasi/layout.tsx
@@ -1,7 +1,7 @@
"use client";
import ComponentColab_HeaderTamplate from "@/app_modules/colab/component/header_tamplate";
-import { AppShell } from "@mantine/core";
+import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
export default function LayoutColab_DetailPartisipasiProyek({
children,
@@ -10,7 +10,11 @@ export default function LayoutColab_DetailPartisipasiProyek({
}) {
return (
<>
- }>{children}
+ }
+ >
+ {children}
+
>
);
}
diff --git a/src/app_modules/colab/detail/status/publish/layout.tsx b/src/app_modules/colab/detail/status/publish/layout.tsx
index 798f68a9..77be69ab 100644
--- a/src/app_modules/colab/detail/status/publish/layout.tsx
+++ b/src/app_modules/colab/detail/status/publish/layout.tsx
@@ -2,7 +2,6 @@
import ComponentColab_HeaderTamplate from "@/app_modules/colab/component/header_tamplate";
import { AppShell } from "@mantine/core";
-import { IconEdit } from "@tabler/icons-react";
import React from "react";
export default function LayoutColab_DetailStatusPublish({
@@ -12,13 +11,7 @@ export default function LayoutColab_DetailStatusPublish({
}) {
return (
<>
-
- }
- >
+ }>
{children}
>
diff --git a/src/app_modules/colab/edit/layout.tsx b/src/app_modules/colab/edit/layout.tsx
index 58ec809e..a9c5dba0 100644
--- a/src/app_modules/colab/edit/layout.tsx
+++ b/src/app_modules/colab/edit/layout.tsx
@@ -1,6 +1,6 @@
"use client";
-import { AppShell } from "@mantine/core";
+import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import React from "react";
import ComponentColab_HeaderTamplate from "../component/header_tamplate";
@@ -11,9 +11,9 @@ export default function LayoutColab_Edit({
}) {
return (
<>
- }>
+ }>
{children}
-
+
>
);
}
diff --git a/src/app_modules/colab/main/layout.tsx b/src/app_modules/colab/main/layout.tsx
index 4142269f..02f658b0 100644
--- a/src/app_modules/colab/main/layout.tsx
+++ b/src/app_modules/colab/main/layout.tsx
@@ -1,35 +1,28 @@
"use client";
+import { RouterColab } from "@/app/lib/router_hipmi/router_colab";
+import { RouterHome } from "@/app/lib/router_hipmi/router_home";
+import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import {
ActionIcon,
- AppShell,
- Box,
Center,
Footer,
Grid,
Indicator,
- Loader,
Stack,
- Text,
+ Text
} from "@mantine/core";
-import React, { useState } from "react";
-import ComponentColab_HeaderTamplate from "../component/header_tamplate";
-import router from "next/router";
import {
IconBell,
- IconHistory,
IconHome,
IconMessages,
- IconReservedLine,
- IconUsersGroup,
+ IconUsersGroup
} from "@tabler/icons-react";
-import { RouterColab } from "@/app/lib/router_hipmi/router_colab";
-import { useRouter } from "next/navigation";
import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import React, { useState } from "react";
+import ComponentColab_HeaderTamplate from "../component/header_tamplate";
import { gs_colab_hot_menu } from "../global_state";
-import { RouterHome } from "@/app/lib/router_hipmi/router_home";
-import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
-import { useTimeout } from "@mantine/hooks";
export default function LayoutColab_Main({
children,
diff --git a/src/app_modules/colab/splash/index.tsx b/src/app_modules/colab/splash/index.tsx
index 6ad2d3f3..659b4d97 100644
--- a/src/app_modules/colab/splash/index.tsx
+++ b/src/app_modules/colab/splash/index.tsx
@@ -16,7 +16,7 @@ export default function Colab_Splash() {
setHotMenu(1);
// setStatus("Publish");
router.replace(RouterColab.beranda);
- }, 2000);
+ }, 1000);
}, []);
return (
diff --git a/src/app_modules/component_global/header_tamplate.tsx b/src/app_modules/component_global/header_tamplate.tsx
index af408f3d..485b0683 100644
--- a/src/app_modules/component_global/header_tamplate.tsx
+++ b/src/app_modules/component_global/header_tamplate.tsx
@@ -3,6 +3,7 @@
import { Header, Group, ActionIcon, Text, Title } from "@mantine/core";
import { IconArrowLeft, IconChevronLeft } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
+import { useState } from "react";
export default function ComponentGlobal_HeaderTamplate({
route,
@@ -16,13 +17,18 @@ export default function ComponentGlobal_HeaderTamplate({
icon?: any;
}) {
const router = useRouter();
+ const [isLoading, setIsLoading] = useState(false);
+ const [isRightLoading, setRightLoading] = useState(false);
+
return (
<>
{
+ setIsLoading(true);
if (route === null || route === undefined) {
return router.back();
} else {
@@ -39,8 +45,12 @@ export default function ComponentGlobal_HeaderTamplate({
} else {
return (
router.push(route2)}
+ onClick={() => {
+ setRightLoading(true);
+ router.push(route2);
+ }}
>
{icon}
diff --git a/src/app_modules/component_global/is_empty_data.tsx b/src/app_modules/component_global/is_empty_data.tsx
new file mode 100644
index 00000000..5f2262d7
--- /dev/null
+++ b/src/app_modules/component_global/is_empty_data.tsx
@@ -0,0 +1,13 @@
+"use client";
+
+import { Center } from "@mantine/core";
+
+export default function ComponentGlobal_IsEmptyData({ text }: { text: string }) {
+ return (
+ <>
+
+ {text}
+
+ >
+ );
+}
diff --git a/src/app_modules/component_global/variabel_global.ts b/src/app_modules/component_global/variabel_global.ts
new file mode 100644
index 00000000..b70605aa
--- /dev/null
+++ b/src/app_modules/component_global/variabel_global.ts
@@ -0,0 +1,18 @@
+import { ComponentGlobal_NotifikasiPeringatan } from "./notif_global/notifikasi_peringatan";
+
+/**
+ * @returns nilai maksimal untuk upload file di semua module
+ */
+export let maksimalUploadFile = 2000000;
+export const ComponentGlobal_WarningMaxUpload = ({
+ text,
+ time,
+}: {
+ text?: string;
+ time?: number;
+}) => {
+ ComponentGlobal_NotifikasiPeringatan(
+ text ? text : "Maaf, Ukuran file terlalu besar, maximum 2mb",
+ time ? time : 3000
+ );
+};
diff --git a/src/app_modules/crowd/main/layout.tsx b/src/app_modules/crowd/main/layout.tsx
index 93669ee0..4504496e 100644
--- a/src/app_modules/crowd/main/layout.tsx
+++ b/src/app_modules/crowd/main/layout.tsx
@@ -2,8 +2,6 @@
import AppComponentGlobal_LayoutTamplate from "@/app_modules/component_global/component_layout_tamplate";
import ComponentGlobal_HeaderTamplate from "@/app_modules/component_global/header_tamplate";
-import { ActionIcon, AppShell, Group, Header, Text } from "@mantine/core";
-import { IconArrowLeft } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
import React from "react";
@@ -16,7 +14,12 @@ export default function LayoutMainCrowd({
return (
<>
}
+ header={
+
+ }
>
{children}
diff --git a/src/app_modules/crowd/splash/view.tsx b/src/app_modules/crowd/splash/view.tsx
index 31514e8e..7bad5f81 100644
--- a/src/app_modules/crowd/splash/view.tsx
+++ b/src/app_modules/crowd/splash/view.tsx
@@ -1,7 +1,7 @@
"use client";
import { Warna } from "@/app/lib/warna";
-import { Center, Image, Stack, Text, Title } from "@mantine/core";
+import { Center, Image, Paper, Stack, Text, Title } from "@mantine/core";
import { useShallowEffect } from "@mantine/hooks";
import { useRouter } from "next/navigation";
@@ -9,15 +9,14 @@ export default function SplashCrowd() {
const router = useRouter();
useShallowEffect(() => {
- setTimeout(() => router.push("/dev/crowd/main"), 2000);
+ setTimeout(() => router.push("/dev/crowd/main"), 1000);
}, []);
return (
<>
-
- Welcome to
+
-
+
>
);
diff --git a/src/app_modules/donasi/component/box_publish.tsx b/src/app_modules/donasi/component/box_publish.tsx
index f6972dcd..35d32c2b 100644
--- a/src/app_modules/donasi/component/box_publish.tsx
+++ b/src/app_modules/donasi/component/box_publish.tsx
@@ -20,6 +20,8 @@ import { MODEL_DONASI } from "../model/interface";
import { useViewportSize } from "@mantine/hooks";
import { useRouter } from "next/navigation";
import { useState } from "react";
+import _ from "lodash";
+import ComponentDonasi_IsEmptyData from "./is_empty_data";
export default function ComponentDonasi_BoxPublish({
dataDonasi,
@@ -33,62 +35,66 @@ export default function ComponentDonasi_BoxPublish({
const [donasi, setDonasi] = useState(dataDonasi);
return (
<>
-
- {donasi.map((e, i) => (
- {
- router.push(path + `${e.id}`);
- }}
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
- {e.title}
-
-
+ {_.isEmpty(dataDonasi) ? (
+
+ ) : (
+
+ {donasi.map((e, i) => (
+ {
+ router.push(path + `${e.id}`);
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {e.title}
+
+
+
+
+
+ Terkumpul
+
+
+
+
-
-
- Terkumpul
-
-
-
-
-
-
-
- {width > 575 ? "" : }
-
-
- ))}
-
+
+
+ {width > 575 ? "" : }
+