|  | @@ -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'
 | 
	
		
			
				|  |  |    })
 | 
	
		
			
				|  |  |  })
 |