const sanksiModel = require('../model/sanksi.model') const handleError = require('../utils/handleError') const response = require('../utils/responseHandler') const { addManyDokumen } = require('../utils/dokumenFunction') const { validate } = require('../utils/validation') const pemantauanModel = require('../model/pemantauan.model') const { hariKerja } = require('../utils/hariKerja') const { cekSatuDataSanksi, cekSatuDataLaporan, cekBanyakDataPelanggaran, cekBanyakDataSanksi, } = require('../utils/cekData') exports.create = handleError(async (req, res) => { const { no_sanksi, keterangan } = req.body let { pelanggaran_id } = req.body const { laporan_id } = req.params const files = req.files const user = req.user const isValid = validate(res, req.body, { no_sanksi: 'string', keterangan: 'string', pelanggaran_id: 'string', }) if (!isValid) return const laporan = await cekSatuDataLaporan(res, user, laporan_id, { evaluasi: { $exists: true, $ne: [] }, }) if (!laporan) return pelanggaran_id = await cekBanyakDataPelanggaran(res, pelanggaran_id) if (!pelanggaran_id) return const sanksi = await sanksiModel.findOne({ laporan: laporan_id }) if (sanksi) { return response.error(res, { message: 'Sanksi sudah ada', }) } if (!files.length) { return response.error(res, { message: 'dokumen harus ada', }) } const dokumen = await addManyDokumen(files) const dokumen_id = dokumen.map((e) => e._id) const data = await sanksiModel.create({ no_sanksi, laporan: laporan._id, pelanggaran: pelanggaran_id, keterangan, dokumen: dokumen_id, batas_waktu: { keberatan: hariKerja(10), }, }) await pemantauanModel.findOneAndUpdate( { laporan: laporan._id, sanksi: data._id, }, { $push: { riwayat: { user: user._id, keterangan: 'Penetapan Sanksi', dokumen: dokumen_id, }, }, } ) return response.success(res, { message: 'Berhasil membuat Sanksi', data, }) }) exports.getAll = handleError(async (req, res) => { const user = req.user let data = await cekBanyakDataSanksi(user) return response.success(res, { message: 'Berhasil ambil data Sanksi', data, }) }) exports.getOne = handleError(async (req, res) => { const user = req.user const { sanksi_id } = req.params const sanksi = await cekSatuDataSanksi(res, user, sanksi_id) if (!sanksi) return return response.success(res, { message: 'Berhasil ambil satu data Sanksi', data: sanksi, }) })