feat : user

This commit is contained in:
lukman
2024-08-02 14:58:44 +08:00
parent 6a94bcc696
commit ad59566cdf
6 changed files with 267 additions and 42 deletions

View File

@@ -4,6 +4,7 @@ import { getOneUser } from "./get/getOneUser";
import { updateUser } from "./post/updateUser";
import { deleteUser } from "./post/deleteUser";
import { createUser } from "./post/createUser";
import { getRoleUser } from "./get/getRoleUser";
export const API_INDEX_USER = [
{
@@ -31,4 +32,9 @@ export const API_INDEX_USER = [
method: "POST",
bin: deleteUser,
},
{
path: "get-role-user",
method: "GET",
bin: getRoleUser,
},
];

View File

@@ -1,20 +1,17 @@
import { prisma } from "@/module/_global";
import _ from "lodash";
import { NextRequest } from "next/server";
export async function getAllUser(req: NextRequest) {
try {
const searchParams = req.nextUrl.searchParams;
const idGroup = "2";
const idVillage = "121212";
const idGroup = "group1";
const idVillage = "desa1";
const active = searchParams.get("active");
const idPosition = searchParams.get("idPosition");
const idUserRole = searchParams.get("idUserRole");
const users = await prisma.user.findMany({
where: {
isActive: active == "true" ? true : false,
idUserRole: String(idUserRole),
idPosition: String(idPosition),
idVillage: String(idVillage),
idGroup: String(idGroup),
},
@@ -26,6 +23,11 @@ export async function getAllUser(req: NextRequest) {
phone: true,
email: true,
gender: true,
Position: {
select: {
name: true,
},
},
Group: {
select: {
name: true,
@@ -34,7 +36,14 @@ export async function getAllUser(req: NextRequest) {
},
});
return Response.json(users);
const allData = users.map((v: any) => ({
..._.omit(v, ["Group", "Position"]),
group: v.Group.name,
position: v.Position.name,
}));
return Response.json(allData);
} catch (error) {
console.error(error);
return Response.json(

View File

@@ -0,0 +1,21 @@
import { prisma } from "@/module/_global";
import { NextRequest } from "next/server";
export async function getRoleUser(req: NextRequest) {
try {
const res = await prisma.userRole.findMany({
select: {
id: true,
name: true,
},
});
return Response.json(res);
} catch (error) {
console.error(error);
return Response.json(
{ success: false, message: "Internal Server Error" },
{ status: 500 }
);
}
}

View File

@@ -5,33 +5,48 @@ import { NextRequest } from "next/server";
export async function createUser(req: NextRequest) {
try {
const data = await req.json();
const village = "desa1"
const users = await prisma.user.create({
data: {
const cek = await prisma.user.count({
where: {
nik: data.nik,
name: data.name,
phone: data.phone,
email: data.email,
gender: data.gender,
idGroup: data.idGroup,
idVillage: data.idVillage,
idPosition: data.idPosition,
idUserRole: data.idUserRole,
},
select: {
id: true,
nik: true,
name: true,
phone: true,
email: true,
gender: true,
phone: data.phone
},
});
// create log user
const log = await createLogUser({ act: 'CREATE', desc: 'User membuat data user baru', table: 'user', data: users.id })
if (cek == 0) {
const users = await prisma.user.create({
data: {
nik: data.nik,
name: data.name,
phone: data.phone,
email: data.email,
gender: data.gender,
idGroup: data.idGroup,
idVillage: village,
idPosition: data.idPosition,
idUserRole: data.idUserRole,
},
select: {
id: true,
nik: true,
name: true,
phone: true,
email: true,
gender: true,
},
});
// create log user
const log = await createLogUser({ act: 'CREATE', desc: 'User membuat data user baru', table: 'user', data: users.id })
return Response.json({ success: true, message: 'Sukses membuat user' }, { status: 200 });
} else {
return Response.json({ success: false, message: "User sudah ada" }, { status: 400 });
}
return Response.json({ success: true, message: 'Sukses membuat user' }, { status: 200 });
} catch (error) {
console.error(error);