deskripsi:
- fix api user search
This commit is contained in:
2025-02-06 17:43:54 +08:00
parent 45c8dcdd57
commit 806eba3e79
8 changed files with 253 additions and 71 deletions

View File

@@ -1,25 +1,131 @@
import { decrypt } from "@/app/(auth)/_lib/decrypt";
import _ from "lodash";
import { cookies } from "next/headers";
import { prisma } from "@/app/lib";
import { funGetUserIdByToken } from "@/app_modules/_global/fun/get";
import { NextResponse } from "next/server";
export const dynamic = "force-dynamic";
export async function GET() {
const c = cookies().get(process.env.NEXT_PUBLIC_BASE_SESSION_KEY!);
if (!c || !c?.value || _.isEmpty(c?.value) || _.isUndefined(c?.value)) {
return NextResponse.json({ status: 401, message: "Unauthorized" });
export async function GET(request: Request) {
if (request.method !== "GET") {
return NextResponse.json(
{ success: false, message: "Method Not Allowed" },
{
status: 405,
}
);
}
const token = c.value;
const dataUser = await decrypt({
token: token,
encodedKey: process.env.NEXT_PUBLIC_BASE_TOKEN_KEY!,
});
try {
let fixData;
const userLoginId = await funGetUserIdByToken();
if (userLoginId == null) {
return NextResponse.json(
{
success: false,
message: "Gagal mendapatkan data, user id tidak ada",
},
{ status: 500 }
);
}
const id = dataUser?.id
const { searchParams } = new URL(request.url);
const search = searchParams.get("search");
const page = searchParams.get("page");
const takeData = 1;
const skipData = Number(page) * takeData - takeData;
return NextResponse.json({ status: 200, message: "OK", data: id });
if (!page) {
fixData = await prisma.user.findMany({
orderBy: {
createdAt: "desc",
},
where: {
MasterUserRole: {
name: "User",
},
active: true,
NOT: {
Profile: null,
},
Profile: {
name: {
contains: search ? search : "",
mode: "insensitive",
},
},
},
include: {
Profile: {
select: {
id: true,
name: true,
imageId: true,
},
},
},
});
} else {
fixData = await prisma.user.findMany({
take: takeData,
skip: skipData,
orderBy: {
createdAt: "desc",
},
where: {
MasterUserRole: {
name: "User",
},
active: true,
Profile: {
name: {
contains: search ? search : "",
mode: "insensitive",
},
},
NOT: {
Profile: null,
},
// OR: [
// {
// NOT: {
// id: userLoginId as string,
// },
// },
// ],
},
include: {
Profile: {
select: {
id: true,
name: true,
imageId: true,
},
},
},
});
}
return NextResponse.json(
{
success: true,
message: "Berhasil mendapatkan data",
data: fixData,
},
{
status: 200,
}
);
} catch (error) {
return NextResponse.json(
{
success: false,
message: "Gagal mendapatkan data",
reason: (error as Error).message,
},
{
status: 500,
}
);
} finally {
await prisma.$disconnect();
}
}