From 2a0455f601ac71a25b7a0e6038a018f2ec60b3c5 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Fri, 12 Sep 2025 15:59:12 +0800 Subject: [PATCH] API Mobile Add: Api event ### No Isuue --- .../mobile/event/[id]/participants/route.ts | 93 +++++++++++++++++++ src/app/api/mobile/event/[id]/route.ts | 44 ++++++++- src/app/api/mobile/event/route.ts | 88 +++++++++++++++++- 3 files changed, 219 insertions(+), 6 deletions(-) create mode 100644 src/app/api/mobile/event/[id]/participants/route.ts diff --git a/src/app/api/mobile/event/[id]/participants/route.ts b/src/app/api/mobile/event/[id]/participants/route.ts new file mode 100644 index 00000000..7438df10 --- /dev/null +++ b/src/app/api/mobile/event/[id]/participants/route.ts @@ -0,0 +1,93 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { POST , GET}; + +async function POST(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + const { userId } = await request.json(); + + + const createJoin = await prisma.event_Peserta.create({ + data: { + eventId: id, + userId: userId, + }, + + // select: { + // Event: { + // select: { + // id: true, + // title: true, + // authorId: true, + // }, + // }, + // }, + }); + + return NextResponse.json( + { + success: true, + message: "Success join event", + data: createJoin, + }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Error join event", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + const data = await prisma.event_Peserta.findMany({ + where: { + eventId: id, + }, + select: { + eventId: true, + userId: true, + isPresent: true, + User: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + imageId: true, + }, + }, + }, + }, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get participants", + data: data, + }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Error get participants", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/mobile/event/[id]/route.ts b/src/app/api/mobile/event/[id]/route.ts index f609210f..418783d2 100644 --- a/src/app/api/mobile/event/[id]/route.ts +++ b/src/app/api/mobile/event/[id]/route.ts @@ -1,8 +1,8 @@ -import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import _ from "lodash"; +import { NextResponse } from "next/server"; -export { GET, PUT }; +export { DELETE, GET, PUT }; async function GET(request: Request, { params }: { params: { id: string } }) { try { @@ -31,10 +31,14 @@ async function GET(request: Request, { params }: { params: { id: string } }) { }, }, authorId: true, + Author: { + include: { + Profile: true, + }, + }, }, }); - return NextResponse.json( { success: true, @@ -75,8 +79,6 @@ async function PUT(request: Request, { params }: { params: { id: string } }) { }, }); - console.log("[UPDATE]", update); - return NextResponse.json( { success: true, @@ -95,3 +97,35 @@ async function PUT(request: Request, { params }: { params: { id: string } }) { ); } } + +async function DELETE( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + + const deleteData = await prisma.event.delete({ + where: { + id: id, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Delete berhasil", + }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Delete gagal", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/mobile/event/route.ts b/src/app/api/mobile/event/route.ts index 87f48e01..a81d0a7d 100644 --- a/src/app/api/mobile/event/route.ts +++ b/src/app/api/mobile/event/route.ts @@ -1,8 +1,9 @@ import _ from "lodash"; import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; +import moment from "moment"; -export { POST }; +export { POST, GET }; async function POST(request: Request) { try { @@ -48,3 +49,88 @@ async function POST(request: Request) { ); } } + +async function GET(request: Request) { + try { + const allData = await prisma.event.findMany({ + where: { + active: true, + eventMaster_StatusId: "1", + isArsip: false, + }, + }); + + for (let i of allData) { + if (moment(i.tanggalSelesai).diff(moment(), "minutes") < 0) { + const updateArsip = await prisma.event.update({ + where: { + id: i.id, + }, + data: { + isArsip: true, + }, + }); + + if (!updateArsip) { + console.log("gagal update arsip"); + return []; + } + } + } + + // const takeData = 10; + // const skipData = page * takeData - takeData; + + const data = await prisma.event.findMany({ + // take: takeData, + // skip: skipData, + + orderBy: [ + { + tanggal: "asc", + }, + ], + where: { + active: true, + eventMaster_StatusId: "1", + isArsip: false, + }, + select: { + id: true, + title: true, + deskripsi: true, + tanggal: true, + tanggalSelesai: true, + EventMaster_Status: { + select: { + name: true, + }, + }, + authorId: true, + Author: { + include: { + Profile: true, + }, + }, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get event", + data: data, + }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Error get event", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +}