|
|
@@ -1,10 +1,17 @@
|
|
|
-const laporanModel = require('../model/laporan.model')
|
|
|
const sanksiModel = require('../model/sanksi.model')
|
|
|
const pelanggaranModel = require('../model/pelanggaran.model')
|
|
|
+const pengajuanModel = require('../model/pengajuan.model')
|
|
|
const handleError = require('../utils/handleError')
|
|
|
const response = require('../utils/responseHandler')
|
|
|
const { addManyDokumen } = require('../utils/dokumenFunction')
|
|
|
const { validate } = require('../utils/validation')
|
|
|
+const { hariKerja } = require('../utils/hariKerja')
|
|
|
+const {
|
|
|
+ cekSatuDataSanksi,
|
|
|
+ cekSatuDataLaporan,
|
|
|
+ cekBanyakDataPelanggaran,
|
|
|
+ cekBanyakDataSanksi,
|
|
|
+} = require('../utils/cekData')
|
|
|
|
|
|
exports.create = handleError(async (req, res) => {
|
|
|
const { no_sanksi, keterangan } = req.body
|
|
|
@@ -20,53 +27,30 @@ exports.create = handleError(async (req, res) => {
|
|
|
})
|
|
|
if (!isValid) return
|
|
|
|
|
|
- const laporan = await laporanModel.findOne({
|
|
|
- _id: laporan_id,
|
|
|
+ const laporan = await cekSatuDataLaporan(res, user, laporan_id, {
|
|
|
evaluasi: { $exists: true, $ne: [] },
|
|
|
})
|
|
|
+ if (!laporan) return
|
|
|
|
|
|
- if (
|
|
|
- laporan &&
|
|
|
- !(
|
|
|
- (user.role.id === 2021 &&
|
|
|
- laporan.role_data === 'lldikti' &&
|
|
|
- laporan.pt.pembina.id === user.lembaga.id &&
|
|
|
- laporan.aktif === true) ||
|
|
|
- (user.role.id === 2020 &&
|
|
|
- laporan.role_data === 'dikti' &&
|
|
|
- laporan.aktif === true)
|
|
|
- )
|
|
|
- ) {
|
|
|
+ pelanggaran_id = await cekBanyakDataPelanggaran(res, pelanggaran_id)
|
|
|
+ if (!pelanggaran_id) return
|
|
|
+
|
|
|
+ const sanksi = await sanksiModel.findOne({ laporan: laporan_id })
|
|
|
+ if (sanksi) {
|
|
|
return response.error(res, {
|
|
|
- message: 'laporan_id tidak ada',
|
|
|
- code: 404,
|
|
|
+ message: 'Sanksi sudah ada',
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- pelanggaran_id = pelanggaran_id.split(',')
|
|
|
- const pelanggaran = await pelanggaranModel.find({
|
|
|
- _id: {
|
|
|
- $in: pelanggaran_id,
|
|
|
- },
|
|
|
- })
|
|
|
- if (!pelanggaran.length)
|
|
|
- return response.error(res, { message: 'pelanggaran_id tidak ada' })
|
|
|
if (!files.length) {
|
|
|
return response.error(res, {
|
|
|
message: 'dokumen harus ada',
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- const sanksi = await sanksiModel.findOne({ laporan: laporan_id })
|
|
|
- if (sanksi) {
|
|
|
- return response.error(res, {
|
|
|
- message: 'Sanksi sudah ada',
|
|
|
- })
|
|
|
- }
|
|
|
-
|
|
|
const dokumen = await addManyDokumen(files)
|
|
|
const dokumen_id = dokumen.map((e) => e._id)
|
|
|
- let data = await sanksiModel.create({
|
|
|
+ const data = await sanksiModel.create({
|
|
|
no_sanksi,
|
|
|
laporan: laporan._id,
|
|
|
pt: laporan.pt,
|
|
|
@@ -74,6 +58,13 @@ exports.create = handleError(async (req, res) => {
|
|
|
keterangan,
|
|
|
dokumen: dokumen_id,
|
|
|
})
|
|
|
+ await pengajuanModel.create({
|
|
|
+ laporan: laporan._id,
|
|
|
+ sanksi: data._id,
|
|
|
+ batas_waktu: {
|
|
|
+ keberatan: hariKerja(10),
|
|
|
+ },
|
|
|
+ })
|
|
|
return response.success(res, {
|
|
|
message: 'Berhasil membuat Sanksi',
|
|
|
data,
|
|
|
@@ -82,28 +73,7 @@ exports.create = handleError(async (req, res) => {
|
|
|
|
|
|
exports.getAll = handleError(async (req, res) => {
|
|
|
const user = req.user
|
|
|
- let data = await sanksiModel
|
|
|
- .find()
|
|
|
- .populate({
|
|
|
- path: 'laporan',
|
|
|
- select: 'pt role_data aktif',
|
|
|
- })
|
|
|
- .populate('dokumen')
|
|
|
- .populate('pelanggaran')
|
|
|
- if (user.role.id === 2021) {
|
|
|
- data = data.filter(
|
|
|
- (e) =>
|
|
|
- e.laporan.role_data === 'lldikti' &&
|
|
|
- e.laporan.pt.pembina.id === user.lembaga.id &&
|
|
|
- e.laporan.aktif === true
|
|
|
- )
|
|
|
- } else if (user.role.id === 2020) {
|
|
|
- data = data.filter(
|
|
|
- (e) => e.laporan.role_data === 'dikti' && e.laporan.aktif === true
|
|
|
- )
|
|
|
- } else {
|
|
|
- data = data.filter((e) => e.laporan.pt.id === user.lembaga.id)
|
|
|
- }
|
|
|
+ let data = await cekBanyakDataSanksi(user)
|
|
|
return response.success(res, {
|
|
|
message: 'Berhasil ambil data Sanksi',
|
|
|
data,
|
|
|
@@ -113,34 +83,12 @@ exports.getAll = handleError(async (req, res) => {
|
|
|
exports.getOne = handleError(async (req, res) => {
|
|
|
const user = req.user
|
|
|
const { sanksi_id } = req.params
|
|
|
- let data = await sanksiModel
|
|
|
- .findOne({ _id: sanksi_id })
|
|
|
- .populate({
|
|
|
- path: 'laporan',
|
|
|
- select: 'pt role_data aktif',
|
|
|
- })
|
|
|
- .populate('dokumen')
|
|
|
- .populate('pelanggaran')
|
|
|
- if (
|
|
|
- data &&
|
|
|
- !(
|
|
|
- (user.role.id === 2021 &&
|
|
|
- data.laporan.role_data === 'lldikti' &&
|
|
|
- data.laporan.pt.pembina.id === user.lembaga.id &&
|
|
|
- data.laporan.aktif === true) ||
|
|
|
- (user.role.id === 2020 &&
|
|
|
- data.laporan.role_data === 'dikti' &&
|
|
|
- data.laporan.aktif === true) ||
|
|
|
- (user.role.id === 2022 && data.laporan.pt.id === user.lembaga.id)
|
|
|
- )
|
|
|
- ) {
|
|
|
- return response.error(res, {
|
|
|
- message: 'laporan_id tidak ada',
|
|
|
- code: 404,
|
|
|
- })
|
|
|
- }
|
|
|
+
|
|
|
+ const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
|
|
|
+ if (!sanksi) return
|
|
|
+
|
|
|
return response.success(res, {
|
|
|
message: 'Berhasil ambil satu data Sanksi',
|
|
|
- data,
|
|
|
+ data: sanksi,
|
|
|
})
|
|
|
})
|