const sanksiModel = require('../../model/sanksi.model') const dokumenModel = require('../../model/dokumen.model') const laporanModel = require('../../model/laporan.model') const handleError = require('../../utils/v1/handleError') const response = require('../../utils/responseHandler') const coba = require('../../utils/coba') exports.pengajuan = handleError(async (req, res) => { const [keberatan, banding] = await Promise.all([ (() => sanksiModel.find({ ['pengajuan.keberatan']: { $ne: null, $exists: true }, is_pengajuan_keberatan: { $eq: null, $exists: false } }))(), (() => sanksiModel.find({ ['jawaban.keberatan']: { $ne: null, $exists: true }, ['pengajuan.banding']: { $ne: null, $exists: true }, is_pengajuan_banding: { $eq: null, $exists: false } }))() ]) await Promise.all([ ...keberatan.map(async (e) => { await sanksiModel.findOneAndUpdate({ _id: e._id }, { is_pengajuan_keberatan: true }) }), ...banding.map(async (e) => { await sanksiModel.findOneAndUpdate({ _id: e._id }, { is_pengajuan_banding: true }) }) ]) return response.success(res, { message: 'Berhasil migrasi pengajuan' }) }) exports.dokumen = handleError(async (req, res) => { const dokumen = await dokumenModel.find({ path: /api.sidali.sixsenz.net/ }) if (dokumen?.length) await Promise.all(dokumen.map(async e => { const path = e.path.split('/').slice(3).join('/') await dokumenModel.findOneAndUpdate({ _id: e._id }, { path: `${coba.decrypt(process.env.W8A1C)}/${path}` }) })) return response.success(res, { message: 'Berhasil migrasi dokumen' }) }) exports.pelanggaranSanksi = handleError(async (req, res) => { const sanksi = await sanksiModel.find({ sanksi: { $eq: [] } }).populate('pelanggaran') if (sanksi?.length) await Promise.all(sanksi.map(async e => { await sanksiModel.findOneAndUpdate({ _id: e._id }, { sanksi: e.pelanggaran.map(e2 => ({ label: e2.label_sanksi, description: e2.sanksi, level: e2.level_sanksi })) }) })) return response.success(res, { message: 'Berhasil migrasi pelanggaran sanksi' }) }) exports.tambahStep = handleError(async (req, res) => { const laporan = await laporanModel.find() await Promise.all(laporan.map(e => { let step = ['pelaporan'] if (e.jadwal) step.push('penjadwalan') if (e.evaluasi.length) step.push('pemeriksaan') if (e.sanksi) step.push('sanksi') return laporanModel.updateOne({ _id: e._id }, { step }) })) const sanksi = await sanksiModel.find() await Promise.all(sanksi.map(e => { let step = [] if (e.pengajuan?.keberatan) step.push('keberatan') if (e.pengajuan?.banding) step.push('banding') if (e.perbaikan.length) step.push('dokumen_perbaikan') if (e.pengajuan?.cabut_sanksi) step.push('cabut_sanksi') return sanksiModel.updateOne({ _id: e._id }, { step }) })) return laporan }) exports.backToSanksi = handleError(async (req, res) => { const sanksi = await sanksiModel.find({ 'masa_berlaku.to_date': { $lte: new Date().toISOString() }, aktif: false }) await Promise.all(sanksi.map(e => sanksiModel.findOneAndUpdate({ _id: e._id }, { aktif: true, 'masa_berlaku.berakhir': true }))) return sanksi })