diff --git a/src/app/api/event/status/[name]/route.ts b/src/app/api/event/status/[name]/route.ts
new file mode 100644
index 00000000..6981cd40
--- /dev/null
+++ b/src/app/api/event/status/[name]/route.ts
@@ -0,0 +1,85 @@
+import { funGetUserIdByToken } from "@/app_modules/_global/fun/get";
+import backendLogger from "@/util/backendLogger";
+import _ from "lodash";
+import { NextResponse } from "next/server";
+
+export async function GET(
+ request: Request,
+ { params }: { params: { name: string } }
+) {
+ try {
+ let fixData;
+ const { name } = params;
+ const { searchParams } = new URL(request.url);
+ const page = searchParams.get("page");
+ const takeData = 6;
+ const skipData = Number(page) * takeData - takeData;
+
+ const userLoginId = await funGetUserIdByToken();
+ if (!userLoginId) {
+ return NextResponse.json(
+ {
+ success: false,
+ message: "Gagal mendapatkan data",
+ reason: "User Unauthorized",
+ },
+ {
+ status: 401,
+ }
+ );
+ }
+
+ if (!page) {
+ fixData = await prisma.event.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ active: true,
+ authorId: userLoginId,
+ isArsip: false,
+ },
+ include: {
+ EventMaster_Status: true,
+ },
+ });
+ } else {
+ const fixStatusName = _.startCase(name);
+
+ fixData = await prisma.event.findMany({
+ take: takeData,
+ skip: skipData,
+ orderBy: {
+ tanggal: "asc",
+ },
+ where: {
+ active: true,
+ authorId: userLoginId,
+ isArsip: false,
+ EventMaster_Status: {
+ name: fixStatusName || name,
+ },
+ },
+ include: {
+ EventMaster_Status: true,
+ },
+ });
+ }
+
+ return NextResponse.json({
+ success: true,
+ message: "Success",
+ data: fixData,
+ });
+ } catch (error) {
+ backendLogger.error("Error get data event ", error);
+ return NextResponse.json(
+ {
+ success: false,
+ message: "Failed to get data",
+ reason: (error as Error).message,
+ },
+ { status: 500 }
+ );
+ }
+}
diff --git a/src/app/dev/event/main/status/[id]/page.tsx b/src/app/dev/event/main/status/[id]/page.tsx
index b2c2c353..174d569d 100644
--- a/src/app/dev/event/main/status/[id]/page.tsx
+++ b/src/app/dev/event/main/status/[id]/page.tsx
@@ -1,25 +1,21 @@
import { Event_StatusPage } from "@/app_modules/event";
import {
- event_getAllByStatusId,
- event_getMasterStatus,
+ event_getAllByStatusId,
+ event_getMasterStatus,
} from "@/app_modules/event/fun";
async function Page({ params }: { params: { id: string } }) {
- let statusId = params.id;
- const listStatus = await event_getMasterStatus();
+ // let statusId = params.id;
+ // const listStatus = await event_getMasterStatus();
- const dataStatus = await event_getAllByStatusId({
- page: 1,
- statusId: statusId,
- });
+ // const dataStatus = await event_getAllByStatusId({
+ // page: 1,
+ // statusId: statusId,
+ // });
return (
<>
-
+
>
);
}
diff --git a/src/app_modules/event/component/box_list_status.tsx b/src/app_modules/event/component/box_list_status.tsx
index ccf1dd41..bcc450f6 100644
--- a/src/app_modules/event/component/box_list_status.tsx
+++ b/src/app_modules/event/component/box_list_status.tsx
@@ -39,7 +39,7 @@ export default function ComponentEvent_BoxListStatus({
{new Intl.DateTimeFormat("id-ID", {
dateStyle: "medium",
- }).format(data.tanggal)}
+ }).format(new Date(data.tanggal))}
diff --git a/src/app_modules/event/component/button/api_fetch_event.ts b/src/app_modules/event/component/button/api_fetch_event.ts
new file mode 100644
index 00000000..a6c6823e
--- /dev/null
+++ b/src/app_modules/event/component/button/api_fetch_event.ts
@@ -0,0 +1,45 @@
+export { apiGetEventByStatus };
+
+const apiGetEventByStatus = async ({
+ status,
+ page,
+}: {
+ status: string;
+ page: string;
+}) => {
+ try {
+ // Fetch token from cookie
+ const { token } = await fetch("/api/get-cookie").then((res) => res.json());
+ if (!token) {
+ console.error("No token found");
+ return null;
+ }
+
+ // Send PUT request to update portfolio logo
+ const isPage = `?page=${page}`;
+ const response = await fetch(`/api/event/status/${status}${isPage}`, {
+ method: "GET",
+ headers: {
+ "Content-Type": "application/json",
+ Accept: "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ // Check if the response is OK
+ if (!response.ok) {
+ const errorData = await response.json().catch(() => null);
+ console.error(
+ "Error updating portfolio logo:",
+ errorData?.message || "Unknown error"
+ );
+
+ return null;
+ }
+
+ return await response.json();
+ } catch (error) {
+ console.error("Error updating portfolio medsos:", error);
+ throw error; // Re-throw the error to handle it in the calling function
+ }
+};
diff --git a/src/app_modules/event/component/button/button_create_event.tsx b/src/app_modules/event/component/button/button_create_event.tsx
index c29f96d8..0529c7ec 100644
--- a/src/app_modules/event/component/button/button_create_event.tsx
+++ b/src/app_modules/event/component/button/button_create_event.tsx
@@ -1,21 +1,19 @@
-import { IRealtimeData } from "@/lib/global_state";
-import { RouterEvent } from "@/lib/router_hipmi/router_event";
import { MainColor } from "@/app_modules/_global/color";
import {
ComponentGlobal_NotifikasiBerhasil,
ComponentGlobal_NotifikasiGagal,
- ComponentGlobal_NotifikasiPeringatan,
} from "@/app_modules/_global/notif_global";
import { notifikasiToAdmin_funCreate } from "@/app_modules/notifikasi/fun";
+import { IRealtimeData } from "@/lib/global_state";
+import { RouterEvent } from "@/lib/router_hipmi/router_event";
import { Button } from "@mantine/core";
import { useAtom } from "jotai";
-import moment from "moment";
import { useRouter } from "next/navigation";
import { useState } from "react";
import { WibuRealtime } from "wibu-pkg";
import { Event_funCreate } from "../../fun/create/fun_create";
import { gs_event_hotMenu } from "../../global_state";
-import { event_checkStatus } from "../../fun/get/fun_check_status_by_id";
+import { clientLogger } from "@/util/clientLogger";
export default function Event_ComponentCreateButton({
value,
@@ -31,42 +29,47 @@ export default function Event_ComponentCreateButton({
const [isLoading, setLoading] = useState(false);
async function onSave() {
-
- const res = await Event_funCreate(value);
+ try {
+ setLoading(true);
+ const res = await Event_funCreate(value);
- if (res.status === 201) {
- const dataNotifikasi: IRealtimeData = {
- appId: res.data?.id as any,
- status: res.data?.EventMaster_Status?.name as any,
- userId: res.data?.authorId as any,
- pesan: res.data?.title as any,
- kategoriApp: "EVENT",
- title: "Event baru",
- };
+ if (res.status === 201) {
+ const dataNotifikasi: IRealtimeData = {
+ appId: res.data?.id as any,
+ status: res.data?.EventMaster_Status?.name as any,
+ userId: res.data?.authorId as any,
+ pesan: res.data?.title as any,
+ kategoriApp: "EVENT",
+ title: "Event baru",
+ };
- const notif = await notifikasiToAdmin_funCreate({
- data: dataNotifikasi as any,
- });
-
- if (notif.status === 201) {
- WibuRealtime.setData({
- type: "notification",
- pushNotificationTo: "ADMIN",
+ const notif = await notifikasiToAdmin_funCreate({
+ data: dataNotifikasi as any,
});
- WibuRealtime.setData({
- type: "trigger",
- pushNotificationTo: "ADMIN",
- dataMessage: dataNotifikasi,
- });
+ if (notif.status === 201) {
+ WibuRealtime.setData({
+ type: "notification",
+ pushNotificationTo: "ADMIN",
+ });
- ComponentGlobal_NotifikasiBerhasil(res.message);
- setHotMenu(1);
- setLoading(true);
- router.push(RouterEvent.status({ id: "2" }), { scroll: false });
+ WibuRealtime.setData({
+ type: "trigger",
+ pushNotificationTo: "ADMIN",
+ dataMessage: dataNotifikasi,
+ });
+
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ setHotMenu(1);
+ router.push(RouterEvent.status({ id: "2" }), { scroll: false });
+ }
+ } else {
+ setLoading(false);
+ ComponentGlobal_NotifikasiGagal(res.message);
}
- } else {
- ComponentGlobal_NotifikasiGagal(res.message);
+ } catch (error) {
+ setLoading(false);
+ clientLogger.error("Error create event", error);
}
}
diff --git a/src/app_modules/event/fun/create/fun_create.ts b/src/app_modules/event/fun/create/fun_create.ts
index 3b082a75..20cc407f 100644
--- a/src/app_modules/event/fun/create/fun_create.ts
+++ b/src/app_modules/event/fun/create/fun_create.ts
@@ -6,33 +6,40 @@ import { revalidatePath } from "next/cache";
import _ from "lodash";
export async function Event_funCreate(req: MODEL_EVENT) {
- const res = await prisma.event.create({
- data: {
- title: _.startCase(req.title),
- lokasi: req.lokasi,
- deskripsi: req.deskripsi,
- eventMaster_TipeAcaraId: req.eventMaster_TipeAcaraId,
- tanggal: req.tanggal,
- tanggalSelesai: req.tanggalSelesai,
- authorId: req.authorId,
- },
- select: {
- id: true,
- title: true,
- EventMaster_Status: {
- select: {
- name: true,
- },
+ try {
+ const res = await prisma.event.create({
+ data: {
+ title: _.startCase(req.title),
+ lokasi: req.lokasi,
+ deskripsi: req.deskripsi,
+ eventMaster_TipeAcaraId: req.eventMaster_TipeAcaraId,
+ tanggal: req.tanggal,
+ tanggalSelesai: req.tanggalSelesai,
+ authorId: req.authorId,
},
- authorId: true,
- },
- });
+ select: {
+ id: true,
+ title: true,
+ EventMaster_Status: {
+ select: {
+ name: true,
+ },
+ },
+ authorId: true,
+ },
+ });
- if (!res) return { status: 400, message: "Gagal Disimpan" };
- revalidatePath("/dev/event/main/status_page");
- return {
- data: res,
- status: 201,
- message: "Berhasil Disimpan",
- };
+ if (!res) return { status: 400, message: "Gagal disimpan" };
+ revalidatePath("/dev/event/main/status_page");
+ return {
+ data: res,
+ status: 201,
+ message: "Berhasil disimpan",
+ };
+ } catch (error) {
+ return {
+ status: 500,
+ message: "Error create event",
+ };
+ }
}
diff --git a/src/app_modules/event/main/status_page/index.tsx b/src/app_modules/event/main/status_page/index.tsx
index f186834e..3df587ce 100644
--- a/src/app_modules/event/main/status_page/index.tsx
+++ b/src/app_modules/event/main/status_page/index.tsx
@@ -7,28 +7,23 @@ import {
} from "@/app_modules/_global/color/color_pallet";
import { MODEL_NEW_DEFAULT_MASTER } from "@/app_modules/model_global/interface";
import { Box, Stack, Tabs } from "@mantine/core";
-import { useRouter } from "next/navigation";
+import { useParams, useRouter } from "next/navigation";
import { useState } from "react";
import Event_StatusDraft from "./draft";
import Event_StatusPublish from "./publish";
import Event_StatusReject from "./reject";
import Event_StatusReview from "./review";
+import { globalStatusApp } from "@/app_modules/_global/lib";
+import Event_ViewStatus from "./view_status";
-export default function Event_StatusPage({
- statusId,
- dataStatus,
- listStatus,
-}: {
- statusId: string;
- dataStatus: any[];
- listStatus: MODEL_NEW_DEFAULT_MASTER[];
-}) {
+export default function Event_StatusPage() {
+ // const [changeStatus, setChangeStatus] = useState(statusId);
+ // async function onChangeStatus({ statusId }: { statusId: string }) {
+ // router.replace(RouterEvent.status({ id: statusId }));
+ // }
const router = useRouter();
- const [changeStatus, setChangeStatus] = useState(statusId);
-
- async function onChangeStatus({ statusId }: { statusId: string }) {
- router.replace(RouterEvent.status({ id: statusId }));
- }
+ const param = useParams<{ id: string }>();
+ const statusId = param.id;
return (
<>
@@ -36,10 +31,10 @@ export default function Event_StatusPage({
variant="pills"
radius="xl"
mt={1}
- value={changeStatus}
+ defaultValue={statusId}
+ value={statusId}
onTabChange={(val: any) => {
- setChangeStatus(val);
- onChangeStatus({ statusId: val });
+ router.replace(RouterEvent.status({ id: val }));
}}
styles={{
tabsList: {
@@ -52,18 +47,21 @@ export default function Event_StatusPage({
>
- {listStatus.map((e) => (
+ {globalStatusApp.map((e) => (
-
+
+
+ {/*
{changeStatus === "1" && (
)}
@@ -86,7 +86,7 @@ export default function Event_StatusPage({
{changeStatus === "4" && (
)}
-
+ */}
>
diff --git a/src/app_modules/event/main/status_page/view_status.tsx b/src/app_modules/event/main/status_page/view_status.tsx
new file mode 100644
index 00000000..6b05ce78
--- /dev/null
+++ b/src/app_modules/event/main/status_page/view_status.tsx
@@ -0,0 +1,111 @@
+"use client";
+
+import { RouterEvent } from "@/lib/router_hipmi/router_event";
+import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data";
+import ComponentGlobal_Loader from "@/app_modules/_global/component/loader";
+import { Box, Center, Stack } from "@mantine/core";
+import _ from "lodash";
+import { ScrollOnly } from "next-scroll-loader";
+import { useState } from "react";
+import ComponentEvent_BoxListStatus from "../../component/box_list_status";
+import { event_getAllByStatusId } from "../../fun";
+import { MODEL_EVENT } from "../../_lib/interface";
+import { useParams } from "next/navigation";
+import { globalStatusApp } from "@/app_modules/_global/lib";
+import { apiGetJobByStatus } from "@/app_modules/job/component/api_fetch_job";
+import { clientLogger } from "@/util/clientLogger";
+import { useShallowEffect } from "@mantine/hooks";
+import CustomSkeleton from "@/app_modules/components/CustomSkeleton";
+import { apiGetEventByStatus } from "../../component/button/api_fetch_event";
+
+export default function Event_ViewStatus() {
+ const param = useParams<{ id: string }>();
+ const [data, setData] = useState(null);
+ const [activePage, setActivePage] = useState(1);
+
+ useShallowEffect(() => {
+ handleLoadData();
+ }, []);
+
+ const handleLoadData = async () => {
+ try {
+ const cek = globalStatusApp.find((e) => e.id === param.id);
+ const response = await apiGetEventByStatus({
+ status: cek?.name as string,
+ page: `${activePage}`,
+ });
+ if (response.success) {
+ setData(response.data);
+ }
+ } catch (error) {
+ clientLogger.error("Error get job", error);
+ }
+ };
+
+ const hanldeMoreData = async () => {
+ try {
+ const cek = globalStatusApp.find((e) => e.id === param.id);
+ const nextPage = activePage + 1;
+ const response = await apiGetEventByStatus({
+ status: cek?.name as string,
+ page: `${nextPage}`,
+ });
+ if (response.success) {
+ setActivePage(nextPage);
+ return response.data;
+ }
+ } catch (error) {
+ clientLogger.error("Error get job", error);
+ }
+ };
+
+ if (!data)
+ return (
+ <>
+
+
+
+
+ >
+ );
+
+ return (
+ <>
+ {_.isEmpty(data) ? (
+
+ ) : (
+ // --- Main component --- //
+
+ (
+
+
+
+ )}
+ data={data}
+ setData={setData as any}
+ moreData={hanldeMoreData}
+ >
+ {(item) => (
+
+ )}
+
+
+ )}
+ >
+ );
+}
diff --git a/src/app_modules/user_search/component/api_fetch_user_search.ts b/src/app_modules/user_search/component/api_fetch_user_search.ts
index 513f788b..cf85a88e 100644
--- a/src/app_modules/user_search/component/api_fetch_user_search.ts
+++ b/src/app_modules/user_search/component/api_fetch_user_search.ts
@@ -10,7 +10,7 @@ export const apiGetUserSearch = async ({
const isPage = page ? `?page=${page}` : "";
const isSearch = search ? `&search=${search}` : "";
- console.log("page", page);
+
const response = await fetch(`/api/user${isPage}${isSearch}`, {
method: "GET",
headers: {
diff --git a/src/middleware.ts b/src/middleware.ts
index a8abf4e0..2d1112c2 100644
--- a/src/middleware.ts
+++ b/src/middleware.ts
@@ -29,7 +29,7 @@ const middlewareConfig: MiddlewareConfig = {
"/api/logs/*",
"/api/auth/*",
"/api/origin-url",
- "/api/event/*",
+ // "/api/event/*",
// ADMIN API
// >> buat dibawah sini <<