|
|
@@ -444,28 +444,102 @@ exports.jumlahLaporan = handleError(async (req, res) => {
|
|
|
|
|
|
exports.laporanByPembina = handleError(async (req, res) => {
|
|
|
const { idPembina } = req.params
|
|
|
+ const {
|
|
|
+ penjadwalan,
|
|
|
+ pemeriksaa,
|
|
|
+ sanksi,
|
|
|
+ keberatan,
|
|
|
+ banding,
|
|
|
+ perbaikan,
|
|
|
+ cabutSanksi,
|
|
|
+ } = req.query
|
|
|
const user = req.user
|
|
|
+ const where = {}
|
|
|
+ let isLaporan = true
|
|
|
+ let isSanksi = true
|
|
|
+
|
|
|
+ if (penjadwalan === 'true') {
|
|
|
+ where.jadwal = {
|
|
|
+ $exists: true,
|
|
|
+ $ne: null,
|
|
|
+ }
|
|
|
+ isLaporan = true
|
|
|
+ isSanksi = false
|
|
|
+ }
|
|
|
+ if (pemeriksaa === 'true') {
|
|
|
+ where.evaluasi = {
|
|
|
+ $exists: true,
|
|
|
+ $ne: null,
|
|
|
+ $not: {
|
|
|
+ $size: 0,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ isLaporan = true
|
|
|
+ isSanksi = false
|
|
|
+ }
|
|
|
+ if (sanksi === 'true') {
|
|
|
+ where.sanksi = {
|
|
|
+ $exists: true,
|
|
|
+ $ne: null,
|
|
|
+ }
|
|
|
+ isLaporan = false
|
|
|
+ isSanksi = true
|
|
|
+ }
|
|
|
+ if (keberatan === 'true') {
|
|
|
+ where['pengajuan.keberatan'] = { $exists: true, $ne: null }
|
|
|
+ isLaporan = false
|
|
|
+ isSanksi = true
|
|
|
+ }
|
|
|
+ if (banding === 'true') {
|
|
|
+ where.banding = true
|
|
|
+ where['pengajuan.keberatan'] = { $exists: true, $ne: null }
|
|
|
+ where['jawaban.keberatan'] = { $exists: true, $ne: null }
|
|
|
+ where['pengajuan.banding'] = { $exists: true, $ne: null }
|
|
|
+ isLaporan = false
|
|
|
+ isSanksi = true
|
|
|
+ }
|
|
|
+ if (cabutSanksi === 'true') {
|
|
|
+ where.perbaikan = {
|
|
|
+ $exists: true,
|
|
|
+ $ne: null,
|
|
|
+ $not: {
|
|
|
+ $size: 0,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ isLaporan = false
|
|
|
+ isSanksi = true
|
|
|
+ }
|
|
|
+ if (perbaikan === 'true') {
|
|
|
+ where['jawaban.banding'] = { $exists: true, $ne: null }
|
|
|
+ isLaporan = false
|
|
|
+ isSanksi = true
|
|
|
+ }
|
|
|
|
|
|
- const [laporan, sanksi] = await Promise.all([
|
|
|
+ const [laporan, dataSanksi] = await Promise.all([
|
|
|
(async () =>
|
|
|
- await cekBanyakDataLaporan(user, {
|
|
|
- 'pt.pembina.id': idPembina,
|
|
|
- all: true,
|
|
|
- }))(),
|
|
|
+ isLaporan
|
|
|
+ ? await cekBanyakDataLaporan(user, {
|
|
|
+ 'pt.pembina.id': idPembina,
|
|
|
+ all: true,
|
|
|
+ ...where,
|
|
|
+ })
|
|
|
+ : [])(),
|
|
|
(async () =>
|
|
|
- (
|
|
|
- await cekBanyakDataSanksi(
|
|
|
- user,
|
|
|
- { all: true },
|
|
|
- {
|
|
|
- ['pt.pembina.id']: idPembina,
|
|
|
- }
|
|
|
- )
|
|
|
- ).filter((e) => e.laporan != null))(),
|
|
|
+ isSanksi
|
|
|
+ ? (
|
|
|
+ await cekBanyakDataSanksi(
|
|
|
+ user,
|
|
|
+ { all: true, ...where },
|
|
|
+ {
|
|
|
+ ['pt.pembina.id']: idPembina,
|
|
|
+ }
|
|
|
+ )
|
|
|
+ ).filter((e) => e.laporan != null)
|
|
|
+ : [])(),
|
|
|
])
|
|
|
|
|
|
return response.success(res, {
|
|
|
message: 'berhasil get laporan by pembina',
|
|
|
- data: { laporan, sanksi },
|
|
|
+ data: { laporan, sanksi: dataSanksi },
|
|
|
})
|
|
|
})
|