;
}
diff --git a/src/app/dev/event/detail/draft/layout.tsx b/src/app/dev/event/detail/draft/[id]/layout.tsx
similarity index 52%
rename from src/app/dev/event/detail/draft/layout.tsx
rename to src/app/dev/event/detail/draft/[id]/layout.tsx
index cb57dbe3..529e8e2e 100644
--- a/src/app/dev/event/detail/draft/layout.tsx
+++ b/src/app/dev/event/detail/draft/[id]/layout.tsx
@@ -1,11 +1,16 @@
-
import { LayoutEvent_DetailDraft } from "@/app_modules/event";
import React from "react";
export default async function Page({
children,
+ params,
}: {
children: React.ReactNode;
+ params: { id: string };
}) {
- return {children};
+ let eventId = params.id
+
+ return <>
+ {children};
+ >
}
diff --git a/src/app/dev/event/detail/draft/[id]/page.tsx b/src/app/dev/event/detail/draft/[id]/page.tsx
new file mode 100644
index 00000000..ff593528
--- /dev/null
+++ b/src/app/dev/event/detail/draft/[id]/page.tsx
@@ -0,0 +1,8 @@
+import { Event_DetailDraft } from "@/app_modules/event";
+import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
+
+export default async function Page({params}: {params: {id: string}}) {
+ let eventId = params.id
+ const dataEvent = await Event_getOneById(eventId)
+ return ;
+}
diff --git a/src/app/dev/event/detail/draft/page.tsx b/src/app/dev/event/detail/draft/page.tsx
deleted file mode 100644
index d30c95cf..00000000
--- a/src/app/dev/event/detail/draft/page.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Event_DetailDraft } from "@/app_modules/event";
-
-export default async function Page() {
- return ;
-}
diff --git a/src/app/dev/event/detail/kontribusi/layout.tsx b/src/app/dev/event/detail/kontribusi/[id]/layout.tsx
similarity index 100%
rename from src/app/dev/event/detail/kontribusi/layout.tsx
rename to src/app/dev/event/detail/kontribusi/[id]/layout.tsx
diff --git a/src/app/dev/event/detail/kontribusi/[id]/page.tsx b/src/app/dev/event/detail/kontribusi/[id]/page.tsx
new file mode 100644
index 00000000..d2548e5e
--- /dev/null
+++ b/src/app/dev/event/detail/kontribusi/[id]/page.tsx
@@ -0,0 +1,20 @@
+import { Event_DetailKontribusi } from "@/app_modules/event";
+import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id";
+import { Event_getListPesertaById } from "@/app_modules/event/fun/get/get_list_peserta_by_id";
+import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let eventId = params.id;
+ const dataEvent = await Event_getOneById(eventId);
+ const listKontributor = await Event_getListPesertaById(eventId);
+ const totalPeserta = await Event_countTotalPesertaById(eventId)
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/event/detail/kontribusi/page.tsx b/src/app/dev/event/detail/kontribusi/page.tsx
deleted file mode 100644
index 80fd281b..00000000
--- a/src/app/dev/event/detail/kontribusi/page.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Event_DetailKontribusi } from "@/app_modules/event";
-
-export default async function Page() {
- return (
- <>
-
- >
- );
-}
diff --git a/src/app/dev/event/detail/main/layout.tsx b/src/app/dev/event/detail/main/[id]/layout.tsx
similarity index 100%
rename from src/app/dev/event/detail/main/layout.tsx
rename to src/app/dev/event/detail/main/[id]/layout.tsx
diff --git a/src/app/dev/event/detail/main/[id]/page.tsx b/src/app/dev/event/detail/main/[id]/page.tsx
new file mode 100644
index 00000000..be2c8a94
--- /dev/null
+++ b/src/app/dev/event/detail/main/[id]/page.tsx
@@ -0,0 +1,27 @@
+import { Event_DetailMain } from "@/app_modules/event";
+import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id";
+import { Event_CekUserJoinById } from "@/app_modules/event/fun/get/cek_user_join_by_id";
+import { Event_getListPesertaById } from "@/app_modules/event/fun/get/get_list_peserta_by_id";
+import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let eventId = params.id;
+ const dataEvent = await Event_getOneById(eventId);
+ const listPeserta = await Event_getListPesertaById(eventId);
+ const userLoginId = await User_getUserId();
+ const isJoin = await Event_CekUserJoinById(eventId, userLoginId);
+ const totalPeserta = await Event_countTotalPesertaById(eventId)
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/event/detail/main/page.tsx b/src/app/dev/event/detail/main/page.tsx
deleted file mode 100644
index 805bf77b..00000000
--- a/src/app/dev/event/detail/main/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Event_DetailMain } from "@/app_modules/event";
-
-export default async function Page() {
- return <>
-
- >
-}
\ No newline at end of file
diff --git a/src/app/dev/event/detail/publish/layout.tsx b/src/app/dev/event/detail/publish/[id]/layout.tsx
similarity index 100%
rename from src/app/dev/event/detail/publish/layout.tsx
rename to src/app/dev/event/detail/publish/[id]/layout.tsx
diff --git a/src/app/dev/event/detail/publish/[id]/page.tsx b/src/app/dev/event/detail/publish/[id]/page.tsx
new file mode 100644
index 00000000..2e3de6da
--- /dev/null
+++ b/src/app/dev/event/detail/publish/[id]/page.tsx
@@ -0,0 +1,9 @@
+import { Event_DetailPublish } from "@/app_modules/event";
+import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let eventId = params.id;
+ const dataEvent = await Event_getOneById(eventId);
+
+ return ;
+}
diff --git a/src/app/dev/event/detail/publish/page.tsx b/src/app/dev/event/detail/publish/page.tsx
deleted file mode 100644
index e17f8fe4..00000000
--- a/src/app/dev/event/detail/publish/page.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Event_DetailPublish } from "@/app_modules/event";
-
-export default async function Page() {
- return ;
-}
diff --git a/src/app/dev/event/detail/reject/layout.tsx b/src/app/dev/event/detail/reject/[id]/layout.tsx
similarity index 100%
rename from src/app/dev/event/detail/reject/layout.tsx
rename to src/app/dev/event/detail/reject/[id]/layout.tsx
diff --git a/src/app/dev/event/detail/reject/[id]/page.tsx b/src/app/dev/event/detail/reject/[id]/page.tsx
new file mode 100644
index 00000000..5c2feb8b
--- /dev/null
+++ b/src/app/dev/event/detail/reject/[id]/page.tsx
@@ -0,0 +1,9 @@
+import { Event_DetailReject } from "@/app_modules/event";
+import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
+
+export default async function Page({params}: {params: {id: string}}) {
+ let eventId = params.id
+ const dataEvent = await Event_getOneById(eventId)
+
+ return ;
+}
diff --git a/src/app/dev/event/detail/reject/page.tsx b/src/app/dev/event/detail/reject/page.tsx
deleted file mode 100644
index 6dbf68b6..00000000
--- a/src/app/dev/event/detail/reject/page.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { Event_DetailReject } from "@/app_modules/event";
-
-export default async function Page() {
- return ;
-}
diff --git a/src/app/dev/event/detail/review/layout.tsx b/src/app/dev/event/detail/review/[id]/layout.tsx
similarity index 100%
rename from src/app/dev/event/detail/review/layout.tsx
rename to src/app/dev/event/detail/review/[id]/layout.tsx
diff --git a/src/app/dev/event/detail/review/[id]/page.tsx b/src/app/dev/event/detail/review/[id]/page.tsx
new file mode 100644
index 00000000..ddada325
--- /dev/null
+++ b/src/app/dev/event/detail/review/[id]/page.tsx
@@ -0,0 +1,10 @@
+import { Event_DetailReview } from "@/app_modules/event";
+import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
+
+
+export default async function Page({params}: {params: {id: string}}) {
+ let eventId = params.id
+ const dataEvent = await Event_getOneById(eventId)
+
+ return ;
+}
diff --git a/src/app/dev/event/detail/review/page.tsx b/src/app/dev/event/detail/review/page.tsx
deleted file mode 100644
index 310b3529..00000000
--- a/src/app/dev/event/detail/review/page.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import { Event_DetailReview } from "@/app_modules/event";
-
-
-export default async function Page() {
- return ;
-}
diff --git a/src/app/dev/event/edit/layout.tsx b/src/app/dev/event/edit/[id]/layout.tsx
similarity index 100%
rename from src/app/dev/event/edit/layout.tsx
rename to src/app/dev/event/edit/[id]/layout.tsx
diff --git a/src/app/dev/event/edit/[id]/page.tsx b/src/app/dev/event/edit/[id]/page.tsx
new file mode 100644
index 00000000..cf42526f
--- /dev/null
+++ b/src/app/dev/event/edit/[id]/page.tsx
@@ -0,0 +1,27 @@
+import { Event_Edit } from "@/app_modules/event";
+import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id";
+import { Event_getMasterTipeAcara } from "@/app_modules/event/fun/master/get_tipe_acara";
+import { MODEL_EVENT } from "@/app_modules/event/model/interface";
+import _ from "lodash";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let eventId = params.id;
+ const data = await Event_getOneById(eventId);
+ const dataEvent = _.omit(data, [
+ "Author",
+ "EventMaster_Status",
+ "Event_Peserta",
+ "createdAt",
+ "updatedAt",
+ "active",
+ ]);
+ // console.log(dataEvent)
+
+ const listTipeAcara = await Event_getMasterTipeAcara()
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/event/edit/page.tsx b/src/app/dev/event/edit/page.tsx
deleted file mode 100644
index 84b19245..00000000
--- a/src/app/dev/event/edit/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Event_Edit } from "@/app_modules/event";
-
-export default async function Page() {
- return<>
-
- >
-}
\ No newline at end of file
diff --git a/src/app/dev/event/main/beranda/page.tsx b/src/app/dev/event/main/beranda/page.tsx
index bab8df15..eb5dbac0 100644
--- a/src/app/dev/event/main/beranda/page.tsx
+++ b/src/app/dev/event/main/beranda/page.tsx
@@ -1,11 +1,12 @@
-"use client";
-
import { Event_Beranda } from "@/app_modules/event";
+import { Event_getListAllPublish } from "@/app_modules/event/fun/get/get_list_all_publish";
+
+export default async function Page() {
+ const dataEvent = await Event_getListAllPublish()
-export default function Page() {
return (
<>
-
+
>
);
}
diff --git a/src/app/dev/event/main/history/page.tsx b/src/app/dev/event/main/history/page.tsx
new file mode 100644
index 00000000..ab089bc9
--- /dev/null
+++ b/src/app/dev/event/main/history/page.tsx
@@ -0,0 +1,7 @@
+import { Event_History } from "@/app_modules/event";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let eventId = params.id;
+ console.log(eventId);
+ return ;
+}
diff --git a/src/app/dev/event/main/kontribusi/page.tsx b/src/app/dev/event/main/kontribusi/page.tsx
index 25008331..5b162130 100644
--- a/src/app/dev/event/main/kontribusi/page.tsx
+++ b/src/app/dev/event/main/kontribusi/page.tsx
@@ -1,8 +1,14 @@
import { Event_Kontribusi } from "@/app_modules/event";
-
+import { Event_getListKontibusiByUserId } from "@/app_modules/event/fun/get/get_list_kontribusi_by_user_id";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
export default async function Page() {
- return<>
-
+ const userLoginId = await User_getUserId();
+ const listKontribusi = await Event_getListKontibusiByUserId(userLoginId)
+
+ return (
+ <>
+
>
-}
\ No newline at end of file
+ );
+}
diff --git a/src/app/dev/event/main/status_page/page.tsx b/src/app/dev/event/main/status_page/page.tsx
index f840cfec..bf584a53 100644
--- a/src/app/dev/event/main/status_page/page.tsx
+++ b/src/app/dev/event/main/status_page/page.tsx
@@ -1,5 +1,20 @@
import { Event_StatusPage } from "@/app_modules/event";
+import { Event_getByStatusId } from "@/app_modules/event/fun/get/get_event_by_status_id";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
export default async function Page() {
- return
-}
\ No newline at end of file
+ const authorId = await User_getUserId();
+ const listPublish = await Event_getByStatusId("1", authorId);
+ const listReview = await Event_getByStatusId("2", authorId);
+ const listDraft = await Event_getByStatusId("3", authorId);
+ const listReject = await Event_getByStatusId("4", authorId);
+
+ return (
+
+ );
+}
diff --git a/src/app/lib/router_admin/router_admin_event.ts b/src/app/lib/router_admin/router_admin_event.ts
new file mode 100644
index 00000000..16377d5d
--- /dev/null
+++ b/src/app/lib/router_admin/router_admin_event.ts
@@ -0,0 +1,8 @@
+export const RouterAdminEvent = {
+ main_event: "/dev/admin/event/main",
+
+ // table
+ table_review: "/dev/admin/event/table/review",
+ table_publish: "/dev/admin/event/table/publish",
+ table_reject: "/dev/admin/event/table/reject",
+};
diff --git a/src/app/lib/router_hipmi/router_admin.ts b/src/app/lib/router_hipmi/router_admin.ts
index 273bf3e0..80747dd1 100644
--- a/src/app/lib/router_hipmi/router_admin.ts
+++ b/src/app/lib/router_hipmi/router_admin.ts
@@ -15,17 +15,14 @@ export const RouterAdminInvestasi = {
};
export const RouterAdminDonasi = {
-
api_gambar_bukti_transfer: "/api/donasi/gambar_bukti_transfer/",
-
main_donasi: "/dev/admin/donasi/main",
// table
table_publish: "/dev/admin/donasi/table/publish",
table_review: "/dev/admin/donasi/table/review",
table_reject: "/dev/admin/donasi/table/reject",
-
// detail
detail_publish: "/dev/admin/donasi/detail/publish/",
detail_review: "/dev/admin/donasi/detail/review/",
@@ -33,14 +30,11 @@ export const RouterAdminDonasi = {
// proses
proses_transaksi: "/dev/admin/donasi/proses_transaksi/",
- pencairan_dana :"/dev/admin/donasi/pencairan_dana/",
-
-
-
-
-
+ pencairan_dana: "/dev/admin/donasi/pencairan_dana/",
};
+
+
export const RouterAdminAward = {
main_award: "/dev/admin/award/main",
};
diff --git a/src/app/lib/router_hipmi/router_event.ts b/src/app/lib/router_hipmi/router_event.ts
index 6f1310e3..65a97910 100644
--- a/src/app/lib/router_hipmi/router_event.ts
+++ b/src/app/lib/router_hipmi/router_event.ts
@@ -2,10 +2,11 @@ export const RouterEvent = {
//main
splash: "/dev/event/splash",
beranda: "/dev/event/main/beranda",
+ status_page: "/dev/event/main/status_page",
kontribusi: "/dev/event/main/kontribusi",
+ history: "/dev/event/main/history",
// status
- status_page: "/dev/event/main/status_page",
status_publish: "/dev/event/main/status_page/publish",
status_review: "/dev/event/main/status_page/review",
status_draft: "/dev/event/main/status_page/draft",
@@ -15,13 +16,13 @@ export const RouterEvent = {
create: "/dev/event/create",
// edit
- edit: "/dev/event/edit",
+ edit: "/dev/event/edit/",
// detail
- detail_main: "/dev/event/detail/main",
- detail_kontribusi: "/dev/event/detail/kontribusi",
- detail_publish: "/dev/event/detail/publish",
- detail_review: "/dev/event/detail/review",
- detail_draft: "/dev/event/detail/draft",
- detail_reject: "/dev/event/detail/reject",
+ detail_main: "/dev/event/detail/main/",
+ detail_kontribusi: "/dev/event/detail/kontribusi/",
+ detail_publish: "/dev/event/detail/publish/",
+ detail_review: "/dev/event/detail/review/",
+ detail_draft: "/dev/event/detail/draft/",
+ detail_reject: "/dev/event/detail/reject/",
};
diff --git a/src/app_modules/admin/component/header_tamplate.tsx b/src/app_modules/admin/component/header_tamplate.tsx
new file mode 100644
index 00000000..a49f3f64
--- /dev/null
+++ b/src/app_modules/admin/component/header_tamplate.tsx
@@ -0,0 +1,14 @@
+"use client";
+
+import { Box, Title, Divider } from "@mantine/core";
+
+export default function ComponentAdminGlobal_HeaderTamplate({name}: {name: string}) {
+ return (
+ <>
+
+ {name ? name : null}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/donasi/global_state/index.ts b/src/app_modules/admin/donasi/global_state/index.ts
index 82788e0b..c6efc5c6 100644
--- a/src/app_modules/admin/donasi/global_state/index.ts
+++ b/src/app_modules/admin/donasi/global_state/index.ts
@@ -1,3 +1,8 @@
import { atomWithStorage } from "jotai/utils";
+/**
+ * @param index | 0 - 3 | 0: Main dahsboard, 1: Investasi, 2: Donasi, 3: Event
+ * @type number
+ * @
+ */
export const gs_adminDonasi_hotMenu = atomWithStorage("gs_adminDonasi_hotMenu", 0)
\ No newline at end of file
diff --git a/src/app_modules/admin/event/fun/count/fun_count_event_by_status_id.ts b/src/app_modules/admin/event/fun/count/fun_count_event_by_status_id.ts
new file mode 100644
index 00000000..0c263ea3
--- /dev/null
+++ b/src/app_modules/admin/event/fun/count/fun_count_event_by_status_id.ts
@@ -0,0 +1,50 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+/**
+ *
+ * @param statusId | string > 1 - 4
+ * @returns jumlah dari donasi per status
+ */
+export default async function AdminEvent_funCountByStatusId(statusId: string) {
+ if (statusId === "1") {
+ const count = await prisma.event.count({
+ where: {
+ eventMaster_StatusId: "1",
+ },
+ });
+ return count;
+ }
+ if (statusId === "2") {
+ const count = await prisma.event.count({
+ where: {
+ eventMaster_StatusId: "2",
+ },
+ });
+ return count;
+ }
+ if (statusId === "3") {
+ const count = await prisma.event.count({
+ where: {
+ eventMaster_StatusId: "3",
+ },
+ });
+ return count;
+ }
+ if (statusId === "4") {
+ const count = await prisma.event.count({
+ where: {
+ eventMaster_StatusId: "4",
+ },
+ });
+ return count;
+ }
+ if (statusId === undefined || statusId === null) {
+
+ return {
+ status: 400,
+ message: "Parameter tidak sesuai"
+ }
+ }
+}
diff --git a/src/app_modules/admin/event/fun/edit/fun_edit_status_publish_by_id.ts b/src/app_modules/admin/event/fun/edit/fun_edit_status_publish_by_id.ts
new file mode 100644
index 00000000..05e8baab
--- /dev/null
+++ b/src/app_modules/admin/event/fun/edit/fun_edit_status_publish_by_id.ts
@@ -0,0 +1,26 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function AdminEvent_funEditStatusPublishById(
+ eventId: string,
+ statusId: string
+) {
+ console.log(eventId);
+ const updt = await prisma.event.update({
+ where: {
+ id: eventId,
+ },
+ data: {
+ eventMaster_StatusId: statusId,
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Update Gagal" };
+ revalidatePath("/dev/admin/event/main");
+ return {
+ status: 200,
+ message: "Berhasil Update Status",
+ };
+}
diff --git a/src/app_modules/admin/event/fun/edit/fun_edit_status_reject_by_id.ts b/src/app_modules/admin/event/fun/edit/fun_edit_status_reject_by_id.ts
new file mode 100644
index 00000000..ba8603c8
--- /dev/null
+++ b/src/app_modules/admin/event/fun/edit/fun_edit_status_reject_by_id.ts
@@ -0,0 +1,27 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { MODEL_EVENT } from "@/app_modules/event/model/interface";
+import { revalidatePath } from "next/cache";
+
+export async function AdminEvent_funEditCatatanById(
+ data: MODEL_EVENT,
+ statudId: string
+) {
+ const updt = await prisma.event.update({
+ where: {
+ id: data.id,
+ },
+ data: {
+ eventMaster_StatusId: statudId,
+ catatan: data.catatan
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Update Gagal" };
+ revalidatePath("/dev/admin/event/main");
+ return {
+ status: 200,
+ message: "Berhasil Update Status",
+ };
+}
diff --git a/src/app_modules/admin/event/fun/get/get_list_table_by_status_id.ts b/src/app_modules/admin/event/fun/get/get_list_table_by_status_id.ts
new file mode 100644
index 00000000..3dc49909
--- /dev/null
+++ b/src/app_modules/admin/event/fun/get/get_list_table_by_status_id.ts
@@ -0,0 +1,142 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function AdminEvent_getListTableByStatusId(statudId: string) {
+ if (statudId === "1") {
+ const getPublish = await prisma.event.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ eventMaster_StatusId: "1",
+ },
+ select: {
+ id: true,
+ title: true,
+ lokasi: true,
+ tanggal: true,
+ deskripsi: true,
+ Author: {
+ select: {
+ id: true,
+ username: true,
+ Profile: {
+ select: {
+ name: true,
+ },
+ },
+ },
+ },
+ EventMaster_Status: {
+ select: {
+ id: true,
+ name: true,
+ },
+ },
+ EventMaster_TipeAcara: {
+ select: {
+ id: true,
+ name: true,
+ },
+ },
+ Event_Peserta: true,
+ },
+ });
+ return getPublish;
+ }
+ if (statudId === "2") {
+ const getReview = await prisma.event.findMany({
+ orderBy: {
+ createdAt: "desc",
+ },
+ where: {
+ eventMaster_StatusId: "2",
+ },
+ select: {
+ id: true,
+ title: true,
+ lokasi: true,
+ tanggal: true,
+ deskripsi: true,
+ Author: {
+ select: {
+ id: true,
+ username: true,
+ Profile: {
+ select: {
+ name: true,
+ },
+ },
+ },
+ },
+ EventMaster_Status: {
+ select: {
+ id: true,
+ name: true,
+ },
+ },
+ EventMaster_TipeAcara: {
+ select: {
+ id: true,
+ name: true,
+ },
+ },
+ },
+ });
+ return getReview;
+ }
+ if (statudId === "3") {
+ const getDraft = await prisma.event.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ eventMaster_StatusId: "3",
+ },
+ });
+ return getDraft;
+ }
+ if (statudId === "4") {
+ const getReject = await prisma.event.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ eventMaster_StatusId: "4",
+ },
+ select: {
+ id: true,
+ title: true,
+ lokasi: true,
+ tanggal: true,
+ deskripsi: true,
+ Author: {
+ select: {
+ id: true,
+ username: true,
+ Profile: {
+ select: {
+ name: true,
+ },
+ },
+ },
+ },
+ EventMaster_Status: {
+ select: {
+ id: true,
+ name: true,
+ },
+ },
+ EventMaster_TipeAcara: {
+ select: {
+ id: true,
+ name: true,
+ },
+ },
+ catatan: true,
+ },
+ });
+ return getReject;
+ }
+}
diff --git a/src/app_modules/admin/event/index.tsx b/src/app_modules/admin/event/index.tsx
new file mode 100644
index 00000000..e2c63ed4
--- /dev/null
+++ b/src/app_modules/admin/event/index.tsx
@@ -0,0 +1,11 @@
+import AdminEvent_Main from "./main";
+import AdminEvent_TableReview from "./table_status/table_review";
+import AdminEvent_TablePublish from "./table_status/table_publish";
+import AdminEvent_TableReject from "./table_status/table_reject";
+
+export {
+ AdminEvent_Main,
+ AdminEvent_TableReview,
+ AdminEvent_TablePublish,
+ AdminEvent_TableReject,
+};
diff --git a/src/app_modules/admin/event/main/index.tsx b/src/app_modules/admin/event/main/index.tsx
new file mode 100644
index 00000000..77153b82
--- /dev/null
+++ b/src/app_modules/admin/event/main/index.tsx
@@ -0,0 +1,107 @@
+"use client";
+
+import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
+
+import {
+ Stack,
+ Title,
+ Divider,
+ SimpleGrid,
+ Paper,
+ Center,
+ Text,
+ Box,
+ Group,
+ ActionIcon,
+} from "@mantine/core";
+import { IconChevronsRight } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+
+
+export default function AdminEvent_Main({
+ countPublish,
+ countReview,
+ countDraft,
+ countReject,
+}: {
+ countPublish: number;
+ countReview: number;
+ countDraft: number;
+ countReject: number;
+}) {
+ const router = useRouter();
+ const listBox = [
+ {
+ id: 1,
+ name: "Publish",
+ jumlah: countPublish,
+ path: RouterAdminEvent.table_publish,
+ color: "green",
+ },
+ {
+ id: 2,
+ name: "Review",
+ jumlah: countReview,
+ path: RouterAdminEvent.table_review,
+ color: "orange",
+ },
+ {
+ id: 3,
+ name: "Draft",
+ jumlah: countDraft,
+ path: "",
+ color: "yellow",
+ },
+ {
+ id: 4,
+ name: "Reject",
+ jumlah: countReject,
+ path: RouterAdminEvent.table_reject,
+ color: "red",
+ },
+ ];
+ return (
+ <>
+
+
+
+ {listBox.map((e, i) => (
+
+
+
+
+ {e.name}
+ {e.jumlah}
+
+ {e.path !== "" ? (
+ router.push(e.path)}>
+ {" "}
+
+
+ ) : (
+
+ )}
+
+
+ ))}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/event/table_status/table_publish.tsx b/src/app_modules/admin/event/table_status/table_publish.tsx
new file mode 100644
index 00000000..453da08e
--- /dev/null
+++ b/src/app_modules/admin/event/table_status/table_publish.tsx
@@ -0,0 +1,142 @@
+"use client";
+
+import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import {
+ ActionIcon,
+ Box,
+ Button,
+ Center,
+ Group,
+ Modal,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Title,
+} from "@mantine/core";
+import {
+ IconBan,
+ IconChevronLeft,
+ IconEyeCheck,
+ IconEyeShare,
+ IconShare,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+
+import { useDisclosure } from "@mantine/hooks";
+
+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 moment from "moment";
+import _ from "lodash";
+import { AdminEvent_funEditStatusPublishById } from "../fun/edit/fun_edit_status_publish_by_id";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { AdminEvent_getListTableByStatusId } from "../fun/get/get_list_table_by_status_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+
+export default function AdminEvent_TablePublish({
+ listPublish,
+}: {
+ listPublish: MODEL_EVENT[];
+}) {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listPublish }: { listPublish: MODEL_EVENT[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listPublish);
+
+ async function onClick() {
+ // router.push(RouterAdminDonasi.detail_publish);
+ }
+
+ const TableRows = data.map((e, i) => (
+
+ | {e.title} |
+ {e.lokasi} |
+ {e.EventMaster_TipeAcara.name} |
+
+ {moment(e.tanggal).format("dddd")}, {moment(e.tanggal).format("ll")}
+ |
+ {moment(e.tanggal).format("LT")} |
+
+
+ {e.deskripsi}
+
+ |
+
+
+ }
+ radius={"xl"}
+ onClick={() => console.log("cooming soon")}
+ >
+ Lihat Peserta
+
+ |
+
+ ));
+
+ return (
+ <>
+
+
+
+ PUBLISH
+
+
+
+
+
+ | Judul |
+ Lokasi |
+ Tipe Acara |
+ Tanggal |
+ Jam |
+
+ Deskripsi
+ |
+
+
+ Aksi
+ |
+
+
+ {TableRows}
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
+
+
diff --git a/src/app_modules/admin/event/table_status/table_reject.tsx b/src/app_modules/admin/event/table_status/table_reject.tsx
new file mode 100644
index 00000000..7adb15d7
--- /dev/null
+++ b/src/app_modules/admin/event/table_status/table_reject.tsx
@@ -0,0 +1,234 @@
+"use client";
+
+import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import {
+ ActionIcon,
+ Box,
+ Button,
+ Center,
+ Flex,
+ Group,
+ Modal,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import {
+ IconBan,
+ IconChevronLeft,
+ IconEyeCheck,
+ IconEyeShare,
+ IconPencilPlus,
+ IconShare,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+
+import { useDisclosure } from "@mantine/hooks";
+
+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 moment from "moment";
+import _ from "lodash";
+import { AdminEvent_funEditStatusPublishById } from "../fun/edit/fun_edit_status_publish_by_id";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { AdminEvent_getListTableByStatusId } from "../fun/get/get_list_table_by_status_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { AdminEvent_funEditCatatanById } from "../fun/edit/fun_edit_status_reject_by_id";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+
+export default function AdminEvent_TableReject({
+ listReject,
+}: {
+ listReject: MODEL_EVENT[];
+}) {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listReject }: { listReject: MODEL_EVENT[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listReject);
+ const [eventId, setEventId] = useState("");
+ const [catatan, setCatatan] = useState("");
+
+ const TableRows = data.map((e, i) => (
+
+ |
+ {e.Author.Profile.name}
+ |
+
+ {e.title}
+ |
+
+ {e.lokasi}
+ |
+
+ {e.EventMaster_TipeAcara.name}
+ |
+
+
+ {moment(e.tanggal).format("dddd")}, {moment(e.tanggal).format("ll")}
+
+ |
+
+ {moment(e.tanggal).format("LT")}
+ |
+
+
+
+ {e.deskripsi}
+
+
+ |
+
+ {" "}
+
+
+ {e.catatan}
+
+
+ |
+
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ setEventId(e.id);
+ setCatatan(e.catatan);
+ open();
+ }}
+ >
+ Tambah Catatan
+
+ |
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+ REJECT
+
+
+
+
+
+
+ | Author |
+ Judul |
+ Lokasi |
+ Tipe Acara |
+ Tanggal |
+ Jam |
+
+ Deskripsi
+ |
+
+ Catatan
+ |
+
+
+ Aksi
+ |
+
+
+ {TableRows}
+
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
+
+async function onUpdate(
+ eventId: string,
+ catatan: string,
+ close: any,
+ setData: any
+) {
+ const body = {
+ id: eventId,
+ catatan: catatan,
+ };
+ await AdminEvent_funEditCatatanById(body as any, "4").then(async (res) => {
+ if (res.status === 200) {
+ await AdminEvent_getListTableByStatusId("4").then((val) => {
+ setData(val);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ close();
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
diff --git a/src/app_modules/admin/event/table_status/table_review.tsx b/src/app_modules/admin/event/table_status/table_review.tsx
new file mode 100644
index 00000000..f6afd27b
--- /dev/null
+++ b/src/app_modules/admin/event/table_status/table_review.tsx
@@ -0,0 +1,226 @@
+"use client";
+
+import { RouterAdminDonasi } from "@/app/lib/router_hipmi/router_admin";
+import {
+ ActionIcon,
+ Box,
+ Button,
+ Center,
+ Group,
+ Modal,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ TextInput,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import {
+ IconBan,
+ IconChevronLeft,
+ IconEyeCheck,
+ IconEyeShare,
+ IconShare,
+} from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+
+import { useDisclosure } from "@mantine/hooks";
+
+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 moment from "moment";
+import _ from "lodash";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { AdminEvent_funEditStatusPublishById } from "../fun/edit/fun_edit_status_publish_by_id";
+import { AdminEvent_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 { AdminEvent_funEditCatatanById } from "../fun/edit/fun_edit_status_reject_by_id";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+
+export default function AdminEvent_TableReview({
+ listReview,
+}: {
+ listReview: MODEL_EVENT[];
+}) {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listReview }: { listReview: MODEL_EVENT[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listReview);
+ const [catatan, setCatatan] = useState("");
+ const [eventId, setEventId] = useState("");
+
+ const TableRows = data.map((e, i) => (
+
+ | {e.Author.Profile.name} |
+ {e.title} |
+ {e.lokasi} |
+ {e.EventMaster_TipeAcara.name} |
+
+ {moment(e.tanggal).format("dddd")}, {moment(e.tanggal).format("ll")}
+ |
+ {moment(e.tanggal).format("LT")} |
+
+
+ {e.deskripsi}
+
+ |
+
+
+
+ }
+ radius={"xl"}
+ onClick={() => onPublish(e.id, setData)}
+ >
+ Publish
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ open();
+ setEventId(e.id);
+ }}
+ >
+ Reject
+
+
+ |
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+ {/* {JSON.stringify(data, null, 2)} */}
+
+
+ REVIEW
+
+
+
+
+
+ | Author |
+ Judul |
+ Lokasi |
+ Tipe Acara |
+ Tanggal |
+ Jam |
+
+ Deskripsi
+ |
+
+
+ Aksi
+ |
+
+
+ {TableRows}
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
+
+async function onPublish(eventId: string, setData: any) {
+ await AdminEvent_funEditStatusPublishById(eventId, "1").then(async (res) => {
+ if (res.status === 200) {
+ await AdminEvent_getListTableByStatusId("2").then((res) => {
+ setData(res);
+ ComponentGlobal_NotifikasiBerhasil("Berhasil update status");
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
+
+async function onReject(eventId: string, catatan: string, setData: any, close: any) {
+ if (catatan === "")
+ return ComponentGlobal_NotifikasiPeringatan("Lengkapi Catatan");
+ const body = {
+ id: eventId,
+ catatan: catatan,
+ };
+
+ await AdminEvent_funEditCatatanById(body as any, "4").then(async (res) => {
+ if (res.status === 200) {
+ await AdminEvent_getListTableByStatusId("2").then((val) => {
+ setData(val);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ close()
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
diff --git a/src/app_modules/admin/main_dashboard/main/layout.tsx b/src/app_modules/admin/main_dashboard/main/layout.tsx
index 3b6d3774..1f9b4337 100644
--- a/src/app_modules/admin/main_dashboard/main/layout.tsx
+++ b/src/app_modules/admin/main_dashboard/main/layout.tsx
@@ -35,6 +35,7 @@ import { Logout } from "@/app_modules/auth";
import { useAtom } from "jotai";
import { gs_adminDonasi_hotMenu } from "../../donasi/global_state";
import Admin_Logout from "../../component/logout";
+import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
export default function AdminLayout({
children,
@@ -62,6 +63,11 @@ export default function AdminLayout({
name: "Donasi",
route: RouterAdminDonasi.main_donasi,
},
+ {
+ id: 4,
+ name: "Event",
+ route: RouterAdminEvent.main_event,
+ },
];
return (
diff --git a/src/app_modules/admin/main_dashboard/splash.tsx b/src/app_modules/admin/main_dashboard/splash.tsx
index c492bb09..addfed27 100644
--- a/src/app_modules/admin/main_dashboard/splash.tsx
+++ b/src/app_modules/admin/main_dashboard/splash.tsx
@@ -3,28 +3,31 @@
import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin";
import { AspectRatio, Center, Image, Stack, Text, Title } from "@mantine/core";
import { useShallowEffect } from "@mantine/hooks";
+import { useAtom } from "jotai";
import { useRouter } from "next/navigation";
+import { gs_adminDonasi_hotMenu } from "../donasi/global_state";
export default function SplashDashboardAdmin() {
const router = useRouter();
+ const [active, setActive] = useAtom(gs_adminDonasi_hotMenu);
+
useShallowEffect(() => {
- setTimeout(() => router.push(RouterAdminDashboard.main_admin), 2000)
+ setTimeout(() => {
+ router.push(RouterAdminDashboard.main_admin);
+ setActive(0);
+ }, 2000);
}, []);
return (
<>
- {/*
-
- Selamat Datang, ADMIN
-
- HIPMI
-
- */}
-
-
-
-
+
+
Welcome Admin
-
+
+
+
+
+
+
>
);
}
diff --git a/src/app_modules/auth/logout/view.tsx b/src/app_modules/auth/logout/view.tsx
index 6faa0604..58ffe935 100644
--- a/src/app_modules/auth/logout/view.tsx
+++ b/src/app_modules/auth/logout/view.tsx
@@ -8,6 +8,7 @@ import { gs_nomor, gs_otp } from "../state/state";
import { IconLogout } from "@tabler/icons-react";
import { Warna } from "@/app/lib/warna";
import { useDisclosure } from "@mantine/hooks";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
export default function User_Logout() {
const router = useRouter();
@@ -24,6 +25,7 @@ export default function User_Logout() {
setnomor(null);
setCode(null);
+ ComponentGlobal_NotifikasiBerhasil("Anda Berhasil Logout")
return router.push("/dev/auth/login");
}
});
diff --git a/src/app_modules/component_global/author_name_on_header.tsx b/src/app_modules/component_global/author_name_on_header.tsx
new file mode 100644
index 00000000..75d6594f
--- /dev/null
+++ b/src/app_modules/component_global/author_name_on_header.tsx
@@ -0,0 +1,47 @@
+"use client";
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import { Stack, Grid, Avatar, Divider, Text } from "@mantine/core";
+import { useRouter } from "next/navigation";
+
+export default function ComponentGlobal_AuthorNameOnHeader({
+ profileId,
+ imagesId,
+ authorName,
+}: {
+ profileId: string;
+ imagesId: string;
+ authorName: string;
+}) {
+ const router = useRouter();
+ return (
+ <>
+
+
+ {
+ router.push(RouterProfile.katalog + profileId);
+ }}
+ >
+
+
+
+
+
+ {authorName}
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/model/interface.ts b/src/app_modules/donasi/model/interface.ts
index 8bfac74d..282e1d02 100644
--- a/src/app_modules/donasi/model/interface.ts
+++ b/src/app_modules/donasi/model/interface.ts
@@ -1,6 +1,6 @@
import { MODEL_USER } from "@/app_modules/home/model/interface";
import { Model_Nama_Bank } from "@/app_modules/investasi/model/model_investasi";
-import { MODEL_IMAGES } from "@/app_modules/models/interface";
+import { MODEL_IMAGES } from "@/app_modules/model_global/interface";
export interface MODEL_DONASI {
id: string;
diff --git a/src/app_modules/event/component/box_list_status.tsx b/src/app_modules/event/component/box_list_status.tsx
new file mode 100644
index 00000000..a53c04d7
--- /dev/null
+++ b/src/app_modules/event/component/box_list_status.tsx
@@ -0,0 +1,48 @@
+"use client";
+
+import { RouterEvent } from "@/app/lib/router_hipmi/router_event";
+import { Paper, Stack, Group, Title, Text, Grid } from "@mantine/core";
+import moment from "moment";
+import { MODEL_EVENT } from "../model/interface";
+import { useRouter } from "next/navigation";
+
+export default function ComponentEvent_BoxListStatus({
+ data,
+ path,
+}: {
+ data: MODEL_EVENT;
+ path: string;
+}) {
+ const router = useRouter();
+ return (
+ <>
+ router.push(path + data.id)}
+ >
+
+
+
+
+ {data.title}
+
+
+
+
+ {moment(data.tanggal).format("ll")}
+
+
+
+
+
+ {data.deskripsi}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/event/component/catatan_reject.tsx b/src/app_modules/event/component/catatan_reject.tsx
new file mode 100644
index 00000000..2196f607
--- /dev/null
+++ b/src/app_modules/event/component/catatan_reject.tsx
@@ -0,0 +1,18 @@
+"use client"
+
+import { Paper, Stack, Text } from "@mantine/core"
+
+export default function ComponentEvent_CatatanReject({catatan}: {catatan:string}){
+ return<>
+
+
+
+ * Alasan Penolakan
+
+
+ {catatan}
+
+
+
+ >
+}
\ No newline at end of file
diff --git a/src/app_modules/event/component/detail/detail_data.tsx b/src/app_modules/event/component/detail/detail_data.tsx
new file mode 100644
index 00000000..099b27c3
--- /dev/null
+++ b/src/app_modules/event/component/detail/detail_data.tsx
@@ -0,0 +1,82 @@
+"use client";
+
+import { Stack, Title, Grid, Text, Paper, Spoiler } from "@mantine/core";
+import moment from "moment";
+import { MODEL_EVENT } from "../../model/interface";
+
+export default function ComponentEvent_DetailData({
+ data,
+}: {
+ data: MODEL_EVENT;
+}) {
+ const tgl = data.tanggal;
+ const hari = tgl.toLocaleString("id-ID", { dateStyle: "full" });
+
+ const jam = tgl.toLocaleTimeString([], {
+ hour: "2-digit",
+ minute: "2-digit",
+ hour12: false,
+ });
+
+ return (
+ <>
+
+
+ {data ? data.title : null}
+
+
+
+ Lokasi
+
+
+ :
+
+ {data ? data.lokasi : null}
+
+
+
+
+
+ Tipe Acara
+
+
+ :
+
+ {data ? data.EventMaster_TipeAcara.name : null}
+
+
+
+
+
+ Tanggal
+
+
+ :
+ {hari}
+
+
+
+
+ Jam
+
+
+ :
+ {jam}
+
+
+
+ Deskripsi
+
+
+ {data ? data.deskripsi : null}
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/event/component/detail/detail_main.tsx b/src/app_modules/event/component/detail/detail_main.tsx
new file mode 100644
index 00000000..08d49828
--- /dev/null
+++ b/src/app_modules/event/component/detail/detail_main.tsx
@@ -0,0 +1,90 @@
+"use client";
+
+import { Stack, Title, Grid, Text, Paper, Spoiler } from "@mantine/core";
+import moment from "moment";
+import { MODEL_EVENT } from "../../model/interface";
+import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header";
+
+export default function ComponentEvent_DetailMainData({
+ data,
+}: {
+ data: MODEL_EVENT;
+}) {
+ const tgl = data.tanggal;
+ const hari = tgl.toLocaleString("id-ID", { dateStyle: "full" });
+
+ const jam = tgl.toLocaleTimeString([], {
+ hour: "2-digit",
+ minute: "2-digit",
+ hour12: false,
+ });
+
+ return (
+ <>
+
+
+
+
+ {data ? data.title : null}
+
+
+
+ Lokasi
+
+
+ :
+
+ {data ? data.lokasi : null}
+
+
+
+
+
+ Tipe Acara
+
+
+ :
+
+ {data ? data.EventMaster_TipeAcara.name : null}
+
+
+
+
+
+ Tanggal
+
+
+ :
+ {hari}
+
+
+
+
+ Jam
+
+
+ :
+ {jam}
+
+
+
+ Deskripsi
+
+
+ {data ? data.deskripsi : null}
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/event/component/detail/list_peserta.tsx b/src/app_modules/event/component/detail/list_peserta.tsx
new file mode 100644
index 00000000..4265dd54
--- /dev/null
+++ b/src/app_modules/event/component/detail/list_peserta.tsx
@@ -0,0 +1,77 @@
+"use client";
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import {
+ Paper,
+ Stack,
+ Center,
+ Title,
+ Grid,
+ Avatar,
+ Divider,
+ Text,
+} from "@mantine/core";
+import _ from "lodash";
+import router from "next/router";
+import peserta from "../../main/kontribusi/peserta";
+import { MODEL_EVENT_PESERTA } from "../../model/interface";
+
+export default function ComponentEvent_ListPeserta({
+ listPeserta,
+ total,
+}: {
+ listPeserta: MODEL_EVENT_PESERTA[];
+ total: number;
+}) {
+ return (
+ <>
+
+
+
+ Daftar Peserta ({total})
+
+
+ {_.isEmpty(listPeserta) ? (
+
+
+ - Tidak ada peserta -
+
+
+ ) : (
+
+ {listPeserta.map((e, i) => (
+
+
+ {
+ router.push(RouterProfile.katalog + e.User.Profile.id);
+ }}
+ >
+
+
+
+
+ {e.User.Profile.name}
+
+
+
+
+
+ ))}
+
+ )}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/event/component/detail_data.tsx b/src/app_modules/event/component/detail_data.tsx
deleted file mode 100644
index f9cbc042..00000000
--- a/src/app_modules/event/component/detail_data.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-"use client";
-
-import { Stack, Title, Grid, Text, Paper } from "@mantine/core";
-import moment from "moment";
-
-export default function ComponentEvent_DetailData() {
- return (
- <>
-
-
- Nama Event
-
-
- Lokasi
-
- :
-
- Lokasi Acara
-
-
-
-
- Tanggal
-
- :
- {moment(Date.now()).format("ll")}
-
-
-
- Jam
-
- :
- {moment(Date.now()).format("LT")}
-
-
- Deskripsi
-
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum
- ipsum voluptate doloremque optio explicabo temporibus delectus
- voluptatum similique tempora voluptatem. Exercitationem veritatis
- tempora impedit ipsam, fugit vitae repellat sint fugiat
-
-
-
-
- >
- );
-}
diff --git a/src/app_modules/event/create/create.tsx b/src/app_modules/event/create/create.tsx
index 3a476f34..4156847f 100644
--- a/src/app_modules/event/create/create.tsx
+++ b/src/app_modules/event/create/create.tsx
@@ -13,11 +13,12 @@ import {
Image,
MultiSelect,
Paper,
+ Select,
Stack,
TextInput,
Textarea,
} from "@mantine/core";
-import { DateTimePicker } from "@mantine/dates";
+import { DateInput, DatePicker, DateTimePicker } from "@mantine/dates";
import { TimeInput } from "@mantine/dates";
import { IconCamera } from "@tabler/icons-react";
import { useAtom } from "jotai";
@@ -25,38 +26,101 @@ import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.share
import { useRouter } from "next/navigation";
import { useState } from "react";
import { gs_event_status } from "../global_state";
+import { MODEL_DEFAULT_MASTER } from "@/app_modules/model_global/interface";
+import { Event_funCreate } from "../fun/create/fun_create";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { kMaxLength } from "buffer";
-export default function Event_Create({ listUser }: { listUser: MODEL_USER[] }) {
+export default function Event_Create({
+ listTipeAcara,
+ authorId,
+}: {
+ listTipeAcara: MODEL_DEFAULT_MASTER[];
+ authorId: string;
+}) {
const router = useRouter();
- const [img, setImg] = useState();
- const [file, setFile] = useState();
const [tabsStatus, setTabsStatus] = useAtom(gs_event_status);
+ const [listTipe, setListTipe] = useState(listTipeAcara);
+
+ const [value, setValue] = useState({
+ title: "",
+ lokasi: "",
+ deskripsi: "",
+ tanggal: Date,
+ eventMaster_TipeAcaraId: 0,
+ authorId: authorId,
+ });
return (
<>
-
+
+ setValue({
+ ...value,
+ title: val.target.value,
+ })
+ }
+ />
+
+