import { DIR, funUploadFile, prisma } from "@/module/_global"; import { funGetUserById } from "@/module/auth"; import { createLogUserMobile } from "@/module/user"; import { NextResponse } from "next/server"; // GET ALL BANNER export async function GET(request: Request) { try { const { searchParams } = new URL(request.url) const userMobile = searchParams.get("user") if (userMobile == "null" || userMobile == undefined || userMobile == "") { return NextResponse.json({ success: false, message: "Anda harus login untuk mengakses ini" }, { status: 200 }); } const user = await funGetUserById({ id: userMobile }) const data = await prisma.bannerImage.findMany({ where: { isActive: true, idVillage: user.idVillage }, orderBy: { createdAt: 'desc' } }); return NextResponse.json({ success: true, message: "Berhasil mendapatkan banner", data }, { status: 200 }); } catch (error) { console.error(error); return NextResponse.json({ success: false, message: "Gagal mendapatkan data banner, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 }); } } // CREATE BANNER export async function POST(request: Request) { try { const body = await request.formData() const file = body.get("file") as File; const data = body.get("data"); const { title, user } = JSON.parse(data as string) const userLogin = await funGetUserById({ id: user }) if (userLogin.id == "null" || userLogin.id == undefined || userLogin.id == "") { return NextResponse.json({ success: false, message: "Anda harus login untuk mengakses ini" }, { status: 200 }); } const fExt = file.name.split(".").pop() const newFile = new File([file], file.name, { type: file.type }); const upload = await funUploadFile({ file: newFile, dirId: DIR.banner }) if (upload.success) { const create = await prisma.bannerImage.create({ data: { title: title, idVillage: userLogin.idVillage, extension: String(fExt), image: upload.data.id }, select: { id: true, } }) // create log user const log = await createLogUserMobile({ act: 'CREATE', desc: 'User menambah data banner baru', table: 'bannerImage', data: String(create.id), user: String(userLogin.id) }) return Response.json({ success: true, message: 'Sukses menambah data banner' }, { status: 200 }); } else { return Response.json({ success: false, message: 'Gagal menambah data banner' }, { status: 200 }); } } catch (error) { console.error(error); return NextResponse.json({ success: false, message: "Gagal menambahkan banner, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 }); } }