MIF_E31222870/BE/src/router/subKriteria.ts

109 lines
3.1 KiB
TypeScript

import { Router } from "express";
import { verifyToken } from "../utils/verifyToken";
import { subKriteria, PrismaClient } from "@prisma/client";
import { verifyRole } from "../utils/verifyRole";
const prisma = new PrismaClient();
const router = Router();
//get all subkriteria
router.get("/", verifyToken, async (req, res) => {
try {
const subkriteria = await prisma.subKriteria.findMany();
res.json(subkriteria);
} catch (error) {
res.status(500).json({ message: "Internal server error" });
}
})
//insert data subkriteria
router.post('/', verifyToken, async (req, res) => {
const { alternatif, codeId, nilai, namaId } = req.body
try {
const isExist = await prisma.subKriteria.findFirst({
where: { codeId, alternatif }
})
if (isExist) throw { message: 'Subkriteria already exist' }
const getCriteria = await prisma.kriteria.findUnique({
where: {
code: codeId
}
})
if (!getCriteria) throw { message: 'Kriteria not found' }
const subkriteria = await prisma.subKriteria.create({
data: {
alternatif,
nilai: parseInt(nilai),
jenis: {
connect: {
nama: namaId
}
},
kriteria: {
connect: {
code: codeId
}
}
}
})
res.status(201).json(subkriteria)
} catch (error: any) {
console.log(error)
res.status(500).json({ message: 'Internal server error', error });
}
})
//update data subkriteria
router.put('/:id', verifyToken, async (req, res) => {
const { alternatif, codeId, nilai, namaId } = req.body
const { id } = req.params
try {
const subKriteria = await prisma.subKriteria.update({
where: {
id: id
},
data: {
alternatif,
nilai,
jenis: {
connect: {
nama: namaId
}
},
kriteria: {
connect: {
code: codeId
}
}
}
}
)
res.json(subKriteria)
} catch (error) {
console.log(error)
res.status(500).json({ message: 'Internal server error' });
}
})
//delete data subkriteria
router.delete('/:id', verifyToken, async (req, res) => {
const { id } = req.params
try {
const existingSubKriteria = await prisma.subKriteria.findUnique({
where: { id }
});
if (!existingSubKriteria) throw { message: 'Subkriteria not found' }
await prisma.subKriteria.delete({
where: {
id
}
});
res.json({ message: 'Delete success' })
} catch (error) {
console.log(error)
res.status(500).json({ message: 'Internal server error', error });
}
})
export default router;