|
|
@@ -5,7 +5,7 @@ const sanksiModel = require('../../model/sanksi.model')
|
|
|
const laporanModel = require('../../model/laporan.model')
|
|
|
const {
|
|
|
TEMPLATE_REMINDER,
|
|
|
- TEMPLATE_REMINDER2, TRUE, UPDATE_SANKSI,
|
|
|
+ TEMPLATE_REMINDER2, TRUE, UPDATE_SANKSI, CREATE_SANKSI
|
|
|
} = require('../../utils/constanta')
|
|
|
const moment = require('moment')
|
|
|
const autoSaveModel = require('../../model/autoSave.model')
|
|
|
@@ -13,24 +13,26 @@ const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/v1/cekDat
|
|
|
const logModel = require('../../model/log.model')
|
|
|
const kontakModel = require('../../model/kontak.model')
|
|
|
const pemantauanModel = require('../../model/pemantauan.model')
|
|
|
+const batchModel = require('../../model/batch.model')
|
|
|
+const pddiktiService = require('../../services/v2/pddikti.service')
|
|
|
|
|
|
exports.keberatan = handleError(async (req, res) => {
|
|
|
const dataSanksi = await sanksiModel
|
|
|
.find({
|
|
|
'tanggal_akhir_keberatan': {
|
|
|
- $lte: moment().toISOString(),
|
|
|
+ $lte: moment().toISOString()
|
|
|
},
|
|
|
'is_pengajuan_keberatan': {
|
|
|
$exists: false,
|
|
|
- $eq: null,
|
|
|
- },
|
|
|
+ $eq: null
|
|
|
+ }
|
|
|
})
|
|
|
.populate('user')
|
|
|
.populate('laporan')
|
|
|
|
|
|
if (!dataSanksi.length) {
|
|
|
return response.success(res, {
|
|
|
- message: 'Tidak ada keberatan yang diubah',
|
|
|
+ message: 'Tidak ada keberatan yang diubah'
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -39,7 +41,7 @@ exports.keberatan = handleError(async (req, res) => {
|
|
|
async (sanksi) =>
|
|
|
await sanksiModel.findByIdAndUpdate(sanksi._id, {
|
|
|
is_pengajuan_keberatan: false,
|
|
|
- last_step: "Dokumen Perbaikan"
|
|
|
+ last_step: 'Dokumen Perbaikan'
|
|
|
})
|
|
|
)
|
|
|
)
|
|
|
@@ -47,7 +49,7 @@ exports.keberatan = handleError(async (req, res) => {
|
|
|
aktivitas: `Server berhasil merubah last_step PT ${dataSanksi.map((e) => e.laporan.pt.nama).join(', ')} menjadi Dokumen Perbaikan`
|
|
|
})
|
|
|
return response.success(res, {
|
|
|
- message: 'Notifikasi berhasil terkirim',
|
|
|
+ message: 'Notifikasi berhasil terkirim'
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -55,23 +57,23 @@ exports.banding = handleError(async (req, res) => {
|
|
|
const dataSanksi = await sanksiModel
|
|
|
.find({
|
|
|
'tanggal_akhir_banding': {
|
|
|
- $lt: moment().toISOString(),
|
|
|
+ $lt: moment().toISOString()
|
|
|
},
|
|
|
'is_pengajuan_banding': {
|
|
|
$exists: false,
|
|
|
- $eq: null,
|
|
|
+ $eq: null
|
|
|
},
|
|
|
'jawaban.keberatan': {
|
|
|
$exists: true,
|
|
|
- $ne: null,
|
|
|
- },
|
|
|
+ $ne: null
|
|
|
+ }
|
|
|
})
|
|
|
.populate('user')
|
|
|
.populate('laporan')
|
|
|
|
|
|
if (!dataSanksi.length) {
|
|
|
return response.success(res, {
|
|
|
- message: 'Tidak ada banding yang diubah',
|
|
|
+ message: 'Tidak ada banding yang diubah'
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -80,7 +82,7 @@ exports.banding = handleError(async (req, res) => {
|
|
|
async (sanksi) => {
|
|
|
await sanksiModel.findByIdAndUpdate(sanksi._id, {
|
|
|
is_pengajuan_banding: false,
|
|
|
- last_step: "Dokumen Perbaikan"
|
|
|
+ last_step: 'Dokumen Perbaikan'
|
|
|
})
|
|
|
}
|
|
|
)
|
|
|
@@ -89,7 +91,7 @@ exports.banding = handleError(async (req, res) => {
|
|
|
aktivitas: `Server berhasil merubah last_step PT ${dataSanksi.map((e) => e.laporan.pt.nama).join(', ')} menjadi Dokumen Perbaikan`
|
|
|
})
|
|
|
return response.success(res, {
|
|
|
- message: 'Notifikasi berhasil terkirim',
|
|
|
+ message: 'Notifikasi berhasil terkirim'
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -98,12 +100,12 @@ exports.reminderKeberatan = handleError(async (req, res) => {
|
|
|
.find({
|
|
|
'tanggal_akhir_keberatan': {
|
|
|
$exists: true,
|
|
|
- $ne: null,
|
|
|
+ $ne: null
|
|
|
},
|
|
|
'jawaban.keberatan': {
|
|
|
$exists: false,
|
|
|
- $eq: null,
|
|
|
- },
|
|
|
+ $eq: null
|
|
|
+ }
|
|
|
})
|
|
|
.populate('user')
|
|
|
.populate('laporan')
|
|
|
@@ -119,23 +121,23 @@ exports.reminderKeberatan = handleError(async (req, res) => {
|
|
|
{
|
|
|
key: '1',
|
|
|
value: 'no_laporan',
|
|
|
- value_text: e.laporan.no_laporan,
|
|
|
+ value_text: e.laporan.no_laporan
|
|
|
},
|
|
|
{
|
|
|
key: '2',
|
|
|
value: 'keterangan',
|
|
|
- value_text: 'Proses Menjawab Pengajuan Keberatan',
|
|
|
+ value_text: 'Proses Menjawab Pengajuan Keberatan'
|
|
|
},
|
|
|
{
|
|
|
key: '3',
|
|
|
value: 'pt',
|
|
|
- value_text: e.laporan.pt.nama,
|
|
|
+ value_text: e.laporan.pt.nama
|
|
|
},
|
|
|
{
|
|
|
key: '4',
|
|
|
value: 'masa',
|
|
|
- value_text: `menjawab pengajuan keberatan tersisa ${dayLeft} hari lagi.`,
|
|
|
- },
|
|
|
+ value_text: `menjawab pengajuan keberatan tersisa ${dayLeft} hari lagi.`
|
|
|
+ }
|
|
|
])
|
|
|
const contacts = await kontakModel.find()
|
|
|
await logModel.create({
|
|
|
@@ -144,7 +146,7 @@ exports.reminderKeberatan = handleError(async (req, res) => {
|
|
|
} catch (error) {
|
|
|
return response.error(res, {
|
|
|
message: 'Notifikasi gagal terkirim',
|
|
|
- error: error.message,
|
|
|
+ error: error.message
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
@@ -154,7 +156,7 @@ exports.reminderKeberatan = handleError(async (req, res) => {
|
|
|
let message = 'Tidak ada notifikasi yang dikirim'
|
|
|
if (notif.length) message = 'Notifikasi berhasil terkirim'
|
|
|
return response.success(res, {
|
|
|
- message,
|
|
|
+ message
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -163,12 +165,12 @@ exports.reminderBanding = handleError(async (req, res) => {
|
|
|
.find({
|
|
|
'tanggal_akhir_banding': {
|
|
|
$exists: true,
|
|
|
- $ne: null,
|
|
|
+ $ne: null
|
|
|
},
|
|
|
'jawaban.banding': {
|
|
|
$exists: false,
|
|
|
- $eq: null,
|
|
|
- },
|
|
|
+ $eq: null
|
|
|
+ }
|
|
|
})
|
|
|
.populate('user')
|
|
|
.populate('laporan')
|
|
|
@@ -184,23 +186,23 @@ exports.reminderBanding = handleError(async (req, res) => {
|
|
|
{
|
|
|
key: '1',
|
|
|
value: 'no_laporan',
|
|
|
- value_text: e.laporan.no_laporan,
|
|
|
+ value_text: e.laporan.no_laporan
|
|
|
},
|
|
|
{
|
|
|
key: '2',
|
|
|
value: 'keterangan',
|
|
|
- value_text: 'Proses Menjawab Pengajuan Banding',
|
|
|
+ value_text: 'Proses Menjawab Pengajuan Banding'
|
|
|
},
|
|
|
{
|
|
|
key: '3',
|
|
|
value: 'pt',
|
|
|
- value_text: e.laporan.pt.nama,
|
|
|
+ value_text: e.laporan.pt.nama
|
|
|
},
|
|
|
{
|
|
|
key: '4',
|
|
|
value: 'masa',
|
|
|
- value_text: `menjawab pengajuan banding tersisa ${dayLeft} hari lagi.`,
|
|
|
- },
|
|
|
+ value_text: `menjawab pengajuan banding tersisa ${dayLeft} hari lagi.`
|
|
|
+ }
|
|
|
])
|
|
|
const contacts = await kontakModel.find()
|
|
|
await logModel.create({
|
|
|
@@ -209,7 +211,7 @@ exports.reminderBanding = handleError(async (req, res) => {
|
|
|
} catch (error) {
|
|
|
return response.error(res, {
|
|
|
message: 'Notifikasi gagal terkirim',
|
|
|
- error: error.message,
|
|
|
+ error: error.message
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
@@ -219,14 +221,14 @@ exports.reminderBanding = handleError(async (req, res) => {
|
|
|
let message = 'Tidak ada notifikasi yang dikirim'
|
|
|
if (notif.length) message = 'Notifikasi berhasil terkirim'
|
|
|
return response.success(res, {
|
|
|
- message,
|
|
|
+ message
|
|
|
})
|
|
|
})
|
|
|
|
|
|
exports.updateStatusSanksi = handleError(async (req, res) => {
|
|
|
const sanksi = await sanksiModel.find({
|
|
|
'masa_berlaku.to_date': {
|
|
|
- $lte: new Date().toISOString(),
|
|
|
+ $lte: new Date().toISOString()
|
|
|
},
|
|
|
aktif: true,
|
|
|
'masa_berlaku.berakhir': {
|
|
|
@@ -242,14 +244,19 @@ exports.updateStatusSanksi = handleError(async (req, res) => {
|
|
|
sanksi: e._id,
|
|
|
action: UPDATE_SANKSI,
|
|
|
pt_id: e.laporan.pt.id,
|
|
|
- keterangan: 'Masa berlaku sanksi sudah melewati TMT'
|
|
|
+ keterangan: 'Masa berlaku sanksi sudah melewati TMT',
|
|
|
+ levelSanksi: 0
|
|
|
})
|
|
|
await sanksiModel.findByIdAndUpdate(e._id, { 'masa_berlaku.berakhir': true })
|
|
|
+ await batchModel.create({
|
|
|
+ sanksi: e._id,
|
|
|
+ type: UPDATE_SANKSI
|
|
|
+ })
|
|
|
})
|
|
|
)
|
|
|
|
|
|
return response.success(res, {
|
|
|
- message: 'update status sanksi berhasil',
|
|
|
+ message: 'update status sanksi berhasil'
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -258,20 +265,20 @@ exports.save = handleError(async (req, res) => {
|
|
|
const { laporan: isLaporan, sanksi: isSanksi } = req.query
|
|
|
const user = req.user
|
|
|
|
|
|
- let autoData = null;
|
|
|
- let laporan = null;
|
|
|
- let sanksi = null;
|
|
|
+ let autoData = null
|
|
|
+ let laporan = null
|
|
|
+ let sanksi = null
|
|
|
if (isLaporan === TRUE) {
|
|
|
- laporan = await cekSatuDataLaporan(res, user, id);
|
|
|
+ laporan = await cekSatuDataLaporan(res, user, id)
|
|
|
if (!laporan) return
|
|
|
- autoData = await autoSaveModel.findOne({ laporan_id: laporan._id });
|
|
|
+ autoData = await autoSaveModel.findOne({ laporan_id: laporan._id })
|
|
|
} else if (isSanksi === TRUE) {
|
|
|
- sanksi = await cekSatuDataSanksi(res, user, id);
|
|
|
+ sanksi = await cekSatuDataSanksi(res, user, id)
|
|
|
if (!sanksi) return
|
|
|
- autoData = await autoSaveModel.findOne({ sanksi_id: sanksi._id });
|
|
|
+ autoData = await autoSaveModel.findOne({ sanksi_id: sanksi._id })
|
|
|
} else {
|
|
|
return response.error(res, {
|
|
|
- message: 'query harus sanksi atau laporan yg bernilai true',
|
|
|
+ message: 'query harus sanksi atau laporan yg bernilai true'
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -284,7 +291,7 @@ exports.save = handleError(async (req, res) => {
|
|
|
dataSuratBA: req.body?.PenetapanSanksi?.dataSuratBA || dataSave.laporan.PenetapanSanksi?.dataSuratBA,
|
|
|
dataUpload: req.body?.PenetapanSanksi?.dataUpload || dataSave.laporan.PenetapanSanksi?.dataUpload,
|
|
|
dataPelanggaran: req.body?.PenetapanSanksi?.dataPelanggaran || dataSave.laporan.PenetapanSanksi?.dataPelanggaran,
|
|
|
- activeStep: req.body?.PenetapanSanksi?.activeStep || dataSave.laporan.PenetapanSanksi?.activeStep,
|
|
|
+ activeStep: req.body?.PenetapanSanksi?.activeStep || dataSave.laporan.PenetapanSanksi?.activeStep
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
@@ -300,7 +307,7 @@ exports.save = handleError(async (req, res) => {
|
|
|
}
|
|
|
|
|
|
return response.success(res, {
|
|
|
- message: 'Berhasil menyimpan data auto save',
|
|
|
+ message: 'Berhasil menyimpan data auto save'
|
|
|
})
|
|
|
})
|
|
|
|
|
|
@@ -308,26 +315,26 @@ exports.getSave = handleError(async (req, res) => {
|
|
|
const { id } = req.params
|
|
|
const { laporan: isLaporan, sanksi: isSanksi } = req.query
|
|
|
|
|
|
- let data = null;
|
|
|
- let laporan = null;
|
|
|
- let sanksi = null;
|
|
|
+ let data = null
|
|
|
+ let laporan = null
|
|
|
+ let sanksi = null
|
|
|
if (isLaporan === TRUE) {
|
|
|
laporan = await laporanModel.findById(id)
|
|
|
if (!laporan) return response.error(res, {
|
|
|
code: 404,
|
|
|
message: 'laporan_id tidak ada'
|
|
|
})
|
|
|
- data = (await autoSaveModel.findOne({ laporan_id: laporan._id })).laporan;
|
|
|
+ data = (await autoSaveModel.findOne({ laporan_id: laporan._id })).laporan
|
|
|
} else if (isSanksi === 'true') {
|
|
|
sanksi = await sanksiModel.findById(id)
|
|
|
if (!sanksi) return response.error(res, {
|
|
|
code: 404,
|
|
|
message: 'sanksi_id tidak ada'
|
|
|
})
|
|
|
- data = (await autoSaveModel.findOne({ sanksi_id: sanksi._id })).sanksi;
|
|
|
+ data = (await autoSaveModel.findOne({ sanksi_id: sanksi._id })).sanksi
|
|
|
} else {
|
|
|
return response.error(res, {
|
|
|
- message: 'harus terdapat query sanksi atau laporan yg bernilai true',
|
|
|
+ message: 'harus terdapat query sanksi atau laporan yg bernilai true'
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -338,11 +345,13 @@ exports.getSave = handleError(async (req, res) => {
|
|
|
})
|
|
|
|
|
|
exports.berakhirSanksi = handleError(async (req, res) => {
|
|
|
- const sanksi = await sanksiModel.find({'masa_berlaku.to_date': {
|
|
|
+ const sanksi = await sanksiModel.find({
|
|
|
+ 'masa_berlaku.to_date': {
|
|
|
$ne: null,
|
|
|
$exists: true
|
|
|
- }}).populate('laporan')
|
|
|
- let count = 0;
|
|
|
+ }
|
|
|
+ }).populate('laporan')
|
|
|
+ let count = 0
|
|
|
|
|
|
await Promise.all(sanksi.map(async e => {
|
|
|
const dayLeft = moment(e.masa_berlaku.to_date).diff(
|
|
|
@@ -368,7 +377,7 @@ exports.berakhirSanksi = handleError(async (req, res) => {
|
|
|
value_text: `habis masa berlaku sanksi tersisa ${dayLeft} hari lagi.`
|
|
|
}
|
|
|
])
|
|
|
- count++;
|
|
|
+ count++
|
|
|
const contacts = await kontakModel.find()
|
|
|
await logModel.create({
|
|
|
aktivitas: `Server berhasil mengirim notifikasi reminder Whatsapp kepada ${contacts.map((e) => e.nama).join(', ')} dengan Nomor Sanksi ${e.no_sanksi} terhadap ${e.laporan.pt.nama} bahwa Masa Berlaku Sanksi tersisa ${dayLeft} hari lagi.`
|
|
|
@@ -376,7 +385,7 @@ exports.berakhirSanksi = handleError(async (req, res) => {
|
|
|
} catch (error) {
|
|
|
return response.error(res, {
|
|
|
message: 'Notifikasi gagal terkirim',
|
|
|
- error: error.message,
|
|
|
+ error: error.message
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
@@ -384,6 +393,56 @@ exports.berakhirSanksi = handleError(async (req, res) => {
|
|
|
let message = 'Notifikasi berhasil terkirim'
|
|
|
if (count === 0) message = 'tidak ada notifikasi yg dikirim'
|
|
|
return response.success(res, {
|
|
|
- message,
|
|
|
+ message
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+exports.batchUpdateSanksi = handleError(async (req, res) => {
|
|
|
+ const data = await batchModel.find({
|
|
|
+ type: UPDATE_SANKSI
|
|
|
+ })
|
|
|
+ .populate({
|
|
|
+ path: 'sanksi',
|
|
|
+ populate: ['laporan']
|
|
|
+ })
|
|
|
+ let error = []
|
|
|
+ await Promise.all(data.map(async e => {
|
|
|
+ const { sanksi } = e
|
|
|
+ try {
|
|
|
+ await pddiktiService.updatePDDIKTI({
|
|
|
+ ptKode: sanksi.laporan.pt.kode,
|
|
|
+ noSanksi: sanksi.no_sanksi,
|
|
|
+ fromDate: sanksi.masa_berlaku.from_date,
|
|
|
+ levelSanksi: sanksi.levelSanksi,
|
|
|
+ terimaSanksi: sanksi.tanggal_terima_sanksi
|
|
|
+ })
|
|
|
+ await logModel.create({
|
|
|
+ aktivitas: `Server berhasil mengirimkan data Ke API PDDIKTI untuk update Status PT ${sanksi.laporan.pt.nama}`
|
|
|
+ })
|
|
|
+ await batchModel.deleteOne(e._id)
|
|
|
+ } catch (e) {
|
|
|
+ error.push(e.message)
|
|
|
+ await Promise.all([
|
|
|
+ laporanModel.updateOne({
|
|
|
+ _id: sanksi.laporan._id
|
|
|
+ }, {
|
|
|
+ sanksi: null
|
|
|
+ }),
|
|
|
+ sanksiModel.deleteOne({
|
|
|
+ _id: sanksi._id
|
|
|
+ }),
|
|
|
+ logModel.create({
|
|
|
+ aktivitas: `Server gagal mengirimkan data Ke API PDDIKTI untuk update Status PT ${sanksi.laporan.pt.nama}, dengan error ${e.message}`
|
|
|
+ }),
|
|
|
+ pemantauanModel.deleteOne({
|
|
|
+ laporan: sanksi.laporan._id,
|
|
|
+ sanksi: sanksi._id,
|
|
|
+ action: CREATE_SANKSI
|
|
|
+ })
|
|
|
+ ])
|
|
|
+ }
|
|
|
+ }))
|
|
|
+ return response.success(res, {
|
|
|
+ message: error.length ? 'Ada beberapa data yang tidak bisa dikirim ke PDDIKTI' : 'Berhasil mengirim data ke PDDIKTI'
|
|
|
})
|
|
|
})
|