|  | @@ -14,10 +14,10 @@ const {
 | 
	
		
			
				|  |  |  const laporanModel = require('../model/laporan.model')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  exports.create = handleError(async (req, res) => {
 | 
	
		
			
				|  |  | -  const { no_sanksi, keterangan, from_date, to_date } = req.body
 | 
	
		
			
				|  |  | +  const { no_sanksi, keterangan, from_date, to_date, tanggal_terima_sanksi, tanggal_akhir_keberatan } = req.body
 | 
	
		
			
				|  |  |    let { pelanggaran_id } = req.body
 | 
	
		
			
				|  |  |    const { laporan_id } = req.params
 | 
	
		
			
				|  |  | -  const files = req.files
 | 
	
		
			
				|  |  | +  const { dokumen: files, berita_acara, dokumen_terima_sanksi } = req.files
 | 
	
		
			
				|  |  |    const user = req.user
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const isValid = validate(res, req.body, {
 | 
	
	
		
			
				|  | @@ -26,6 +26,8 @@ exports.create = handleError(async (req, res) => {
 | 
	
		
			
				|  |  |      pelanggaran_id: 'string',
 | 
	
		
			
				|  |  |      from_date: 'string',
 | 
	
		
			
				|  |  |      to_date: 'string',
 | 
	
		
			
				|  |  | +    tanggal_terima_sanksi: 'string',
 | 
	
		
			
				|  |  | +    tanggal_akhir_keberatan: 'string',
 | 
	
		
			
				|  |  |    })
 | 
	
		
			
				|  |  |    if (!isValid) return
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -44,11 +46,21 @@ exports.create = handleError(async (req, res) => {
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  if (!files.length) {
 | 
	
		
			
				|  |  | +  if (!files) {
 | 
	
		
			
				|  |  |      return response.error(res, {
 | 
	
		
			
				|  |  |        message: 'dokumen harus ada',
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +  let dokumenBeritaAcara_id = null
 | 
	
		
			
				|  |  | +  if (berita_acara) {
 | 
	
		
			
				|  |  | +    const dokumenBeritaAcara = await addManyDokumen(berita_acara)
 | 
	
		
			
				|  |  | +    dokumenBeritaAcara_id = dokumenBeritaAcara[0]
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  let dokumenTerimaSanksi_id = []
 | 
	
		
			
				|  |  | +  if (dokumen_terima_sanksi) {
 | 
	
		
			
				|  |  | +    const dokumenTerimaSanksi = await addManyDokumen(dokumen_terima_sanksi)
 | 
	
		
			
				|  |  | +    dokumenTerimaSanksi_id = dokumenTerimaSanksi.map((e) => e._id)
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const dokumen = await addManyDokumen(files)
 | 
	
		
			
				|  |  |    const dokumen_id = dokumen.map((e) => e._id)
 | 
	
	
		
			
				|  | @@ -59,6 +71,10 @@ exports.create = handleError(async (req, res) => {
 | 
	
		
			
				|  |  |      pelanggaran: pelanggaran_id,
 | 
	
		
			
				|  |  |      keterangan,
 | 
	
		
			
				|  |  |      dokumen: dokumen_id,
 | 
	
		
			
				|  |  | +    berita_acara: dokumenBeritaAcara_id,
 | 
	
		
			
				|  |  | +    tanggal_terima_sanksi,
 | 
	
		
			
				|  |  | +    dokumen_terima_sanksi: dokumenTerimaSanksi_id,
 | 
	
		
			
				|  |  | +    tanggal_akhir_keberatan,
 | 
	
		
			
				|  |  |      masa_berlaku: {
 | 
	
		
			
				|  |  |        from_date,
 | 
	
		
			
				|  |  |        to_date,
 | 
	
	
		
			
				|  | @@ -163,6 +179,62 @@ exports.update = handleError(async (req, res) => {
 | 
	
		
			
				|  |  |    })
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +exports.updatePt = handleError(async (req, res) => {
 | 
	
		
			
				|  |  | +  const { is_pengajuan_keberatan, is_pengajuan_banding, is_dokumen_perbaikan } = req.body
 | 
	
		
			
				|  |  | +  const { sanksi_id } = req.params
 | 
	
		
			
				|  |  | +  const user = req.user
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const isValid = validate(res, req.body, {
 | 
	
		
			
				|  |  | +    is_pengajuan_keberatan: { type: 'boolean', optional: true },
 | 
	
		
			
				|  |  | +    is_pengajuan_banding: { type: 'boolean', optional: true },
 | 
	
		
			
				|  |  | +    is_dokumen_perbaikan: { type: 'boolean', optional: true },
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +  if (!isValid) return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
 | 
	
		
			
				|  |  | +  if (!sanksi) return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  let keterangan = '';
 | 
	
		
			
				|  |  | +  let last_step = '';
 | 
	
		
			
				|  |  | +  if (is_pengajuan_keberatan == true) {
 | 
	
		
			
				|  |  | +    last_step = 'Permohonan Keberatan'
 | 
	
		
			
				|  |  | +    keterangan = 'Menerima Pengajuan Keberatan';
 | 
	
		
			
				|  |  | +  } else if (is_pengajuan_keberatan == false) {
 | 
	
		
			
				|  |  | +    keterangan = 'Membatalkan Pengajuan Keberatan';
 | 
	
		
			
				|  |  | +    last_step = 'Dokumen Perbaikan';
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (is_pengajuan_banding == true) {
 | 
	
		
			
				|  |  | +    last_step = 'Permohonan Banding'
 | 
	
		
			
				|  |  | +    keterangan = 'Menerima Pengajuan Banding';
 | 
	
		
			
				|  |  | +  } else if (is_pengajuan_banding == false) {
 | 
	
		
			
				|  |  | +    keterangan = 'Membatalkan Pengajuan Banding';
 | 
	
		
			
				|  |  | +    last_step = 'Dokumen Perbaikan';
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  await pemantauanModel.create({
 | 
	
		
			
				|  |  | +    laporan: sanksi.laporan._id,
 | 
	
		
			
				|  |  | +    sanksi: sanksi._id,
 | 
	
		
			
				|  |  | +    action: 'UPDATE SANKSI',
 | 
	
		
			
				|  |  | +    pt_id: sanksi.laporan.pt.id,
 | 
	
		
			
				|  |  | +    user: user._id,
 | 
	
		
			
				|  |  | +    keterangan,
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (is_dokumen_perbaikan == true) {
 | 
	
		
			
				|  |  | +    last_step = 'Dokumen Perbaikan';
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  await sanksiModel.updateOne(
 | 
	
		
			
				|  |  | +    { _id: sanksi._id },
 | 
	
		
			
				|  |  | +    { is_pengajuan_keberatan, is_pengajuan_banding, last_step }
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  return response.success(res, {
 | 
	
		
			
				|  |  | +    message: 'Berhasil merubah Sanksi',
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  exports.getAll = handleError(async (req, res) => {
 | 
	
		
			
				|  |  |    const user = req.user
 | 
	
		
			
				|  |  |    const {
 | 
	
	
		
			
				|  | @@ -175,20 +247,26 @@ exports.getAll = handleError(async (req, res) => {
 | 
	
		
			
				|  |  |      delegasi,
 | 
	
		
			
				|  |  |      naikSanksi,
 | 
	
		
			
				|  |  |      turunSanksi,
 | 
	
		
			
				|  |  | +    pengajuan_keberatan
 | 
	
		
			
				|  |  |    } = req.query
 | 
	
		
			
				|  |  |    const where = {}
 | 
	
		
			
				|  |  |    const q = {}
 | 
	
		
			
				|  |  |    if (aktif && aktif === 'false') {
 | 
	
		
			
				|  |  |      where.aktif = false
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +  if (pengajuan_keberatan === 'true') {
 | 
	
		
			
				|  |  | +    where.is_pengajuan_keberatan = true;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    if (keberatan === 'true') {
 | 
	
		
			
				|  |  |      where['pengajuan.keberatan'] = { $exists: true, $ne: null }
 | 
	
		
			
				|  |  | +    where.is_pengajuan_keberatan = true
 | 
	
		
			
				|  |  |      if (jawaban === 'true') {
 | 
	
		
			
				|  |  |        where['jawaban.keberatan'] = { $exists: true, $ne: null }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    if (banding === 'true') {
 | 
	
		
			
				|  |  |      where.banding = true
 | 
	
		
			
				|  |  | +    where.is_pengajuan_banding = true
 | 
	
		
			
				|  |  |      where['pengajuan.keberatan'] = { $exists: true, $ne: null }
 | 
	
		
			
				|  |  |      where['jawaban.keberatan'] = { $exists: true, $ne: null }
 | 
	
		
			
				|  |  |      where['pengajuan.banding'] = { $exists: true, $ne: null }
 | 
	
	
		
			
				|  | @@ -204,7 +282,7 @@ exports.getAll = handleError(async (req, res) => {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    if (perbaikan === 'true') {
 | 
	
		
			
				|  |  | -    where['jawaban.banding'] = { $exists: true, $ne: null }
 | 
	
		
			
				|  |  | +    where.$or = [{ 'jawaban.banding': { $exists: true, $ne: null } }, { is_pengajuan_keberatan: false }, { is_pengajuan_banding: false }]
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    if (delegasi === 'true') {
 | 
	
		
			
				|  |  |      where.delegasi = true
 |