refactor: api divisi
Deskripsi: - folder manager api divisi No Issues
This commit is contained in:
@@ -1,14 +0,0 @@
|
||||
import { NextRequest } from "next/server";
|
||||
import { API_INDEX_DIVISION } from "./api_index";
|
||||
type Method = "GET" | "POST";
|
||||
|
||||
export async function apiDivision(req: NextRequest, method: Method) {
|
||||
const { searchParams } = new URL(req.url);
|
||||
const path = searchParams.get("path");
|
||||
const act = API_INDEX_DIVISION.find((v) => v.path === path && v.method === method);
|
||||
if (!path)
|
||||
return Response.json({ message: "page not found" }, { status: 404 });
|
||||
if (act) return act.bin(req);
|
||||
|
||||
return Response.json({ message: "404" });
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
import getAllDivision from "./get/getAllDivision";
|
||||
import getOneDivision from "./get/getOneDivision";
|
||||
import getOneDetailDivision from "./get/getOneDetailDivision";
|
||||
import createDivision from "./post/createDivision";
|
||||
import deleteDivision from "./post/deleteDivision";
|
||||
import updateDivision from "./post/updateDivision";
|
||||
|
||||
export const API_INDEX_DIVISION = [
|
||||
{
|
||||
path: "create-division",
|
||||
method: "POST",
|
||||
bin: createDivision,
|
||||
},
|
||||
{
|
||||
path: "update-division",
|
||||
method: "POST",
|
||||
bin: updateDivision,
|
||||
},
|
||||
{
|
||||
path: "delete-division",
|
||||
method: "POST",
|
||||
bin: deleteDivision,
|
||||
},
|
||||
{
|
||||
path: "get-all-division",
|
||||
method: "GET",
|
||||
bin: getAllDivision,
|
||||
},
|
||||
{
|
||||
path: "get-one-division",
|
||||
method: "GET",
|
||||
bin: getOneDivision,
|
||||
},
|
||||
{
|
||||
path: "get-one-detail-division",
|
||||
method: "GET",
|
||||
bin: getOneDetailDivision,
|
||||
},
|
||||
];
|
||||
@@ -1,30 +0,0 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import { NextRequest } from "next/server";
|
||||
|
||||
export default async function getAllDivision(req: NextRequest) {
|
||||
try {
|
||||
let grup
|
||||
const user = await funGetUserByCookies()
|
||||
const searchParams = req.nextUrl.searchParams
|
||||
let groupID = searchParams.get('groupID');
|
||||
if (groupID == null || groupID == undefined) {
|
||||
grup = user.idGroup
|
||||
} else {
|
||||
grup = groupID
|
||||
}
|
||||
|
||||
const division = await prisma.division.findMany({
|
||||
where: {
|
||||
isActive: true,
|
||||
idGroup: grup
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
return Response.json(division);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return Response.json({ success: false, message: "Internal Server Error" }, { status: 500 });
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
import { prisma } from '@/module/_global';
|
||||
import { NextRequest } from "next/server";
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
export default async function getOneDetailDivision(req: NextRequest) {
|
||||
try {
|
||||
const searchParams = req.nextUrl.searchParams
|
||||
const id = searchParams.get('divisionId');
|
||||
|
||||
const division = await prisma.division.findUnique({
|
||||
where: {
|
||||
id: String(id),
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
},
|
||||
});
|
||||
|
||||
const member = await prisma.divisionMember.findMany({
|
||||
where: {
|
||||
idDivision: String(id),
|
||||
},
|
||||
select: {
|
||||
idUser: true,
|
||||
isLeader: true
|
||||
}
|
||||
})
|
||||
|
||||
const tugas = await prisma.divisionProject.count({
|
||||
where: {
|
||||
idDivision: String(id),
|
||||
status: {
|
||||
lte: 1
|
||||
},
|
||||
isActive: true
|
||||
}
|
||||
})
|
||||
|
||||
const dokumen = await prisma.divisionDocumentFolderFile.count({
|
||||
where: {
|
||||
idDivision: String(id),
|
||||
isActive: true,
|
||||
category: "FILE"
|
||||
}
|
||||
})
|
||||
|
||||
const diskusi = await prisma.divisionDisscussion.count({
|
||||
where: {
|
||||
idDivision: String(id),
|
||||
isActive: true,
|
||||
status: 1
|
||||
}
|
||||
})
|
||||
|
||||
const kalender = await prisma.divisionCalendar.count({
|
||||
where: {
|
||||
idDivision: String(id),
|
||||
isActive: true,
|
||||
dateStart: {
|
||||
lte: new Date()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const allData = {
|
||||
// division: division,
|
||||
division: { name: name },
|
||||
jumlah: {
|
||||
tugas: 1,
|
||||
dokumen: dokumen,
|
||||
diskusi: diskusi,
|
||||
kalender: kalender
|
||||
},
|
||||
member: member,
|
||||
}
|
||||
|
||||
return Response.json(allData);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return Response.json(
|
||||
{ message: "Internal Server Error", success: false },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { NextRequest } from "next/server";
|
||||
|
||||
export default async function getOneDivision(req: NextRequest) {
|
||||
try {
|
||||
const searchParams = req.nextUrl.searchParams
|
||||
const id = searchParams.get('divisionID');
|
||||
const division = await prisma.division.findUnique({
|
||||
where: {
|
||||
id: String(id),
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
},
|
||||
});
|
||||
|
||||
const member = await prisma.divisionMember.findMany({
|
||||
where: {
|
||||
idDivision: String(id),
|
||||
},
|
||||
select: {
|
||||
idUser: true,
|
||||
isLeader: true
|
||||
}
|
||||
})
|
||||
|
||||
const allData = {
|
||||
division: division,
|
||||
member: member
|
||||
}
|
||||
return Response.json(allData);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return Response.json(
|
||||
{ message: "Internal Server Error", success: false },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
import { funGetUserByCookies } from "@/module/auth";
|
||||
import _ from "lodash";
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
export default async function createDivision(req: Request) {
|
||||
try {
|
||||
const sent = await req.json();
|
||||
const user = await funGetUserByCookies();
|
||||
|
||||
const insertDivision = await prisma.division.create({
|
||||
data: {
|
||||
name: sent.data.name,
|
||||
idVillage: String(user.idVillage),
|
||||
idGroup: sent.data.idGroup,
|
||||
desc: sent.data.desc,
|
||||
createdBy: String(user.id)
|
||||
},
|
||||
select: {
|
||||
id: true
|
||||
}
|
||||
})
|
||||
|
||||
const dataMember = sent.member.map((v: any) => ({
|
||||
..._.omit(v, ["isActive", "nik", "name", "phone", "email", "gender", "group", "position"]),
|
||||
idUser: v.id,
|
||||
idDivision: insertDivision.id,
|
||||
isAdmin: sent.admin.some((i: any) => i == v.id)
|
||||
}))
|
||||
|
||||
const insertMember = await prisma.divisionMember.createMany({
|
||||
data: dataMember
|
||||
})
|
||||
|
||||
revalidatePath("/division");
|
||||
|
||||
return Response.json({ success: true, message: "Sukses menambahkan data divisi" }, { status: 201 });
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return Response.json({ success: false, message: "Internal Server Error" }, { status: 500 });
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
|
||||
export default async function deleteDivision(req: Request) {
|
||||
try {
|
||||
const data = await req.json();
|
||||
const update = await prisma.division.update({
|
||||
where: {
|
||||
id: data.id,
|
||||
},
|
||||
data: {
|
||||
isActive: false,
|
||||
},
|
||||
});
|
||||
|
||||
return Response.json(
|
||||
{ success: true, message: "Sukses Delete Division" },
|
||||
{ status: 200 }
|
||||
);
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return Response.json(
|
||||
{ message: "Internal Server Error", success: false },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
import { prisma } from "@/module/_global";
|
||||
|
||||
export default async function updateDivision(req: Request) {
|
||||
try {
|
||||
const data = await req.json()
|
||||
|
||||
const update = await prisma.division.update({
|
||||
where: {
|
||||
id: data.id
|
||||
},
|
||||
data: {
|
||||
name: data.name,
|
||||
desc: data.desc
|
||||
}
|
||||
})
|
||||
|
||||
// belom update member nihhhh
|
||||
|
||||
return Response.json({ success: true, message: "Sukses Update Divisi" }, { status: 200 });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return Response.json({ message: "Internal Server Error", success: false }, { status: 500 });
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,6 @@ import ViewCreateTaskDivision from "./_division_fitur/task/view/view_create_divi
|
||||
import ViewDetailDivisionTask from "./_division_fitur/task/view/view_detail_division_task";
|
||||
import ViewDivisionTask from "./_division_fitur/task/view/view_division_task";
|
||||
import ViewUpdateProgressDivisionTask from "./_division_fitur/task/view/view_update_progress_division_task";
|
||||
import { apiDivision } from "./api/api_division";
|
||||
import CreateAdminDivision from "./ui/create_admin_division";
|
||||
import CreateUsers from "./ui/create_users";
|
||||
import ListDivision from './ui/list_division';
|
||||
@@ -55,7 +54,6 @@ export { ViewCreateDiscussion };
|
||||
export { ViewDetailDiscussion };
|
||||
export { ViewEditDiscussion };
|
||||
export { ViewDocumentDivision };
|
||||
export { apiDivision }
|
||||
export { apiDiscussion }
|
||||
export type { IFormDivision, IFormMemberDivision, IFormFixDivision, IDataDivison, IDataMemberDivision }
|
||||
export { ListDivision }
|
||||
|
||||
@@ -35,37 +35,8 @@ export default function NavbarAdminDivision({ data, onSuccess }: { data: any, on
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
onSuccess(false)
|
||||
toast.error("Gagal menambahkan grup, coba lagi nanti");
|
||||
toast.error("Gagal menambahkan divisi, coba lagi nanti");
|
||||
}
|
||||
|
||||
|
||||
|
||||
// try {
|
||||
// const res = await fetch(API_ADDRESS.apiCreateDivision, {
|
||||
// method: 'POST',
|
||||
// headers: {
|
||||
// 'Content-Type': 'application/json'
|
||||
// },
|
||||
// body: JSON.stringify({
|
||||
// data: data,
|
||||
// member: member.get(),
|
||||
// admin: value
|
||||
// })
|
||||
// })
|
||||
|
||||
// const errorData = await res.json();
|
||||
|
||||
// if (res.status == 201) {
|
||||
// toast.success('Sukses! data tersimpan')
|
||||
// onSuccess(true)
|
||||
// } else {
|
||||
// toast.error(errorData.message);
|
||||
// onSuccess(false)
|
||||
// }
|
||||
// } catch (error) {
|
||||
// toast.error('Error')
|
||||
// onSuccess(false)
|
||||
// }
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
@@ -30,7 +30,7 @@ export default function DrawerListPosition({ onCreated }: { onCreated: (val: boo
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
toast.error("Gagal mendapatkan grup, coba lagi nanti");
|
||||
toast.error("Gagal mendapatkan jabatan, coba lagi nanti");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,29 +41,6 @@ export default function DrawerListPosition({ onCreated }: { onCreated: (val: boo
|
||||
|
||||
async function onSubmit() {
|
||||
try {
|
||||
// const res = await fetch(API_ADDRESS.apiCreatePosition, {
|
||||
// method: 'POST',
|
||||
// headers: {
|
||||
// 'Content-Type': 'application/json'
|
||||
// },
|
||||
// body: JSON.stringify({
|
||||
// name: listData.name,
|
||||
// idGroup: listData.idGroup
|
||||
// })
|
||||
// })
|
||||
|
||||
// if (!res.ok) {
|
||||
// const errorData = await res.json();
|
||||
// if (errorData.message === "Position sudah ada") {
|
||||
// toast.error('Gagal! Position sudah ada');
|
||||
// } else {
|
||||
// toast.error('Error');
|
||||
// }
|
||||
// } else {
|
||||
// setOpenDrawerGroup(false)
|
||||
// toast.success('Sukses! data tersimpan')
|
||||
// }
|
||||
// onCreated(true)
|
||||
const res = await funCreatePosition({
|
||||
name: listData.name,
|
||||
idGroup: listData.idGroup
|
||||
@@ -76,7 +53,7 @@ export default function DrawerListPosition({ onCreated }: { onCreated: (val: boo
|
||||
} else {
|
||||
toast.error(res.message)
|
||||
}
|
||||
|
||||
|
||||
} catch (error) {
|
||||
toast.error('Error')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user