|
|
@@ -1,9 +1,10 @@
|
|
|
const sanksiModel = require('../model/sanksi.model')
|
|
|
const handleError = require('../utils/handleError')
|
|
|
const response = require('../utils/responseHandler')
|
|
|
-const { addManyDokumen } = require('../utils/dokumenFunction')
|
|
|
+const { addManyDokumen, addDokumen } = require('../utils/dokumenFunction')
|
|
|
const { validate } = require('../utils/validation')
|
|
|
const pemantauanModel = require('../model/pemantauan.model')
|
|
|
+const pelanggaranModel = require('../model/pelanggaran.model')
|
|
|
const { hariKerja } = require('../utils/hariKerja')
|
|
|
const {
|
|
|
cekSatuDataSanksi,
|
|
|
@@ -14,10 +15,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 { dokumen: files, berita_acara } = req.files
|
|
|
+ const { dokumen: files, berita_acara, dokumen_terima_sanksi } = req.files
|
|
|
const user = req.user
|
|
|
|
|
|
const isValid = validate(res, req.body, {
|
|
|
@@ -26,6 +27,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
|
|
|
|
|
|
@@ -34,8 +37,16 @@ exports.create = handleError(async (req, res) => {
|
|
|
})
|
|
|
if (!laporan) return
|
|
|
|
|
|
- pelanggaran_id = await cekBanyakDataPelanggaran(res, pelanggaran_id)
|
|
|
- if (!pelanggaran_id) return
|
|
|
+ const id_pelanggaran = pelanggaran_id.split(',')
|
|
|
+ const pelanggaran = await pelanggaranModel.find({
|
|
|
+ _id: {
|
|
|
+ $in: id_pelanggaran,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ if (!pelanggaran.length) {
|
|
|
+ return response.error(res, { message: 'pelanggaran_id tidak ada' })
|
|
|
+ }
|
|
|
+ pelanggaran_id = pelanggaran.map((e) => e._id)
|
|
|
|
|
|
const sanksi = await sanksiModel.findOne({ laporan: laporan_id })
|
|
|
if (sanksi) {
|
|
|
@@ -54,6 +65,11 @@ exports.create = handleError(async (req, res) => {
|
|
|
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)
|
|
|
@@ -64,7 +80,11 @@ exports.create = handleError(async (req, res) => {
|
|
|
pelanggaran: pelanggaran_id,
|
|
|
keterangan,
|
|
|
dokumen: dokumen_id,
|
|
|
+ sanksi: pelanggaran.map(e=> ({label: e.label_sanksi, value: e.sanksi, level: e.level_sanksi})),
|
|
|
berita_acara: dokumenBeritaAcara_id,
|
|
|
+ tanggal_terima_sanksi,
|
|
|
+ dokumen_terima_sanksi: dokumenTerimaSanksi_id,
|
|
|
+ tanggal_akhir_keberatan,
|
|
|
masa_berlaku: {
|
|
|
from_date,
|
|
|
to_date,
|
|
|
@@ -161,6 +181,16 @@ exports.update = handleError(async (req, res) => {
|
|
|
user: user._id,
|
|
|
keterangan: 'Melakukan Perubahan Sanksi',
|
|
|
dokumen: dokumen_id,
|
|
|
+ data: {
|
|
|
+ no_sanksi,
|
|
|
+ // pelanggaran: pelanggaran_id,
|
|
|
+ sanksi: sanksiBody,
|
|
|
+ keterangan,
|
|
|
+ masa_berlaku: {
|
|
|
+ from_date,
|
|
|
+ to_date,
|
|
|
+ },
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
return response.success(res, {
|
|
|
@@ -169,6 +199,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 {
|
|
|
@@ -181,20 +267,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 }
|
|
|
@@ -210,16 +302,16 @@ 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
|
|
|
}
|
|
|
if (naikSanksi === 'true') {
|
|
|
- q.level_sanksi = { $in: [1, 2] }
|
|
|
+ where['sanksi.level'] = { $in: [1, 2] }
|
|
|
}
|
|
|
if (turunSanksi === 'true') {
|
|
|
- q.level_sanksi = { $in: [2, 3] }
|
|
|
+ where['sanksi.level'] = { $in: [2, 3] }
|
|
|
}
|
|
|
const data = await cekBanyakDataSanksi(user, where, q)
|
|
|
return response.success(res, {
|
|
|
@@ -262,7 +354,7 @@ exports.getOne = handleError(async (req, res) => {
|
|
|
exports.editTmt = handleError(async (req, res) => {
|
|
|
const user = req.user
|
|
|
const { id } = req.params
|
|
|
- const { from_date, to_date } = req.body
|
|
|
+ const { from_date, to_date, no_surat } = req.body
|
|
|
const files = req.files
|
|
|
|
|
|
const sanksi = await cekSatuDataSanksi(res, user, id)
|
|
|
@@ -271,6 +363,7 @@ exports.editTmt = handleError(async (req, res) => {
|
|
|
const isValid = validate(res, req.body, {
|
|
|
from_date: { type: 'date', convert: true },
|
|
|
to_date: { type: 'date', convert: true },
|
|
|
+ no_surat: 'string',
|
|
|
})
|
|
|
if (!isValid) return
|
|
|
|
|
|
@@ -288,7 +381,7 @@ exports.editTmt = handleError(async (req, res) => {
|
|
|
from_date,
|
|
|
to_date,
|
|
|
},
|
|
|
- 'pengajuan.update_tmt': { dokumen: dokumen_id },
|
|
|
+ 'pengajuan.update_tmt': { no_surat, dokumen: dokumen_id },
|
|
|
})
|
|
|
|
|
|
await pemantauanModel.create({
|
|
|
@@ -305,3 +398,49 @@ exports.editTmt = handleError(async (req, res) => {
|
|
|
data,
|
|
|
})
|
|
|
})
|
|
|
+
|
|
|
+exports.addPesertaPleno = handleError(async (req, res) => {
|
|
|
+ const isValid = validate(res, req.body, {
|
|
|
+ laporan_id: 'string',
|
|
|
+ nama: 'string',
|
|
|
+ })
|
|
|
+ if (!isValid) return
|
|
|
+
|
|
|
+ const { laporan_id, nama } = req.body
|
|
|
+
|
|
|
+ const laporan = await laporanModel.findOne({
|
|
|
+ _id: laporan_id,
|
|
|
+ // sanksi: {
|
|
|
+ // $eq: null,
|
|
|
+ // $exists: false
|
|
|
+ // }
|
|
|
+ })
|
|
|
+ if (!laporan) return response.error(res, {
|
|
|
+ code: 404,
|
|
|
+ message: 'laporan_id tidak ada'
|
|
|
+ })
|
|
|
+
|
|
|
+ const file = req.file
|
|
|
+ if (!file) {
|
|
|
+ return response.error(res, {
|
|
|
+ message: 'ttd harus ada',
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const dokumen = await addDokumen(file)
|
|
|
+
|
|
|
+ await laporanModel.findOneAndUpdate(
|
|
|
+ { _id: laporan._id },
|
|
|
+ {
|
|
|
+ $push: {
|
|
|
+ peserta_penetapan_sanksi: {
|
|
|
+ nama,
|
|
|
+ ttd: dokumen.id
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
+ return response.success(res, {
|
|
|
+ message: 'Berhasil tambah peserta pleno',
|
|
|
+ })
|
|
|
+})
|