const handleError = require('../utils/handleError') const sanksiModel = require('../model/sanksi.model') const { addManyDokumen } = require('../utils/dokumenFunction') const { validate } = require('../utils/validation') const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../utils/cekData') const response = require('../utils/responseHandler') exports.create = handleError(async (req, res) => { const user = req.user const { laporan_id, sanksi_id } = req.query if (!laporan_id || !sanksi_id) { return response.error(res, { message: 'query laporan_id atau sanksi_id harus ada', }) } const laporan = await cekSatuDataLaporan(res, user, laporan_id) const sanksi = await cekSatuDataSanksi(res, user, sanksi_id) if (!laporan || !sanksi) return const files = req.files 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.findOneAndUpdate( { laporan: laporan._id, _id: sanksi._id, banding: { $exists: false, $eq: null }, ['jawaban.keberatan']: { $exists: true, $ne: null }, }, { banding: { dokumen: dokumen_id, }, } ) if (!data) { return response.error(res, { message: 'banding sudah ada atau jawaban keberatan belum ada', }) } return response.success(res, { data, message: 'Berhasil menambah keberatan', }) }) exports.createJawaban = handleError(async (req, res) => { const user = req.user const { laporan_id, sanksi_id } = req.query if (!laporan_id || !sanksi_id) { return response.error(res, { message: 'query laporan_id atau sanksi_id harus ada', }) } const laporan = await cekSatuDataLaporan(res, user, laporan_id) const sanksi = await cekSatuDataSanksi(res, user, sanksi_id) if (!laporan || !sanksi) return const isValid = validate(res, req.body, { status: 'string', keterangan: 'string', }) if (!isValid) return const files = req.files 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 { status, keterangan } = req.body const data = await sanksiModel.findOneAndUpdate( { laporan: laporan._id, _id: sanksi._id, banding: { $exists: true, $ne: null }, }, { ['jawaban.banding']: { status, keterangan, dokumen: dokumen_id, }, } ) if (!data) { return response.error(res, { message: 'banding tidak ada', }) } return response.success(res, { data, }) })