51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const Pelanggaran = require('../models/Pelanggaran');
|
|
const ListPelanggaran = require('../models/ListPelanggaran');
|
|
const authMiddleware = require('../middleware/authMiddleware');
|
|
|
|
router.get('/', authMiddleware, async (req, res) => {
|
|
try {
|
|
// Ambil pelanggaran berdasarkan siswa yang login
|
|
const pelanggaran = await Pelanggaran.findAll({
|
|
where: { id_siswa: req.user.id_siswa },
|
|
include: [{
|
|
model: ListPelanggaran,
|
|
as: 'list_pelanggaran',
|
|
attributes: ['id_listpelanggaran', 'nama_pelanggaran', 'skor']
|
|
}],
|
|
attributes: ['id_pelanggaran', 'tanggal']
|
|
});
|
|
|
|
if (!pelanggaran || pelanggaran.length === 0) {
|
|
return res.status(404).json({
|
|
status: "error",
|
|
message: "Tidak ada pelanggaran yang ditemukan untuk siswa ini."
|
|
});
|
|
}
|
|
|
|
// Mapping data agar list_pelanggaran keluar dari objek list_pelanggaran
|
|
const hasil = pelanggaran.map(item => ({
|
|
id_pelanggaran: item.id_pelanggaran,
|
|
tanggal: item.tanggal,
|
|
id_listpelanggaran: item.list_pelanggaran?.id_listpelanggaran,
|
|
nama_pelanggaran: item.list_pelanggaran?.nama_pelanggaran,
|
|
skor: item.list_pelanggaran?.skor
|
|
}));
|
|
|
|
res.json({
|
|
status: "success",
|
|
message: "Pelanggaran ditemukan",
|
|
data: hasil
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
status: "error",
|
|
message: "Terjadi kesalahan pada server",
|
|
error: error.message
|
|
});
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|