diff --git a/src/app/dev/admin/forum/child/report-komentar/page.tsx b/src/app/dev/admin/forum/child/report-komentar/page.tsx deleted file mode 100644 index cf8566da..00000000 --- a/src/app/dev/admin/forum/child/report-komentar/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { AdminForum_TableReportKomentar } from "@/app_modules/admin/forum"; - -export default async function Page() { - return ( - <> - - - ); -} diff --git a/src/app/dev/admin/forum/child/report-posting/page.tsx b/src/app/dev/admin/forum/child/report-posting/page.tsx deleted file mode 100644 index 2235353a..00000000 --- a/src/app/dev/admin/forum/child/report-posting/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { AdminForum_TableReportPosting } from "@/app_modules/admin/forum"; - -export default async function Page() { - return ( - <> - - - ); -} diff --git a/src/app/dev/admin/forum/children/semua-komentar/[id]/page.tsx b/src/app/dev/admin/forum/detail/[id]/page.tsx similarity index 64% rename from src/app/dev/admin/forum/children/semua-komentar/[id]/page.tsx rename to src/app/dev/admin/forum/detail/[id]/page.tsx index 663ee0e9..69063651 100644 --- a/src/app/dev/admin/forum/children/semua-komentar/[id]/page.tsx +++ b/src/app/dev/admin/forum/detail/[id]/page.tsx @@ -1,17 +1,25 @@ import { AdminForum_LihatSemuaKomentar } from "@/app_modules/admin/forum"; +import adminForum_countKomentarByPostingId from "@/app_modules/admin/forum/fun/count/fun_count_komentar_by_id"; import { adminForum_getListKomentarById } from "@/app_modules/admin/forum/fun/get/get_list_komentar_by_id"; import { adminForum_getOnePostingById } from "@/app_modules/admin/forum/fun/get/get_one_posting_by_id"; export default async function Page({ params }: { params: { id: string } }) { let postingId = params.id; - const listKomentar = await adminForum_getListKomentarById(postingId); + + const listKomentar = await adminForum_getListKomentarById({ + postingId: postingId, + page: 1, + }); const dataPosting = await adminForum_getOnePostingById(postingId); + const countKomentar = await adminForum_countKomentarByPostingId({postingId: postingId}) + return ( <> ); diff --git a/src/app/dev/admin/forum/hasil-report/komentar/[id]/page.tsx b/src/app/dev/admin/forum/hasil-report/komentar/[id]/page.tsx deleted file mode 100644 index 9b9dbfe8..00000000 --- a/src/app/dev/admin/forum/hasil-report/komentar/[id]/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { AdminForum_HasilReportKomentar } from "@/app_modules/admin/forum" -import { adminForum_getListReportKomentarbyId } from "@/app_modules/admin/forum/fun/get/get_list_report_komentar_by_id"; - -export default async function Page({params}: {params: {id: string}}) { - let komentarId = params.id - const listReport = await adminForum_getListReportKomentarbyId(komentarId) - - return ( - <> - - - ); -} \ No newline at end of file diff --git a/src/app/dev/admin/forum/sub-detail/report-komentar/[id]/page.tsx b/src/app/dev/admin/forum/sub-detail/report-komentar/[id]/page.tsx new file mode 100644 index 00000000..32d1107c --- /dev/null +++ b/src/app/dev/admin/forum/sub-detail/report-komentar/[id]/page.tsx @@ -0,0 +1,16 @@ +import { AdminForum_HasilReportKomentar } from "@/app_modules/admin/forum"; +import { adminForum_getListReportKomentarbyId } from "@/app_modules/admin/forum/fun/get/get_list_report_komentar_by_id"; + +export default async function Page({ params }: { params: { id: string } }) { + let komentarId = params.id; + const listReport = await adminForum_getListReportKomentarbyId({komentarId: komentarId, page: 1}); + + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/forum/hasil-report/posting/[id]/page.tsx b/src/app/dev/admin/forum/sub-detail/report-posting/[id]/page.tsx similarity index 55% rename from src/app/dev/admin/forum/hasil-report/posting/[id]/page.tsx rename to src/app/dev/admin/forum/sub-detail/report-posting/[id]/page.tsx index a8f5eee0..a40c7fed 100644 --- a/src/app/dev/admin/forum/hasil-report/posting/[id]/page.tsx +++ b/src/app/dev/admin/forum/sub-detail/report-posting/[id]/page.tsx @@ -1,14 +1,20 @@ import { AdminForum_HasilReportPosting } from "@/app_modules/admin/forum"; import { adminForum_getListReportPostingById } from "@/app_modules/admin/forum/fun/get/get_list_report_posting_by_id"; +import { adminForum_getOnePostingById } from "@/app_modules/admin/forum/fun/get/get_one_posting_by_id"; export default async function Page({ params }: { params: { id: string } }) { let postingId = params.id; - const listReport = await adminForum_getListReportPostingById(postingId); + const listReport = await adminForum_getListReportPostingById({ + postingId: postingId, + page: 1, + }); + + const dataPosting = await adminForum_getOnePostingById(postingId); return ( <> diff --git a/src/app/dev/admin/forum/child/publish/page.tsx b/src/app/dev/admin/forum/sub-menu/posting/page.tsx similarity index 65% rename from src/app/dev/admin/forum/child/publish/page.tsx rename to src/app/dev/admin/forum/sub-menu/posting/page.tsx index f98121f7..c6457777 100644 --- a/src/app/dev/admin/forum/child/publish/page.tsx +++ b/src/app/dev/admin/forum/sub-menu/posting/page.tsx @@ -1,8 +1,8 @@ import { AdminForum_TablePublish } from "@/app_modules/admin/forum"; -import { adminForum_getListPublish } from "@/app_modules/admin/forum/fun/get/get_list_publish"; +import { adminForum_getListPosting } from "@/app_modules/admin/forum/fun/get/get_list_publish"; export default async function Page() { - const listPublish = await adminForum_getListPublish(); + const listPublish = await adminForum_getListPosting({page: 1}); return ( <> diff --git a/src/app/dev/admin/forum/sub-menu/report-posting/page.tsx b/src/app/dev/admin/forum/sub-menu/report-posting/page.tsx new file mode 100644 index 00000000..9d2e6dfb --- /dev/null +++ b/src/app/dev/admin/forum/sub-menu/report-posting/page.tsx @@ -0,0 +1,12 @@ +import { AdminForum_TableReportPosting } from "@/app_modules/admin/forum"; +import adminForum_funGetAllReportPosting from "@/app_modules/admin/forum/fun/get/get_all_report_posting"; + +export default async function Page() { + const listData = await adminForum_funGetAllReportPosting({ page: 1 }); + + return ( + <> + + + ); +} diff --git a/src/app/dev/admin/main/dashboard/page.tsx b/src/app/dev/admin/main/dashboard/page.tsx index ee00cc55..e046e03a 100644 --- a/src/app/dev/admin/main/dashboard/page.tsx +++ b/src/app/dev/admin/main/dashboard/page.tsx @@ -6,5 +6,9 @@ export default async function Page() { const countUser = await AdminMainDashboard_CountUser(); const countPorto = await AdminMainDashboard_CountPOrtofolio(); + // await new Promise((a, b) => { + // setTimeout(a, 4000); + // }); + return ; } diff --git a/src/app/dev/auth/validasi/[id]/layout.tsx b/src/app/dev/auth/validasi/[id]/layout.tsx deleted file mode 100644 index af451bb8..00000000 --- a/src/app/dev/auth/validasi/[id]/layout.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { LayoutValidasi } from "@/app_modules/auth"; -import { ActionIcon, Button } from "@mantine/core"; -import Link from "next/link"; -import React from "react"; - -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - <> - {children} - - ); -} diff --git a/src/app/dev/forum/main/page.tsx b/src/app/dev/forum/main/page.tsx index c10d567a..f1caab55 100644 --- a/src/app/dev/forum/main/page.tsx +++ b/src/app/dev/forum/main/page.tsx @@ -1,6 +1,5 @@ import { Forum_Beranda } from "@/app_modules/forum"; import { forum_new_getAllPosting } from "@/app_modules/forum/fun/get/new_get_all_posting"; -import forum_v2_getAllPosting from "@/app_modules/forum/fun/get/v2_get_all_posting"; import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { diff --git a/src/app/lib/router_admin/router_admin_forum.ts b/src/app/lib/router_admin/router_admin_forum.ts index ddefb1fd..9b68b6f9 100644 --- a/src/app/lib/router_admin/router_admin_forum.ts +++ b/src/app/lib/router_admin/router_admin_forum.ts @@ -1,13 +1,16 @@ export const RouterAdminForum = { + // main main: "/dev/admin/forum/main", - publish: "/dev/admin/forum/child/publish", - report_komentar: "/dev/admin/forum/child/report-komentar", - report_posting: "/dev/admin/forum/child/report-posting", - //children - semua_komentar: "/dev/admin/forum/children/semua-komentar/", - - // report - hasil_report_posting: "/dev/admin/forum/hasil-report/posting/", - hasil_report_komentar: "/dev/admin/forum/hasil-report/komentar/" + // sub menu + table_posting: "/dev/admin/forum/sub-menu/posting", + table_report_posting: "/dev/admin/forum/sub-menu/report-posting", + + + // detail + detail_posting: "/dev/admin/forum/detail/", + + // sub detail + report_komentar: "/dev/admin/forum/sub-detail/report-komentar/", + report_posting: "/dev/admin/forum/sub-detail/report-posting/", }; diff --git a/src/app_modules/admin/app_info/main/index.tsx b/src/app_modules/admin/app_info/main/index.tsx index cce2f39c..7494c5c5 100644 --- a/src/app_modules/admin/app_info/main/index.tsx +++ b/src/app_modules/admin/app_info/main/index.tsx @@ -1,44 +1,12 @@ "use client"; import { - ActionIcon, - Button, - Center, - Grid, - Group, - Modal, - Paper, - ScrollArea, Space, - Stack, - Table, - Text, - TextInput, - Title, - Tooltip, + Stack } from "@mantine/core"; -import { list } from "postcss"; import ComponentAdminGlobal_HeaderTamplate from "../../component_global/header_tamplate"; -import { useState } from "react"; -import { - IconEdit, - IconEye, - IconEyeClosed, - IconEyeOff, - IconPhone, - IconPlus, - IconTrack, - IconTrash, -} from "@tabler/icons-react"; -import { ComponentGlobalAdmin_NotifikasiPeringatan } from "../../component_global/admin_notifikasi/notifikasi_peringatan"; -import adminAppInformation_funUpdateNomorAdmin from "../fun/update/fun_update_nomor"; -import { ComponentGlobalAdmin_NotifikasiBerhasil } from "../../component_global/admin_notifikasi/notifikasi_berhasil"; -import { ComponentGlobalAdmin_NotifikasiGagal } from "../../component_global/admin_notifikasi/notifikasi_gagal"; -import adminAppInformation_getNomorAdmin from "../fun/master/get_nomor_admin"; -import { MODEL_DATA_BANK } from "@/app_modules/investasi/model/model_investasi"; -import _ from "lodash"; -import InformasiWhatApps from "./info_whatsapp"; import InformasiBank from "./info_bank"; +import InformasiWhatApps from "./info_whatsapp"; export default function AdminAppInformation_MainView({ nomorAdmin, diff --git a/src/app_modules/admin/app_info/main/info_bank.tsx b/src/app_modules/admin/app_info/main/info_bank.tsx index 90e058d6..70d11f08 100644 --- a/src/app_modules/admin/app_info/main/info_bank.tsx +++ b/src/app_modules/admin/app_info/main/info_bank.tsx @@ -2,41 +2,34 @@ import { MODEL_DATA_BANK } from "@/app_modules/investasi/model/model_investasi"; import { - Center, - Stack, ActionIcon, - Tooltip, - Group, - Title, Button, + Center, + Grid, + Group, + Modal, Paper, ScrollArea, - Modal, - TextInput, - Text, - Table, - SimpleGrid, - Grid, + Stack, Switch, + Table, + Text, + TextInput, + Title, + Tooltip } from "@mantine/core"; import { - IconEye, - IconEyeOff, - IconEdit, - IconTrash, - IconPlus, IconCirclePlus, + IconEdit } from "@tabler/icons-react"; -import _, { fill } from "lodash"; +import _ from "lodash"; import { useState } from "react"; +import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../component_global/admin_notifikasi/notifikasi_berhasil"; +import { ComponentAdminGlobal_NotifikasiGagal } from "../../component_global/admin_notifikasi/notifikasi_gagal"; import adminAppInformation_createBank from "../fun/create/fun_create_new_bank"; import adminAppInformation_getMasterBank from "../fun/master/get_list_bank"; -import { ComponentGlobalAdmin_NotifikasiBerhasil } from "../../component_global/admin_notifikasi/notifikasi_berhasil"; -import { ComponentGlobalAdmin_NotifikasiGagal } from "../../component_global/admin_notifikasi/notifikasi_gagal"; -import adminAppInformation_getOneBankById from "../fun/get/get_one_bank_by_id"; -import { useShallowEffect } from "@mantine/hooks"; -import adminAppInformation_updateDataBankById from "../fun/update/fun_update_data_bank"; import adminAppInformation_updateStatusBankById from "../fun/update/fun_udpate_status_bank"; +import adminAppInformation_updateDataBankById from "../fun/update/fun_update_data_bank"; export default function InformasiBank({ listBank, @@ -70,9 +63,9 @@ export default function InformasiBank({ if (create.status === 200) { const loadData = await adminAppInformation_getMasterBank(); setData(loadData); - ComponentGlobalAdmin_NotifikasiBerhasil(create.message); + ComponentAdminGlobal_NotifikasiBerhasil(create.message); } else { - ComponentGlobalAdmin_NotifikasiGagal(create.message); + ComponentAdminGlobal_NotifikasiGagal(create.message); } setIsCreate(false); } @@ -84,10 +77,10 @@ export default function InformasiBank({ if (updt.status === 200) { const loadData = await adminAppInformation_getMasterBank(); setData(loadData); - ComponentGlobalAdmin_NotifikasiBerhasil(updt.message); + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); setIsUpdate(false); } else { - ComponentGlobalAdmin_NotifikasiGagal(updt.message); + ComponentAdminGlobal_NotifikasiGagal(updt.message); } } @@ -108,10 +101,10 @@ export default function InformasiBank({ if (updt.status === 200) { const loadData = await adminAppInformation_getMasterBank(); setData(loadData); - ComponentGlobalAdmin_NotifikasiBerhasil(updt.message); + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); setIsActivation(false); } else { - ComponentGlobalAdmin_NotifikasiGagal(updt.message); + ComponentAdminGlobal_NotifikasiGagal(updt.message); } } diff --git a/src/app_modules/admin/app_info/main/info_whatsapp.tsx b/src/app_modules/admin/app_info/main/info_whatsapp.tsx index 31e35bfc..f181f1be 100644 --- a/src/app_modules/admin/app_info/main/info_whatsapp.tsx +++ b/src/app_modules/admin/app_info/main/info_whatsapp.tsx @@ -1,20 +1,19 @@ " use client"; import { - Stack, - Group, - Title, - Paper, ActionIcon, - TextInput, Button, - Box, - Tooltip, + Group, + Paper, + Stack, + TextInput, + Title, + Tooltip } from "@mantine/core"; import { IconEdit, IconPhone } from "@tabler/icons-react"; import { useState } from "react"; -import { ComponentGlobalAdmin_NotifikasiBerhasil } from "../../component_global/admin_notifikasi/notifikasi_berhasil"; -import { ComponentGlobalAdmin_NotifikasiGagal } from "../../component_global/admin_notifikasi/notifikasi_gagal"; +import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../component_global/admin_notifikasi/notifikasi_berhasil"; +import { ComponentAdminGlobal_NotifikasiGagal } from "../../component_global/admin_notifikasi/notifikasi_gagal"; import adminAppInformation_getNomorAdmin from "../fun/master/get_nomor_admin"; import adminAppInformation_funUpdateNomorAdmin from "../fun/update/fun_update_nomor"; @@ -39,11 +38,11 @@ export default function InformasiWhatApps({ nomorAdmin }: { nomorAdmin: any }) { const loadDdata = await adminAppInformation_getNomorAdmin(); setDataNomor(loadDdata); if (loadDdata) { - ComponentGlobalAdmin_NotifikasiBerhasil(updt.message); + ComponentAdminGlobal_NotifikasiBerhasil(updt.message); return; } } else { - ComponentGlobalAdmin_NotifikasiGagal(updt.message); + ComponentAdminGlobal_NotifikasiGagal(updt.message); } } diff --git a/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_berhasil.tsx b/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_berhasil.tsx index 51ae73d3..bfbc9870 100644 --- a/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_berhasil.tsx +++ b/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_berhasil.tsx @@ -14,7 +14,7 @@ import { * @type number * @returns notifikasi berhasil warna hijau */ -export async function ComponentGlobalAdmin_NotifikasiBerhasil( +export async function ComponentAdminGlobal_NotifikasiBerhasil( text: string, durasi?: number ) { diff --git a/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_gagal.tsx b/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_gagal.tsx index c9f103f8..d48ce3fa 100644 --- a/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_gagal.tsx +++ b/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_gagal.tsx @@ -8,7 +8,7 @@ import { IconAlertTriangle } from "@tabler/icons-react"; * @type string * @returns notifikasi peringatan */ -export async function ComponentGlobalAdmin_NotifikasiGagal(text: string) { +export async function ComponentAdminGlobal_NotifikasiGagal(text: string) { return notifications.show({ message: (
diff --git a/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_peringatan.tsx b/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_peringatan.tsx index 399a671c..ec2ec9fc 100644 --- a/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_peringatan.tsx +++ b/src/app_modules/admin/component_global/admin_notifikasi/notifikasi_peringatan.tsx @@ -8,7 +8,7 @@ import { IconAlertTriangle } from "@tabler/icons-react"; * @type string * @returns notifikasi peringatan */ -export async function ComponentGlobalAdmin_NotifikasiPeringatan( +export async function ComponentAdminGlobal_NotifikasiPeringatan( text: string, durasi?: number ) { diff --git a/src/app_modules/admin/component_global/back_button.tsx b/src/app_modules/admin/component_global/back_button.tsx index 15abe3ba..b2b550fe 100644 --- a/src/app_modules/admin/component_global/back_button.tsx +++ b/src/app_modules/admin/component_global/back_button.tsx @@ -5,7 +5,7 @@ import { IconChevronLeft } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; -export default function ComponentGlobalAdmin_BackButton({path}:{path?:string}) { +export default function ComponentAdminGlobal_BackButton({path}:{path?:string}) { const router = useRouter(); const [isLoading, setLoading] = useState(false); diff --git a/src/app_modules/admin/component_global/is_empty_data.tsx b/src/app_modules/admin/component_global/is_empty_data.tsx new file mode 100644 index 00000000..01c4d382 --- /dev/null +++ b/src/app_modules/admin/component_global/is_empty_data.tsx @@ -0,0 +1,19 @@ +"use client"; + +import { Center, Text } from "@mantine/core"; + +export default function ComponentAdminGlobal_IsEmptyData({ + text, + marginTop, +}: { + text?: string; + marginTop?: number; +}) { + return ( + <> +
+ {text ? text : "Tidak Ada Data"} +
+ + ); +} diff --git a/src/app_modules/admin/component_global/loading_admin_page.tsx b/src/app_modules/admin/component_global/loading_admin_page.tsx index 6febf957..317f4ad0 100644 --- a/src/app_modules/admin/component_global/loading_admin_page.tsx +++ b/src/app_modules/admin/component_global/loading_admin_page.tsx @@ -28,7 +28,7 @@ export default function ComponentAdminGlobal_LoadingPage() { }, ]; const customLOader = ( -
+
{listhHuruf.map((e, i) => (
@@ -44,7 +44,10 @@ export default function ComponentAdminGlobal_LoadingPage() { return ( <> - + {/* */} + + {customLOader} + ); } diff --git a/src/app_modules/admin/donasi/detail/detail_reject.tsx b/src/app_modules/admin/donasi/detail/detail_reject.tsx index 7fcca317..5bcbc9e9 100644 --- a/src/app_modules/admin/donasi/detail/detail_reject.tsx +++ b/src/app_modules/admin/donasi/detail/detail_reject.tsx @@ -25,7 +25,7 @@ import { NotifBerhasil } from "@/app_modules/donasi/component/notifikasi/notif_b 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 ComponentAdminGlobal_BackButton from "../../component_global/back_button"; import ComponentAdminDonasi_TampilanDetailDonasi from "../component/tampilan_detail_donasi"; import ComponentAdminDonasi_CeritaPenggalangDana from "../component/tampilan_detail_cerita"; @@ -94,7 +94,7 @@ function ButtonOnHeader({ <> - + diff --git a/src/app_modules/admin/donasi/detail/detail_review.tsx b/src/app_modules/admin/donasi/detail/detail_review.tsx index c74a052d..2bb19fc0 100644 --- a/src/app_modules/admin/donasi/detail/detail_review.tsx +++ b/src/app_modules/admin/donasi/detail/detail_review.tsx @@ -25,14 +25,14 @@ import { import { useDisclosure } from "@mantine/hooks"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { ComponentGlobalAdmin_NotifikasiBerhasil } from "../../component_global/admin_notifikasi/notifikasi_berhasil"; -import { ComponentGlobalAdmin_NotifikasiGagal } from "../../component_global/admin_notifikasi/notifikasi_gagal"; -import { ComponentGlobalAdmin_NotifikasiPeringatan } from "../../component_global/admin_notifikasi/notifikasi_peringatan"; +import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../component_global/admin_notifikasi/notifikasi_berhasil"; +import { ComponentAdminGlobal_NotifikasiGagal } from "../../component_global/admin_notifikasi/notifikasi_gagal"; +import { ComponentAdminGlobal_NotifikasiPeringatan } from "../../component_global/admin_notifikasi/notifikasi_peringatan"; import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali"; import { AdminDonasi_getOneById } from "../fun/get/get_one_by_id"; import { AdminDonasi_funUpdateStatusPublish } from "../fun/update/fun_status_publish"; import { AdminDonasi_funUpdateStatusReject } from "../fun/update/fun_status_reject"; -import ComponentGlobalAdmin_BackButton from "../../component_global/back_button"; +import ComponentAdminGlobal_BackButton from "../../component_global/back_button"; import ComponentAdminDonasi_TampilanDetailDonasi from "../component/tampilan_detail_donasi"; import ComponentAdminDonasi_CeritaPenggalangDana from "../component/tampilan_detail_cerita"; @@ -85,12 +85,12 @@ function ButtonOnHeader({ if (res.status === 200) { const newData = await AdminDonasi_getOneById(donasi?.id); setData(newData); - ComponentGlobalAdmin_NotifikasiBerhasil( + ComponentAdminGlobal_NotifikasiBerhasil( "Berhasil Mengubah Status Donasi" ); setLoadingPublish(true); } else { - ComponentGlobalAdmin_NotifikasiPeringatan( + ComponentAdminGlobal_NotifikasiPeringatan( "Gagal Mengubah Status Donasi" ); } @@ -100,7 +100,7 @@ function ButtonOnHeader({ async function onReject() { if (catatan === "") - return ComponentGlobalAdmin_NotifikasiPeringatan( + return ComponentAdminGlobal_NotifikasiPeringatan( "Lengkapi Alasan Penolakan" ); @@ -110,10 +110,10 @@ function ButtonOnHeader({ const newData = await AdminDonasi_getOneById(donasi?.id); setData(newData); close(); - ComponentGlobalAdmin_NotifikasiBerhasil(res.message); + ComponentAdminGlobal_NotifikasiBerhasil(res.message); setLoadingReject(true); } else { - ComponentGlobalAdmin_NotifikasiGagal(res.message); + ComponentAdminGlobal_NotifikasiGagal(res.message); } } ); @@ -122,7 +122,7 @@ function ButtonOnHeader({ return ( <> - + {donasi.donasiMaster_StatusDonasiId === "2" ? ( - - - ); -} - -function ButtonDeletePosting({ postingId }: { postingId: string }) { - const [opened, { open, close }] = useDisclosure(false); - const [loadingDel, setLoadingDel] = useState(false); - const [loadingDel2, setLoadingDel2] = useState(false); - - async function onDelete() { - await adminForum_funDeletePostingById(postingId).then((res) => { - if (res.status === 200) { - setLoadingDel2(false); - setLoadingDel(false); - close(); - ComponentGlobal_NotifikasiBerhasil(res.message); - } else { - ComponentGlobal_NotifikasiGagal(res.message); - } - }); - } - return ( - <> - - - Anda yakin menghapus posting ini - - - - - - - - - ); -} diff --git a/src/app_modules/admin/forum/child/report_komentar/index.tsx b/src/app_modules/admin/forum/child/report_komentar/index.tsx deleted file mode 100644 index 714ec270..00000000 --- a/src/app_modules/admin/forum/child/report_komentar/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -"use client"; - -import { Stack } from "@mantine/core"; - -export default function AdminForum_TableReportKomentar() { - return ( - <> - ini rep komen - - ); -} diff --git a/src/app_modules/admin/forum/child/report_posting/index.tsx b/src/app_modules/admin/forum/child/report_posting/index.tsx deleted file mode 100644 index d9a9c9f1..00000000 --- a/src/app_modules/admin/forum/child/report_posting/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -"use client"; - -import { Stack } from "@mantine/core"; - -export default function AdminForum_TableReportPosting() { - return ( - <> - ini rep pos - - ); -} diff --git a/src/app_modules/admin/forum/children/semua_komentar/index.tsx b/src/app_modules/admin/forum/children/semua_komentar/index.tsx deleted file mode 100644 index c01e13f7..00000000 --- a/src/app_modules/admin/forum/children/semua_komentar/index.tsx +++ /dev/null @@ -1,291 +0,0 @@ -"use client"; - -import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum"; -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, - MODEL_FORUM_POSTING, -} from "@/app_modules/forum/model/interface"; -import { - Badge, - Box, - Button, - Center, - Grid, - Group, - Modal, - Paper, - ScrollArea, - Spoiler, - Stack, - Table, - Text, - Title, -} from "@mantine/core"; -import { IconTrash } from "@tabler/icons-react"; -import { IconFlag3 } from "@tabler/icons-react"; -import _ from "lodash"; -import { useRouter } from "next/navigation"; -import { useState } from "react"; -import { adminForum_funDeleteKomentarById } from "../../fun/delete/fun_delete_komentar_by_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 { useDisclosure } from "@mantine/hooks"; - -export default function AdminForum_LihatSemuaKomentar({ - listKomentar, - dataPosting, -}: { - listKomentar: MODEL_FORUM_KOMENTAR[]; - dataPosting: MODEL_FORUM_POSTING; -}) { - return ( - <> - {/*
{JSON.stringify(listKomentar, null, 2)}
*/} - - - - - - - - ); -} - -function DataPosting({ dataPosting }: { dataPosting: MODEL_FORUM_POSTING }) { - return ( - <> - - - - - POSTING - - - - - - - Author : - - - - {dataPosting?.Author?.Profile?.name} - - - - - - -
- - - - - - - - - ); -} - -function TableKomentar({ - listKomentar, -}: { - listKomentar: MODEL_FORUM_KOMENTAR[]; -}) { - const router = useRouter(); - // const [data, setData] = useState(listKomentar); - - const TableRows = listKomentar?.map((e, i) => ( - - -
- {e?.Author?.Profile?.name} -
- - -
- -
- -
- - -
- - {new Intl.DateTimeFormat(["id-ID"], { dateStyle: "medium" }).format( - e.createdAt - )} - -
- - -
- = 3 ? "red" : "black"} - fw={"bold"} - fz={"lg"} - > - {e?.Forum_ReportKomentar.length} - -
- - - - - - - - - - )); - - return ( - <> - - - - KOMENTAR - - - - - - - - - - - - - - {TableRows} -
-
Author
-
-
Komentar
-
-
Tanggal Komentar
-
-
Total Report Komentar
-
-
Aksi
-
-
- -
- {_.isEmpty(TableRows) ? ( -
- Tidak Ada Data -
- ) : ( - "" - )} -
-
- - ); -} - -function ButtonDeleteKomentar({ komentarId }: { komentarId: string }) { - const router = useRouter(); - const [opened, { open, close }] = useDisclosure(false); - const [loadindDel, setLoadingDel] = useState(false); - const [loadingDel2, setLoadingDel2] = useState(false); - - async function onDelete() { - await adminForum_funDeleteKomentarById(komentarId).then((res) => { - if (res.status === 200) { - setLoadingDel(false); - setLoadingDel2(false); - ComponentGlobal_NotifikasiBerhasil(res.message); - close(); - } else { - ComponentGlobal_NotifikasiGagal(res.message); - } - }); - } - return ( - <> - - - Anda yakin menghapus komentar ini ? - - - - - - - - - - ); -} diff --git a/src/app_modules/admin/forum/component/button_delete.tsx b/src/app_modules/admin/forum/component/button_delete.tsx new file mode 100644 index 00000000..4ca4280f --- /dev/null +++ b/src/app_modules/admin/forum/component/button_delete.tsx @@ -0,0 +1,84 @@ +"use client"; + +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 { Modal, Stack, Title, Group, Button } from "@mantine/core"; +import { useDisclosure } from "@mantine/hooks"; +import { IconTrash } from "@tabler/icons-react"; +import { useState } from "react"; +import { adminForum_funDeletePostingById } from "../fun/delete/fun_delete_posting_by_id"; + +export default function ComponentAdminForum_ButtonDeletePosting({ + postingId, + onSuccesDelete, +}: { + postingId: string; + onSuccesDelete: (val: any) => void; +}) { + const [opened, { open, close }] = useDisclosure(false); + const [loadingDel2, setLoadingDel2] = useState(false); + + async function onDelete() { + await adminForum_funDeletePostingById(postingId).then((res) => { + if (res.status === 200) { + setLoadingDel2(false); + close(); + ComponentGlobal_NotifikasiBerhasil(res.message); + onSuccesDelete(true); + } else { + ComponentGlobal_NotifikasiGagal(res.message); + } + }); + } + return ( + <> + + + Anda yakin menghapus posting ini + + + + + + + + + ); +} diff --git a/src/app_modules/admin/forum/component/detail_one_posting.tsx b/src/app_modules/admin/forum/component/detail_one_posting.tsx new file mode 100644 index 00000000..74fe370f --- /dev/null +++ b/src/app_modules/admin/forum/component/detail_one_posting.tsx @@ -0,0 +1,73 @@ +"use client"; + +import { MODEL_FORUM_POSTING } from "@/app_modules/forum/model/interface"; +import { + Badge, + Box, + Divider, + Group, + Paper, + Spoiler, + Stack, + Text, + Title, +} from "@mantine/core"; + +export default function ComponentAdminForum_ViewOneDetailPosting({ + dataPosting, +}: { + dataPosting: MODEL_FORUM_POSTING; +}) { + return ( + <> + + + + Detail Posting + + + + + + + + + Username:{" "} + + {dataPosting?.Author?.username} + + + + + {dataPosting?.ForumMaster_StatusPosting?.status} + + + + + + + +
+ + + + + + + ); +} diff --git a/src/app_modules/admin/forum/detail/detail_posting.tsx b/src/app_modules/admin/forum/detail/detail_posting.tsx new file mode 100644 index 00000000..8cc6c918 --- /dev/null +++ b/src/app_modules/admin/forum/detail/detail_posting.tsx @@ -0,0 +1,316 @@ +"use client"; + +import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum"; +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, + MODEL_FORUM_POSTING, +} from "@/app_modules/forum/model/interface"; +import { + Badge, + Box, + Button, + Center, + Grid, + Group, + Modal, + Pagination, + Paper, + ScrollArea, + Spoiler, + Stack, + Table, + Text, + TextInput, + Title, +} from "@mantine/core"; +import { IconSearch, IconTrash } from "@tabler/icons-react"; +import { IconFlag3 } from "@tabler/icons-react"; +import _ from "lodash"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { adminForum_funDeleteKomentarById } from "../fun/delete/fun_delete_komentar_by_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 { useDisclosure } from "@mantine/hooks"; +import ComponentAdminGlobal_IsEmptyData from "../../component_global/is_empty_data"; +import { adminForum_getListKomentarById } from "../fun/get/get_list_komentar_by_id"; +import ComponentAdminGlobal_BackButton from "../../component_global/back_button"; +import ComponentAdminForum_ViewOneDetailPosting from "../component/detail_one_posting"; + +export default function AdminForum_DetailPosting({ + listKomentar, + dataPosting, + countKomentar, +}: { + listKomentar: any; + dataPosting: MODEL_FORUM_POSTING; + countKomentar: number; +}) { + return ( + <> + {/*
{JSON.stringify(listKomentar, null, 2)}
*/} + + + + + + + + ); +} + + + +function TableKomentar({ + listKomentar, + postingId, + countKomentar, +}: { + listKomentar: any; + postingId: string; + countKomentar: number; +}) { + const router = useRouter(); + const [data, setData] = useState(listKomentar.data); + const [nPage, setNPage] = useState(listKomentar.nPage); + const [activePage, setActivePage] = useState(1); + const [isSearch, setSearch] = useState(""); + const [isLoadingReport, setLoadingReport] = useState(false); + const [idData, setIdData] = useState(""); + + async function onSearch(s: string) { + setSearch(s); + setActivePage(1); + const loadData = await adminForum_getListKomentarById({ + postingId: postingId, + page: 1, + search: s, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + } + + async function onPageClick(p: any) { + setActivePage(p); + const loadData = await adminForum_getListKomentarById({ + postingId: postingId, + search: isSearch, + page: p, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + } + + const rowTable = data?.map((e, i) => ( + + +
+ {e?.Author?.username} +
+ + + + +
+ + + + +
+ + {new Intl.DateTimeFormat(["id-ID"], { dateStyle: "medium" }).format( + e.createdAt + )} + +
+ + +
+ = 3 ? "red" : "black"} + fw={"bold"} + fz={"lg"} + > + {e?.Forum_ReportKomentar.length} + +
+ + + + + + + + + )); + + return ( + <> + + + + + Komentar + + + {`(${countKomentar})`} + + + } + radius={"xl"} + placeholder="Cari komentar" + onChange={(val) => { + onSearch(val.currentTarget.value); + }} + /> + + + {_.isEmpty(data) ? ( + + ) : ( + + + + + + + + + + + + + {rowTable} +
+
Username
+
+
Komentar
+
+
Tgl Komentar
+
+
Total Report
+
+
Aksi
+
+
+
+ { + onPageClick(val); + }} + /> +
+
+ )} +
+ + ); +} + +function ButtonDeleteKomentar({ komentarId }: { komentarId: string }) { + const router = useRouter(); + const [opened, { open, close }] = useDisclosure(false); + const [loadindDel, setLoadingDel] = useState(false); + const [loadingDel2, setLoadingDel2] = useState(false); + + async function onDelete() { + await adminForum_funDeleteKomentarById(komentarId).then((res) => { + if (res.status === 200) { + setLoadingDel(false); + setLoadingDel2(false); + ComponentGlobal_NotifikasiBerhasil(res.message); + close(); + } else { + ComponentGlobal_NotifikasiGagal(res.message); + } + }); + } + return ( + <> + + + Anda yakin menghapus komentar ini ? + + + + + + + + + + ); +} diff --git a/src/app_modules/admin/forum/fun/count/fun_count_komentar_by_id.ts b/src/app_modules/admin/forum/fun/count/fun_count_komentar_by_id.ts new file mode 100644 index 00000000..2ee508d9 --- /dev/null +++ b/src/app_modules/admin/forum/fun/count/fun_count_komentar_by_id.ts @@ -0,0 +1,19 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; + +export default async function adminForum_countKomentarByPostingId({ + postingId, +}: { + postingId: string; +}) { + const count = await prisma.forum_Komentar.count({ + where: { + isActive: true, + forum_PostingId: postingId, + }, + }); + + + return count; +} diff --git a/src/app_modules/admin/forum/fun/delete/fun_delete_komentar_by_id.ts b/src/app_modules/admin/forum/fun/delete/fun_delete_komentar_by_id.ts index 796be1cf..6a99d4a3 100644 --- a/src/app_modules/admin/forum/fun/delete/fun_delete_komentar_by_id.ts +++ b/src/app_modules/admin/forum/fun/delete/fun_delete_komentar_by_id.ts @@ -14,6 +14,5 @@ export async function adminForum_funDeleteKomentarById(komentarId: string) { }); if (!delTemporary) return { status: 400, message: "Gagal Dihapus" }; - revalidatePath("/dev/admin/forum/children/semua-komentar"); return { status: 200, message: "Berhasil Dihapus" }; } diff --git a/src/app_modules/admin/forum/fun/get/get_all_report_posting.tsx b/src/app_modules/admin/forum/fun/get/get_all_report_posting.tsx new file mode 100644 index 00000000..2cd5332c --- /dev/null +++ b/src/app_modules/admin/forum/fun/get/get_all_report_posting.tsx @@ -0,0 +1,95 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; +import { ceil } from "lodash"; + +export default async function adminForum_funGetAllReportPosting({ + page, + search, +}: { + page: number; + search?: string; +}) { + + const takeData = 10 + const skipData = page * takeData - takeData + + const data = await prisma.forum_ReportPosting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, + where: { + Forum_Posting: { + isActive: true, + diskusi: { + contains: search, + mode: "insensitive" + } + }, + + }, + select: { + id: true, + isActive: true, + createdAt: true, + deskripsi: true, + forumMaster_KategoriReportId: true, + ForumMaster_KategoriReport: { + select: { + id: true, + title: true, + deskripsi: true, + }, + }, + + forum_PostingId: true, + Forum_Posting: { + select: { + id: true, + diskusi: true, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + } + }, + Author: { + select: { + id: true, + username: true + } + } + }, + }, + userId: true, + User: { + select: { + id: true, + username: true, + }, + }, + }, + }); + + + const nCount = await prisma.forum_ReportPosting.count({ + where: { + Forum_Posting: { + isActive: true, + diskusi: { + contains: search, + mode: "insensitive", + }, + }, + }, + }); + + const allData = { + data: data, + nPage: ceil(nCount / takeData), + }; + + return allData; +} diff --git a/src/app_modules/admin/forum/fun/get/get_list_komentar_by_id.ts b/src/app_modules/admin/forum/fun/get/get_list_komentar_by_id.ts index d2a76ad7..b1e126c8 100644 --- a/src/app_modules/admin/forum/fun/get/get_list_komentar_by_id.ts +++ b/src/app_modules/admin/forum/fun/get/get_list_komentar_by_id.ts @@ -1,15 +1,33 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { ceil } from "lodash"; + +export async function adminForum_getListKomentarById({ + postingId, + page, + search, +}: { + postingId: string; + page: number; + search?: string; +}) { + const takeData = 10; + const skipData = page * takeData - takeData; -export async function adminForum_getListKomentarById(postingId: string) { const data = await prisma.forum_Komentar.findMany({ + take: takeData, + skip: skipData, orderBy: { createdAt: "desc", }, where: { forum_PostingId: postingId, isActive: true, + komentar: { + contains: search, + mode: "insensitive", + }, }, select: { id: true, @@ -20,6 +38,7 @@ export async function adminForum_getListKomentarById(postingId: string) { Author: { select: { id: true, + username: true, Profile: { select: { name: true, @@ -28,9 +47,25 @@ export async function adminForum_getListKomentarById(postingId: string) { }, }, }, - Forum_ReportKomentar: true + Forum_ReportKomentar: true, }, }); - return data; + const nCount = await prisma.forum_Komentar.count({ + where: { + forum_PostingId: postingId, + isActive: true, + komentar: { + contains: search, + mode: "insensitive", + }, + }, + }); + + const allData = { + data: data, + nPage: ceil(nCount / takeData), + }; + + return allData; } diff --git a/src/app_modules/admin/forum/fun/get/get_list_publish.tsx b/src/app_modules/admin/forum/fun/get/get_list_publish.tsx index 028019d2..8a6838e8 100644 --- a/src/app_modules/admin/forum/fun/get/get_list_publish.tsx +++ b/src/app_modules/admin/forum/fun/get/get_list_publish.tsx @@ -1,14 +1,30 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { ceil } from "lodash"; + +export async function adminForum_getListPosting({ + page, + search, +}: { + page: number; + search?: string; +}) { + const takeData = 10; + const skipData = page * takeData - takeData; -export async function adminForum_getListPublish() { const data = await prisma.forum_Posting.findMany({ + take: takeData, + skip: skipData, orderBy: { createdAt: "desc", }, where: { isActive: true, + diskusi: { + contains: search, + mode: "insensitive", + }, }, select: { id: true, @@ -25,12 +41,27 @@ export async function adminForum_getListPublish() { Forum_ReportPosting: true, Forum_Komentar: { where: { - isActive: true - } + isActive: true, + }, }, - ForumMaster_StatusPosting: true + ForumMaster_StatusPosting: true, }, }); - return data; + const nCount = await prisma.forum_Posting.count({ + where: { + isActive: true, + diskusi: { + contains: search, + mode: "insensitive", + }, + }, + }); + + const allData = { + data: data, + nPage: ceil(nCount / takeData), + }; + + return allData; } diff --git a/src/app_modules/admin/forum/fun/get/get_list_report_komentar_by_id.ts b/src/app_modules/admin/forum/fun/get/get_list_report_komentar_by_id.ts index 8f479e14..004c560f 100644 --- a/src/app_modules/admin/forum/fun/get/get_list_report_komentar_by_id.ts +++ b/src/app_modules/admin/forum/fun/get/get_list_report_komentar_by_id.ts @@ -1,9 +1,26 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { ceil } from "lodash"; + +export async function adminForum_getListReportKomentarbyId({ + komentarId, + page, + search, +}: { + komentarId: string; + page: number; + search?: string; +}) { + const takeData = 10; + const skipData = page * takeData - takeData; -export async function adminForum_getListReportKomentarbyId(komentarId: string) { const data = await prisma.forum_ReportKomentar.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc" + }, where: { forum_KomentarId: komentarId, }, @@ -26,5 +43,16 @@ export async function adminForum_getListReportKomentarbyId(komentarId: string) { }, }); - return data; + const nCount = await prisma.forum_ReportKomentar.count({ + where: { + forum_KomentarId: komentarId, + }, + }); + + const allData = { + data: data, + nPage: ceil(nCount / takeData) + } + + return allData; } diff --git a/src/app_modules/admin/forum/fun/get/get_list_report_posting_by_id.ts b/src/app_modules/admin/forum/fun/get/get_list_report_posting_by_id.ts index 033515a5..03a26f4a 100644 --- a/src/app_modules/admin/forum/fun/get/get_list_report_posting_by_id.ts +++ b/src/app_modules/admin/forum/fun/get/get_list_report_posting_by_id.ts @@ -1,9 +1,24 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { ceil } from "lodash"; + +export async function adminForum_getListReportPostingById({ + postingId, + page, +}: { + postingId: string; + page: number; +}) { + const takeData = 10; + const skipData = page * takeData - takeData; -export async function adminForum_getListReportPostingById(postingId: string) { const data = await prisma.forum_ReportPosting.findMany({ + take: takeData, + skip: skipData, + orderBy: { + createdAt: "desc", + }, where: { forum_PostingId: postingId, }, @@ -13,6 +28,8 @@ export async function adminForum_getListReportPostingById(postingId: string) { createdAt: true, User: { select: { + id: true, + username: true, Profile: { select: { name: true, @@ -30,5 +47,16 @@ export async function adminForum_getListReportPostingById(postingId: string) { }, }); - return data; + const nCount = await prisma.forum_ReportPosting.count({ + where: { + forum_PostingId: postingId, + }, + }); + + const allData = { + data: data, + nPage: ceil(nCount / takeData), + }; + + return allData; } diff --git a/src/app_modules/admin/forum/fun/get/get_one_posting_by_id.ts b/src/app_modules/admin/forum/fun/get/get_one_posting_by_id.ts index 234f9f21..2170f4f5 100644 --- a/src/app_modules/admin/forum/fun/get/get_one_posting_by_id.ts +++ b/src/app_modules/admin/forum/fun/get/get_one_posting_by_id.ts @@ -10,11 +10,19 @@ export async function adminForum_getOnePostingById(postingId: string) { select: { id: true, diskusi: true, + ForumMaster_StatusPosting: { + select: { + id: true, + status: true, + }, + }, Author: { select: { + id: true, + username: true, Profile: { select: { - name: true + name: true, }, }, }, @@ -22,7 +30,7 @@ export async function adminForum_getOnePostingById(postingId: string) { }, }); -// console.log(data); + // console.log(data); return data; } diff --git a/src/app_modules/admin/forum/index.tsx b/src/app_modules/admin/forum/index.tsx index 595b747a..199053be 100644 --- a/src/app_modules/admin/forum/index.tsx +++ b/src/app_modules/admin/forum/index.tsx @@ -1,17 +1,15 @@ -import AdminForum_Main from "./main"; -import AdminForum_TablePublish from "./child/publish"; -import AdminForum_TableReportKomentar from "./child/report_komentar"; -import AdminForum_TableReportPosting from "./child/report_posting"; -import AdminForum_LihatSemuaKomentar from "./children/semua_komentar"; -import AdminForum_HasilReportPosting from "./hasil_report/posting"; -import AdminForum_HasilReportKomentar from "./hasil_report/komentar"; +import AdminForum_Main from "./main/dashboard"; +import AdminForum_TablePosting from "./sub_menu/table_posting"; +import AdminForum_TableReportPosting from "./sub_menu/table_report_posting"; +import AdminForum_DetailPosting from "./detail/detail_posting"; +import AdminForum_HasilReportPosting from "./sub_detail/hasil_report_posting"; +import AdminForum_HasilReportKomentar from "./sub_detail/hasil_report_komentar"; export { AdminForum_Main, - AdminForum_TablePublish, - AdminForum_TableReportKomentar, + AdminForum_TablePosting as AdminForum_TablePublish, AdminForum_TableReportPosting, - AdminForum_LihatSemuaKomentar, + AdminForum_DetailPosting as AdminForum_LihatSemuaKomentar, AdminForum_HasilReportPosting, AdminForum_HasilReportKomentar, }; diff --git a/src/app_modules/admin/forum/main/index.tsx b/src/app_modules/admin/forum/main/dashboard.tsx similarity index 94% rename from src/app_modules/admin/forum/main/index.tsx rename to src/app_modules/admin/forum/main/dashboard.tsx index d17fc5c5..989cadc4 100644 --- a/src/app_modules/admin/forum/main/index.tsx +++ b/src/app_modules/admin/forum/main/dashboard.tsx @@ -23,7 +23,7 @@ export default function AdminForum_Main({ countLaporanKomentar={countLaporanKomentar} /> - {/* */} + {/* */} ); } @@ -46,13 +46,13 @@ function ForumMain({ }, { id: 2, - name: "Laporan Posting", + name: "Report Posting", jumlah: countLaporanPosting, color: "orange", }, { id: 3, - name: "Laporan Komentar", + name: "Report Komentar", jumlah: countLaporanKomentar, color: "red", }, diff --git a/src/app_modules/admin/forum/hasil_report/komentar/index.tsx b/src/app_modules/admin/forum/sub_detail/hasil_report_komentar.tsx similarity index 55% rename from src/app_modules/admin/forum/hasil_report/komentar/index.tsx rename to src/app_modules/admin/forum/sub_detail/hasil_report_komentar.tsx index e9b9156c..7ec2e6b9 100644 --- a/src/app_modules/admin/forum/hasil_report/komentar/index.tsx +++ b/src/app_modules/admin/forum/sub_detail/hasil_report_komentar.tsx @@ -16,37 +16,48 @@ import { Center, Group, Modal, + Pagination, + Paper, ScrollArea, Spoiler, Stack, Table, Text, + TextInput, Title, } from "@mantine/core"; -import { IconMessageCircle, IconFlag3, IconTrash } from "@tabler/icons-react"; +import { + IconMessageCircle, + IconFlag3, + IconTrash, + IconSearch, +} from "@tabler/icons-react"; import _ from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { adminForum_funDeletePostingById } from "../../fun/delete/fun_delete_posting_by_id"; -import { adminForum_funDeleteKomentarById } from "../../fun/delete/fun_delete_komentar_by_id"; -import { useDisclosure } from "@mantine/hooks"; +import { adminForum_funDeletePostingById } from "../fun/delete/fun_delete_posting_by_id"; +import { adminForum_funDeleteKomentarById } from "../fun/delete/fun_delete_komentar_by_id"; +import { useDisclosure, useShallowEffect } from "@mantine/hooks"; +import ComponentAdminGlobal_IsEmptyData from "../../component_global/is_empty_data"; +import { adminForum_getListReportKomentarbyId } from "../fun/get/get_list_report_komentar_by_id"; +import ComponentAdminGlobal_BackButton from "../../component_global/back_button"; export default function AdminForum_HasilReportKomentar({ komentarId, listReport, }: { komentarId: string; - listReport: any[]; + listReport: any; }) { return ( <> - + - + {/*
{JSON.stringify(listReport, null, 2)}
*/}
@@ -56,13 +67,11 @@ export default function AdminForum_HasilReportKomentar({ function ButtonDeleteKomentar({ komentarId }: { komentarId: string }) { const router = useRouter(); const [opened, { open, close }] = useDisclosure(false); - const [loadindDel, setLoadingDel] = useState(false); const [loadingDel2, setLoadingDel2] = useState(false); async function onDelete() { await adminForum_funDeleteKomentarById(komentarId).then((res) => { if (res.status === 200) { - setLoadingDel(false); setLoadingDel2(false); close(); router.back(); @@ -82,7 +91,6 @@ function ButtonDeleteKomentar({ komentarId }: { komentarId: string }) { radius={"xl"} onClick={() => { close(); - setLoadingDel(false); }} > Batal @@ -104,14 +112,12 @@ function ButtonDeleteKomentar({ komentarId }: { komentarId: string }) { + + + ); +} + +// function ButtonDeletePosting({ postingId }: { postingId: string }) { +// const [opened, { open, close }] = useDisclosure(false); +// const [loadingDel, setLoadingDel] = useState(false); +// const [loadingDel2, setLoadingDel2] = useState(false); + +// async function onDelete() { +// await adminForum_funDeletePostingById(postingId).then((res) => { +// if (res.status === 200) { +// setLoadingDel2(false); +// setLoadingDel(false); +// close(); +// ComponentGlobal_NotifikasiBerhasil(res.message); +// } else { +// ComponentGlobal_NotifikasiGagal(res.message); +// } +// }); +// } +// return ( +// <> +// +// +// Anda yakin menghapus posting ini +// +// +// +// +// +// +// +// +// ); +// } diff --git a/src/app_modules/admin/forum/sub_menu/table_report_posting.tsx b/src/app_modules/admin/forum/sub_menu/table_report_posting.tsx new file mode 100644 index 00000000..481dc1d7 --- /dev/null +++ b/src/app_modules/admin/forum/sub_menu/table_report_posting.tsx @@ -0,0 +1,279 @@ +"use client"; + +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_global/header_tamplate"; +import { + MODEL_FORUM_POSTING, + MODEL_FORUM_REPORT, +} from "@/app_modules/forum/model/interface"; +import { + Badge, + Box, + Button, + Center, + Group, + Modal, + Pagination, + Paper, + ScrollArea, + Spoiler, + Stack, + Table, + Text, + TextInput, + Title, +} from "@mantine/core"; +import { IconMessageCircle, IconSearch } from "@tabler/icons-react"; +import { IconFlag3 } from "@tabler/icons-react"; +import { IconEyeCheck, IconTrash } from "@tabler/icons-react"; +import _, { isEmpty } from "lodash"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { adminForum_funDeletePostingById } from "../fun/delete/fun_delete_posting_by_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 { useDisclosure } from "@mantine/hooks"; +import { adminForum_getListPosting } from "../fun/get/get_list_publish"; +import adminJob_getListPublish from "@/app_modules/admin/job/fun/get/get_list_publish"; +import ComponentAdminForum_ButtonDeletePosting from "../component/button_delete"; +import adminForum_funGetAllReportPosting from "../fun/get/get_all_report_posting"; +import ComponentAdminGlobal_IsEmptyData from "../../component_global/is_empty_data"; + +export default function AdminForum_TableReportPosting({ + listData, +}: { + listData: any; +}) { + return ( + <> + + + + {/*
{JSON.stringify(listPublish, null, 2)}
*/} +
+ + ); +} + +function TableView({ listData }: { listData: any }) { + const router = useRouter(); + const [data, setData] = useState(listData.data); + const [nPage, setNPage] = useState(listData.nPage); + const [activePage, setActivePage] = useState(1); + const [isSearch, setSearch] = useState(""); + + async function onSearch(s: string) { + setSearch(s); + setActivePage(1); + const loadData = await adminForum_funGetAllReportPosting({ + page: 1, + search: s, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + } + + async function onPageClick(p: any) { + setActivePage(p); + const loadData = await adminForum_funGetAllReportPosting({ + search: isSearch, + page: p, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + } + + async function onLoadData() { + const loadData = await adminForum_funGetAllReportPosting({ + page: 1, + }); + setData(loadData.data as any); + setNPage(loadData.nPage); + } + + const TableRows = data?.map((e, i) => ( + + +
+ {e?.User.username} +
+ + +
+ {e?.forumMaster_KategoriReportId === null ? ( + Lainnya + ) : ( + {e?.ForumMaster_KategoriReport.title} + )} +
+ + + +
+ {e?.Forum_Posting.Author.username} +
+ + + + + +
+ + + + + +
+ + {e?.Forum_Posting.ForumMaster_StatusPosting?.status} + +
+ + + +
+ + {new Intl.DateTimeFormat(["id-ID"], { dateStyle: "medium" }).format( + e.createdAt + )} + +
+ + + + + {/* */} + + { + if (val) { + onLoadData(); + } + }} + /> + + + + )); + + return ( + <> + + + + Report Posting + + } + radius={"xl"} + placeholder="Cari postingan" + onChange={(val) => { + // console.log(val.currentTarget.value) + onSearch(val.currentTarget.value); + }} + /> + + + {isEmpty(data) ? ( + + ) : ( + + + + + + + + + + + + + + + + {TableRows} +
+
Pelapor
+
+
Jenis Laporan
+
+
Author
+
+ Postingan + +
Status Posting
+
+
Tanggal Report
+
+
Aksi
+
+
+
+ { + onPageClick(val); + }} + /> +
+
+ )} +
+ + ); +} + +function ButtonLihatReportLainnya({ postingId }: { postingId: string }) { + const router = useRouter(); + const [loading, setLoading] = useState(false); + return ( + <> + + + ); +} diff --git a/src/app_modules/admin/job/detail/detail_poster.tsx b/src/app_modules/admin/job/detail/detail_poster.tsx index a3757528..49b9dfa9 100644 --- a/src/app_modules/admin/job/detail/detail_poster.tsx +++ b/src/app_modules/admin/job/detail/detail_poster.tsx @@ -2,7 +2,7 @@ import { RouterJob } from "@/app/lib/router_hipmi/router_job"; import { Center, Image, Stack } from "@mantine/core"; -import ComponentGlobalAdmin_BackButton from "../../component_global/back_button"; +import ComponentAdminGlobal_BackButton from "../../component_global/back_button"; export default function AdminJob_DetailPoster({ imageId, @@ -12,7 +12,7 @@ export default function AdminJob_DetailPoster({ return ( <> - +
Foto { e?.kategoriApp === "JOB" && - findRouterJob({ + adminNotifikasi_findRouterJob({ data: e, router: router, - onChangeNavbar2: (val: any) => { + onChangeNavbar: (val: any) => { onChangeNavbar(val); }, - onToggleNavbar2: onToggleNavbar, + onToggleNavbar: onToggleNavbar, + }); + + e?.kategoriApp === "FORUM" && + adminNotifikasi_findRouterForum({ + data: e, + router: router, + onChangeNavbar(val) { + onChangeNavbar(val); + }, + onToggleNavbar(val) { + onToggleNavbar(val); + }, }); const updateIsRead = await adminNotifikasi_funUpdateIsReadById({ @@ -480,35 +494,3 @@ function DrawerNotifikasi({ ); } - -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 583b3244..ae9806ee 100644 --- a/src/app_modules/admin/list_page.tsx +++ b/src/app_modules/admin/list_page.tsx @@ -229,13 +229,13 @@ export const listAdminPage = [ { id: 72, name: "Table Posting", - path: RouterAdminForum.publish, + path: RouterAdminForum.table_posting, + }, + { + id: 73, + name: "Report Posting", + path: RouterAdminForum.table_report_posting, }, - // { - // id: 73, - // name: "Laporan Posting", - // path: RouterAdminForum.report_posting, - // }, // { // id: 74, // name: "Laporan Komentar", diff --git a/src/app_modules/admin/notifikasi/route_setting/forum.ts b/src/app_modules/admin/notifikasi/route_setting/forum.ts new file mode 100644 index 00000000..279c5dc4 --- /dev/null +++ b/src/app_modules/admin/notifikasi/route_setting/forum.ts @@ -0,0 +1,22 @@ +import { RouterAdminForum } from "@/app/lib/router_admin/router_admin_forum"; +import { MODEL_NOTIFIKASI } from "@/app_modules/notifikasi/model/interface"; +import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime"; + +export default async function adminNotifikasi_findRouterForum({ + data, + router, + onChangeNavbar, + onToggleNavbar, +}: { + data: MODEL_NOTIFIKASI; + router: AppRouterInstance; + onChangeNavbar: (val: any) => void; + onToggleNavbar: (val: any) => void; +}) { + const routeName = RouterAdminForum.table_report_posting; + router.push(routeName); + onChangeNavbar({ + id: 7, + childId: 73, + }); +} diff --git a/src/app_modules/admin/notifikasi/route_setting/job.ts b/src/app_modules/admin/notifikasi/route_setting/job.ts new file mode 100644 index 00000000..badc572e --- /dev/null +++ b/src/app_modules/admin/notifikasi/route_setting/job.ts @@ -0,0 +1,35 @@ +import { MODEL_NOTIFIKASI } from "@/app_modules/notifikasi/model/interface"; +import _ from "lodash"; +import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime"; + +export default async function adminNotifikasi_findRouterJob({ + data, + router, + onChangeNavbar, + onToggleNavbar, +}: { + data: MODEL_NOTIFIKASI; + router: AppRouterInstance; + onChangeNavbar: (val: any) => void; + onToggleNavbar: (val: any) => void; +}) { + const routeName = "/dev/admin/job/child/"; + + if (data.status === "Review") { + router.push(routeName + _.lowerCase(data.status)); + onChangeNavbar({ + id: 6, + childId: 63, + }); + } + + if (data.status === "Draft") { + router.push(routeName + "review"); + onChangeNavbar({ + id: 6, + childId: 63, + }); + } + + onToggleNavbar(true); +} diff --git a/src/app_modules/auth/index.ts b/src/app_modules/auth/index.ts index 97d3dd97..599f9aaa 100644 --- a/src/app_modules/auth/index.ts +++ b/src/app_modules/auth/index.ts @@ -1,7 +1,6 @@ import SplashScreen from "./splash/view"; import Login from "./login/view"; import Validasi from "./validasi/view"; -import LayoutValidasi from "./validasi/layout"; import Register from "./register/view"; import User_Logout from "./logout/view"; @@ -11,5 +10,4 @@ export { Validasi, Register, User_Logout as Logout, - LayoutValidasi, }; diff --git a/src/app_modules/auth/login/view.tsx b/src/app_modules/auth/login/view.tsx index 6f08325d..8b8e87c0 100644 --- a/src/app_modules/auth/login/view.tsx +++ b/src/app_modules/auth/login/view.tsx @@ -40,7 +40,6 @@ export default function Login() { async function onLogin() { const nomorHp = phone.substring(1); - console.log(nomorHp); if (nomorHp.length <= 4) return setError(true); @@ -117,6 +116,7 @@ export default function Login() { + + + + + {/* - + */}
); diff --git a/src/app_modules/auth/validasi/layout.tsx b/src/app_modules/auth/validasi/layout.tsx deleted file mode 100644 index 9e611223..00000000 --- a/src/app_modules/auth/validasi/layout.tsx +++ /dev/null @@ -1,34 +0,0 @@ -"use client"; - -import { ActionIcon, Box, Stack } from "@mantine/core"; -import { IconChevronLeft } from "@tabler/icons-react"; -import { useRouter } from "next/navigation"; -import React from "react"; - -export default function LayoutValidasi({ - children, -}: { - children: React.ReactNode; -}) { - const router = useRouter(); - - return ( - - - router.back()}> - - - - {children} - - ); -} - diff --git a/src/app_modules/auth/validasi/view.tsx b/src/app_modules/auth/validasi/view.tsx index 083882f2..bb9c4f00 100644 --- a/src/app_modules/auth/validasi/view.tsx +++ b/src/app_modules/auth/validasi/view.tsx @@ -1,41 +1,32 @@ "use client"; -import { useAtom } from "jotai"; +import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; +import { RouterHome } from "@/app/lib/router_hipmi/router_home"; +import { + AccentColor, + MainColor, +} from "@/app_modules/component_global/color/color_pallet"; +import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan"; import { ActionIcon, + Box, Button, Center, - Flex, PinInput, Stack, Text, - Title, + Title } from "@mantine/core"; -import { gs_nomor, gs_otp } from "../state/state"; -import { Warna } from "@/app/lib/warna"; -import { useState } from "react"; -import { myConsole } from "@/app/fun/my_console"; -import { - IconChevronLeft, - IconCircleLetterH, - IconCloudLockOpen, -} from "@tabler/icons-react"; -import toast from "react-simple-toasts"; -import { ApiHipmi } from "@/app/lib/api"; -import { useRouter } from "next/navigation"; -import { funGetUserProfile } from "@/app_modules/fun_global/get_user_profile"; import { useFocusTrap } from "@mantine/hooks"; -import { NotifBerhasil } from "@/app_modules/donasi/component/notifikasi/notif_berhasil"; -import { NotifGagal } from "@/app_modules/donasi/component/notifikasi/notif_gagal"; -import { NotifPeringatan } from "@/app_modules/donasi/component/notifikasi/notif_peringatan"; -import Countdown from "react-countdown"; -import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan"; -import { auth_funValidasi } from "../fun/fun_validasi"; -import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { RouterHome } from "@/app/lib/router_hipmi/router_home"; +import { + IconChevronLeft +} from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; import { auth_funEditAktivasiKodeOtpById } from "../fun/fun_edit_aktivasi_kode_otp_by_id"; -import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin"; +import { auth_funValidasi } from "../fun/fun_validasi"; export default function Validasi({ dataOtp }: { dataOtp: any }) { const router = useRouter(); @@ -45,37 +36,6 @@ export default function Validasi({ dataOtp }: { dataOtp: any }) { const focusTrapRef = useFocusTrap(); const [loading, setLoading] = useState(false); - const onValid = async () => { - // MyConsole(inputCode) - const body = { - nomor: nomor, - otp: code, - }; - - if (!inputCode) return toast("Lengkapi Kode"); - if (body.otp != inputCode) return toast("Kode Salah"); - - // await fetch(ApiHipmi.validasi, { - // method: "POST", - // headers: { - // "Content-Type": "application/json", - // }, - // body: JSON.stringify(body), - // }) - // .then((res) => res.json()) - // .then((val) => { - // myConsole(val); - // if (val.status == 200) { - // setTimeout(() => router.push("/dev/home"), 2000); - // funGetUserProfile(val.data.id); - // NotifBerhasil("Berhasil Login"); - // } else { - // router.push("/dev/auth/register"); - // NotifPeringatan("Silahkan Registrasi"); - // } - // }); - }; - async function onVerifikasi() { if (!inputCode) return ComponentGlobal_NotifikasiPeringatan("Lengkapi Kode"); @@ -106,23 +66,32 @@ export default function Validasi({ dataOtp }: { dataOtp: any }) { return ( <> -
- -
- -
+ + + router.back()}> + + + - - - Verifikasi Kode OTP - - Silahkan masukan 4 digit kode otp yang dikirim ke{" "} - - +{nomor} - - - + + + Verifikasi Kode OTP + + + + Masukan 4 digit kode otp + + + Yang dikirim ke +{nomor} +
- - -
+
-
+
); } diff --git a/src/app_modules/forum/component/main_component/card_more_button.tsx b/src/app_modules/forum/component/main_component/card_more_button.tsx index d5aee877..bad37fe0 100644 --- a/src/app_modules/forum/component/main_component/card_more_button.tsx +++ b/src/app_modules/forum/component/main_component/card_more_button.tsx @@ -27,13 +27,11 @@ import { useRouter } from "next/navigation"; import { useState } from "react"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal"; +import mqtt_client from "@/util/mqtt_client"; +import _ from "lodash"; import { forum_funDeletePostingById } from "../../fun/delete/fun_delete_posting_by_id"; import { forum_funEditStatusPostingById } from "../../fun/edit/fun_edit_status_posting_by_id"; -import forum_v2_getAllPosting from "../../fun/get/v2_get_all_posting"; -import { forum_new_getAllPosting } from "../../fun/get/new_get_all_posting"; -import _ from "lodash"; import { MODEL_FORUM_POSTING } from "../../model/interface"; -import mqtt_client from "@/util/mqtt_client"; export default function ComponentForum_V2_CardMoreButton({ authorId, diff --git a/src/app_modules/forum/fun/create/fun_create_report_posting.ts b/src/app_modules/forum/fun/create/fun_create_report_posting.ts index bb058aee..7f93de05 100644 --- a/src/app_modules/forum/fun/create/fun_create_report_posting.ts +++ b/src/app_modules/forum/fun/create/fun_create_report_posting.ts @@ -4,22 +4,20 @@ import prisma from "@/app/lib/prisma"; import { user_getOneUserId } from "@/app_modules/fun_global/get_user_token"; import { revalidatePath } from "next/cache"; -export async function forum_funCreateReportPosting( - postingId: string, - value: string, -) { +export async function forum_funCreateReportPosting({ + postingId, + kategoriId, +}: { + postingId: string; + kategoriId: number; +}) { const authorId = await user_getOneUserId(); - const cekId = await prisma.forumMaster_KategoriReport.findFirst({ - where: { - title: value, - }, - }); const createReport = await prisma.forum_ReportPosting.create({ data: { userId: authorId, forum_PostingId: postingId, - forumMaster_KategoriReportId: cekId?.id, + forumMaster_KategoriReportId: kategoriId, }, }); diff --git a/src/app_modules/forum/fun/get/get_one_kategori_by_id.ts b/src/app_modules/forum/fun/get/get_one_kategori_by_id.ts new file mode 100644 index 00000000..2acabf36 --- /dev/null +++ b/src/app_modules/forum/fun/get/get_one_kategori_by_id.ts @@ -0,0 +1,17 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; + +export default async function forum_getOneKategoriById({ + kategoriId, +}: { + kategoriId: number; +}) { + const cekData = await prisma.forumMaster_KategoriReport.findFirst({ + where: { + id: kategoriId, + }, + }); + + return cekData +} diff --git a/src/app_modules/forum/fun/get/v2_get_all_posting.ts b/src/app_modules/forum/fun/get/v2_get_all_posting.ts deleted file mode 100644 index ca1acfce..00000000 --- a/src/app_modules/forum/fun/get/v2_get_all_posting.ts +++ /dev/null @@ -1,48 +0,0 @@ -"use server" - -import prisma from "@/app/lib/prisma"; - - -export default async function forum_v2_getAllPosting({search}: {search?: string}) { - const getData = await prisma.forum_Posting.findMany({ - // take: takeData, - // skip: skipData, - orderBy: { - createdAt: "desc", - }, - where: { - isActive: true, - diskusi: { - mode: "insensitive", - contains: search, - }, - }, - select: { - id: true, - diskusi: true, - createdAt: true, - isActive: true, - authorId: true, - Author: { - select: { - id: true, - username: true, - Profile: { - select: { - id: true, - imagesId: true, - }, - }, - }, - }, - Forum_Komentar: { - where: { - isActive: true, - }, - }, - ForumMaster_StatusPosting: true, - }, - }); - - return getData -} \ No newline at end of file diff --git a/src/app_modules/forum/main/beranda.tsx b/src/app_modules/forum/main/beranda.tsx index d9b4c950..b83e5f04 100644 --- a/src/app_modules/forum/main/beranda.tsx +++ b/src/app_modules/forum/main/beranda.tsx @@ -1,50 +1,30 @@ "use client"; import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; -import { RouterJob } from "@/app/lib/router_hipmi/router_job"; -import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header"; -import { - Affix, - rem, - ActionIcon, - Card, - CardSection, - Text, - Stack, - Divider, - Group, - Box, - TextInput, - Center, - Button, - Pagination, - Loader, -} from "@mantine/core"; -import { useShallowEffect, useTimeout, useWindowScroll } from "@mantine/hooks"; -import { - IconCirclePlus, - IconMessageCircle, - IconPencilPlus, - IconSearch, - IconSearchOff, -} from "@tabler/icons-react"; -import { useRouter } from "next/navigation"; -import ComponentForum_PostingAuthorNameOnHeader from "../component/header/posting_author_header_name"; -import { useState } from "react"; -import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; -import { useAtom } from "jotai"; -import { gs_forum_loading_edit_posting } from "../global_state"; -import { MODEL_FORUM_POSTING } from "../model/interface"; -import ComponentForum_MainCardView from "../component/main_card_view"; -import { forum_getListAllPosting } from "../fun/get/get_list_all_posting"; -import { forum_funSearchListPosting } from "../fun/search/fun_search_list_posting"; -import _ from "lodash"; -import ComponentForum_BerandaCardView from "../component/beranda/beranda_card"; import mqtt_client from "@/util/mqtt_client"; +import { + ActionIcon, + Affix, + Button, + Center, + Loader, + Stack, + Text, + TextInput, + rem +} from "@mantine/core"; +import { useShallowEffect, useWindowScroll } from "@mantine/hooks"; +import { + IconPencilPlus, + IconSearchOff +} from "@tabler/icons-react"; +import _ from "lodash"; +import { ScrollOnly } from "next-scroll-loader"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; import ComponentForum_V2_MainCardView from "../component/main_component/card_view"; import { forum_new_getAllPosting } from "../fun/get/new_get_all_posting"; -import forum_v2_getAllPosting from "../fun/get/v2_get_all_posting"; -import { ScrollOnly } from "next-scroll-loader"; +import { MODEL_FORUM_POSTING } from "../model/interface"; export default function Forum_Beranda({ listForum, diff --git a/src/app_modules/forum/model/interface.tsx b/src/app_modules/forum/model/interface.tsx index 014c0139..b512259a 100644 --- a/src/app_modules/forum/model/interface.tsx +++ b/src/app_modules/forum/model/interface.tsx @@ -13,7 +13,7 @@ export interface MODEL_FORUM_POSTING { Forum_Komentar: MODEL_FORUM_KOMENTAR[]; Forum_ReportPosting: MODEL_FORUM_MASTER_REPORT[]; ForumMaster_StatusPosting: MODEL_FORUM_MASTER_STATUS; - forumMaster_StatusPostingId: number + forumMaster_StatusPostingId: number; } export interface MODEL_FORUM_KOMENTAR { @@ -53,5 +53,8 @@ export interface MODEL_FORUM_REPORT { deskripsi: string; ForumMaster_KategoriReport: MODEL_FORUM_MASTER_REPORT; forumMaster_KategoriReportId: string; + forum_PostingId: string; + Forum_Posting: MODEL_FORUM_POSTING; + userId: string; User: MODEL_USER; } diff --git a/src/app_modules/forum/report/posting/index.tsx b/src/app_modules/forum/report/posting/index.tsx index 0b599f0d..650f86b6 100644 --- a/src/app_modules/forum/report/posting/index.tsx +++ b/src/app_modules/forum/report/posting/index.tsx @@ -11,6 +11,8 @@ import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; import mqtt_client from "@/util/mqtt_client"; import adminNotifikasi_funCreateToUser from "@/app_modules/admin/notifikasi/fun/create/fun_create_notif_user"; import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin"; +import forum_getOneKategoriById from "../../fun/get/get_one_kategori_by_id"; +import { toNumber } from "lodash"; export default function Forum_ReportPosting({ postingId, @@ -21,17 +23,22 @@ export default function Forum_ReportPosting({ listReport: MODEL_FORUM_MASTER_REPORT[]; userLoginId: string; }) { - const [reportValue, setReportValue] = useState("Kebencian"); + const [reportValue, setReportValue] = useState("1"); return ( <> - + { + setReportValue(val); + }} + > {listReport.map((e) => ( - + {e.title}} /> {e.deskripsi} @@ -40,7 +47,7 @@ export default function Forum_ReportPosting({ @@ -50,11 +57,11 @@ export default function Forum_ReportPosting({ } function ButtonAction({ - value, + kategoriId, postingId, userLoginId, }: { - value: string; + kategoriId: number; postingId: string; userLoginId: string; }) { @@ -62,27 +69,36 @@ function ButtonAction({ const [loading, setLoading] = useState(false); async function onReport() { - const report = await forum_funCreateReportPosting(postingId, value); + const report = await forum_funCreateReportPosting({ + postingId: postingId, + kategoriId: kategoriId, + }); if (report.status === 201) { + const getKategori = await forum_getOneKategoriById({ + kategoriId: toNumber(kategoriId), + }); + console.log(getKategori); + ComponentGlobal_NotifikasiBerhasil(report.message, 2000); setLoading(true); router.back(); - // const dataNotif = { - // appId: postingId, - // pesan: value, - // kategoriApp: "FORUM", - // title: "Report Posting", - // userId: userLoginId, - // }; + const dataNotif = { + appId: postingId, + pesan: getKategori?.deskripsi, + kategoriApp: "FORUM", + title: getKategori?.title, + userId: userLoginId, + status: "Report Posting", + }; - // const notif = await notifikasiToAdmin_funCreate({ - // data: dataNotif as any, - // }); + const createNotifikasi = await notifikasiToAdmin_funCreate({ + data: dataNotif as any, + }); - // if (notif.status === 201) { - // mqtt_client.publish("ADMIN", JSON.stringify({ count: 1 })); - // } + if (createNotifikasi.status === 201) { + mqtt_client.publish("ADMIN", JSON.stringify({ count: 1 })); + } } else { ComponentGlobal_NotifikasiGagal(report.message); }