diff --git a/src/app/api/mobile/event/[id]/[status]/route.ts b/src/app/api/mobile/event/[id]/[status]/route.ts new file mode 100644 index 00000000..53fd6609 --- /dev/null +++ b/src/app/api/mobile/event/[id]/[status]/route.ts @@ -0,0 +1,140 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; +import _ from "lodash"; + +export { GET, PUT }; + +async function GET( + request: Request, + { params }: { params: { id: string; status: string } } +) { + try { + const { id, status } = params; + const fixStatusName = _.startCase(status); + + const data = await prisma.event.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + active: true, + authorId: id, + isArsip: false, + EventMaster_Status: { + name: fixStatusName, + }, + }, + select: { + id: true, + title: true, + deskripsi: true, + tanggal: true, + tanggalSelesai: true, + EventMaster_Status: { + select: { + name: true, + }, + }, + authorId: 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 } + ); + } +} + +async function PUT( + request: Request, + { params }: { params: { id: string; status: string } } +) { + try { + const { id, status } = params; + const fixStatusName = _.startCase(status); + + const checkData = await prisma.event.findUnique({ + where: { + id: id, + }, + select: { + id: true, + EventMaster_Status: { + select: { + name: true, + }, + }, + }, + }); + + if (!checkData) { + return NextResponse.json({ + success: false, + message: "Data tidak ditemukan", + status: 404, + }); + } + + if (checkData?.EventMaster_Status?.name === "Publish") { + return NextResponse.json({ + success: false, + message: "Event telah terpublish", + status: 400, + }); + } + + const checkStatus = await prisma.eventMaster_Status.findFirst({ + where: { + name: fixStatusName, + }, + }); + + if (!checkStatus) { + return NextResponse.json({ + success: false, + message: "Status tidak ditemukan", + status: 404, + }); + } + + const updateData = await prisma.event.update({ + where: { + id: id, + }, + data: { + eventMaster_StatusId: checkStatus.id, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Update berhasil", + }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Error update event", + 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 new file mode 100644 index 00000000..f609210f --- /dev/null +++ b/src/app/api/mobile/event/[id]/route.ts @@ -0,0 +1,97 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; +import _ from "lodash"; + +export { GET, PUT }; + +async function GET(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + const data = await prisma.event.findUnique({ + where: { + id: id, + }, + select: { + id: true, + title: true, + lokasi: true, + deskripsi: true, + tanggal: true, + tanggalSelesai: true, + eventMaster_StatusId: true, + eventMaster_TipeAcaraId: true, + EventMaster_Status: { + select: { + name: true, + }, + }, + EventMaster_TipeAcara: { + select: { + name: true, + }, + }, + authorId: 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 } + ); + } +} + +async function PUT(request: Request, { params }: { params: { id: string } }) { + try { + const { id } = params; + const { data } = await request.json(); + + const update = await prisma.event.update({ + where: { + id: id, + }, + data: { + title: _.startCase(data.title), + lokasi: data.lokasi, + deskripsi: data.deskripsi, + eventMaster_TipeAcaraId: data.eventMaster_TipeAcaraId, + tanggal: data.tanggal, + tanggalSelesai: data.tanggalSelesai, + authorId: data.authorId, + }, + }); + + console.log("[UPDATE]", update); + + return NextResponse.json( + { + success: true, + message: "Update berhasil", + }, + { status: 200 } + ); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Update 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 e52819a6..87f48e01 100644 --- a/src/app/api/mobile/event/route.ts +++ b/src/app/api/mobile/event/route.ts @@ -7,7 +7,6 @@ export { POST }; async function POST(request: Request) { try { const { data } = await request.json(); - const create = await prisma.event.create({ data: { title: _.startCase(data.title), @@ -30,8 +29,6 @@ async function POST(request: Request) { }, }); - if (!create) return { status: 400, message: "Gagal disimpan" }; - return NextResponse.json( { success: true, @@ -45,6 +42,7 @@ async function POST(request: Request) { { success: false, message: "Error create event", + reason: (error as Error).message, }, { status: 500 } ); diff --git a/src/app/api/mobile/master/event-type/route.ts b/src/app/api/mobile/master/event-type/route.ts new file mode 100644 index 00000000..0aa184ee --- /dev/null +++ b/src/app/api/mobile/master/event-type/route.ts @@ -0,0 +1,34 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET(request: Request) { + try { + const data = await prisma.eventMaster_TipeAcara.findMany({ + orderBy: { + id: "asc", + }, + where: { + active: true, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Berhasil mendapatkan data", + data: data, + }, + { status: 200 } + ); + } catch (error) { + console.error("Error Get Master Tipe Acara ", error); + return NextResponse.json( + { + success: false, + message: "API Error Get Data", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +}