|
|
@@ -395,100 +395,109 @@ exports.laporanSelesai = handleError(async (req, res) => {
|
|
|
})
|
|
|
|
|
|
exports.jumlahStatusLaporan = handleError(async (req, res) => {
|
|
|
- const pembina = await laporanModel.distinct('pt.pembina.nama')
|
|
|
+ let dataPembina = await laporanModel.find()
|
|
|
+
|
|
|
+ dataPembina = [
|
|
|
+ ...new Set(
|
|
|
+ dataPembina.map((e) => `${e.pt.pembina.id};${e.pt.pembina.nama}`)
|
|
|
+ ),
|
|
|
+ ]
|
|
|
+ dataPembina = dataPembina.map((e) => ({
|
|
|
+ id: e.split(';')[0],
|
|
|
+ name: e.split(';')[1],
|
|
|
+ }))
|
|
|
|
|
|
let data = await Promise.all(
|
|
|
- pembina.map(async (e) => {
|
|
|
+ dataPembina.map(async (e) => {
|
|
|
return {
|
|
|
- [e]: {
|
|
|
- jumlah_jadwal_evaluasi: await laporanModel
|
|
|
+ pembina: e,
|
|
|
+ jumlah_jadwal_evaluasi: await laporanModel
|
|
|
+ .find({
|
|
|
+ jadwal: {
|
|
|
+ $ne: null,
|
|
|
+ $exists: true,
|
|
|
+ },
|
|
|
+ 'pt.pembina.id': e.id,
|
|
|
+ })
|
|
|
+ .count(),
|
|
|
+ jumlah_pemeriksaan: await laporanModel
|
|
|
+ .find({
|
|
|
+ evaluasi: {
|
|
|
+ $ne: [],
|
|
|
+ $exists: true,
|
|
|
+ },
|
|
|
+ 'pt.pembina.id': e.id,
|
|
|
+ })
|
|
|
+ .count(),
|
|
|
+ jumlah_sanksi: await laporanModel
|
|
|
+ .find({
|
|
|
+ sanksi: {
|
|
|
+ $ne: null,
|
|
|
+ $exists: true,
|
|
|
+ },
|
|
|
+ 'pt.pembina.id': e.id,
|
|
|
+ })
|
|
|
+ .count(),
|
|
|
+ jumlah_keberatan: (
|
|
|
+ await sanksiModel
|
|
|
+ .find({
|
|
|
+ 'pengajuan.keberatan': {
|
|
|
+ $ne: null,
|
|
|
+ $exists: true,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ .populate({
|
|
|
+ path: 'laporan',
|
|
|
+ match: {
|
|
|
+ 'pt.pembina.id': e.id,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ ).filter((e) => e.laporan != null).length,
|
|
|
+ jumlah_banding: (
|
|
|
+ await sanksiModel
|
|
|
.find({
|
|
|
- jadwal: {
|
|
|
+ 'pengajuan.banding': {
|
|
|
$ne: null,
|
|
|
$exists: true,
|
|
|
},
|
|
|
- 'pt.pembina.nama': e,
|
|
|
})
|
|
|
- .count(),
|
|
|
- jumlah_pemeriksaan: await laporanModel
|
|
|
+ .populate({
|
|
|
+ path: 'laporan',
|
|
|
+ match: {
|
|
|
+ 'pt.pembina.id': e.id,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ ).filter((e) => e.laporan != null).length,
|
|
|
+ jumlah_pemantauan_perbaikan: (
|
|
|
+ await sanksiModel
|
|
|
.find({
|
|
|
- evaluasi: {
|
|
|
+ perbaikan: {
|
|
|
$ne: [],
|
|
|
$exists: true,
|
|
|
},
|
|
|
- 'pt.pembina.nama': e,
|
|
|
})
|
|
|
- .count(),
|
|
|
- jumlah_sanksi: await laporanModel
|
|
|
+ .populate({
|
|
|
+ path: 'laporan',
|
|
|
+ match: {
|
|
|
+ 'pt.pembina.id': e.id,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ ).filter((e) => e.laporan != null).length,
|
|
|
+ jumlah_pencabutan_sanksi: (
|
|
|
+ await sanksiModel
|
|
|
.find({
|
|
|
- sanksi: {
|
|
|
+ 'pengajuan.cabut_sanksi': {
|
|
|
$ne: null,
|
|
|
$exists: true,
|
|
|
},
|
|
|
- 'pt.pembina.nama': e,
|
|
|
})
|
|
|
- .count(),
|
|
|
- jumlah_keberatan: (
|
|
|
- await sanksiModel
|
|
|
- .find({
|
|
|
- 'pengajuan.keberatan': {
|
|
|
- $ne: null,
|
|
|
- $exists: true,
|
|
|
- },
|
|
|
- })
|
|
|
- .populate({
|
|
|
- path: 'laporan',
|
|
|
- match: {
|
|
|
- 'pt.pembina.nama': e,
|
|
|
- },
|
|
|
- })
|
|
|
- ).filter((e) => e.laporan != null).length,
|
|
|
- jumlah_banding: (
|
|
|
- await sanksiModel
|
|
|
- .find({
|
|
|
- 'pengajuan.banding': {
|
|
|
- $ne: null,
|
|
|
- $exists: true,
|
|
|
- },
|
|
|
- })
|
|
|
- .populate({
|
|
|
- path: 'laporan',
|
|
|
- match: {
|
|
|
- 'pt.pembina.nama': e,
|
|
|
- },
|
|
|
- })
|
|
|
- ).filter((e) => e.laporan != null).length,
|
|
|
- jumlah_pemantauan_perbaikan: (
|
|
|
- await sanksiModel
|
|
|
- .find({
|
|
|
- perbaikan: {
|
|
|
- $ne: [],
|
|
|
- $exists: true,
|
|
|
- },
|
|
|
- })
|
|
|
- .populate({
|
|
|
- path: 'laporan',
|
|
|
- match: {
|
|
|
- 'pt.pembina.nama': e,
|
|
|
- },
|
|
|
- })
|
|
|
- ).filter((e) => e.laporan != null).length,
|
|
|
- jumlah_pencabutan_sanksi: (
|
|
|
- await sanksiModel
|
|
|
- .find({
|
|
|
- 'pengajuan.cabut_sanksi': {
|
|
|
- $ne: null,
|
|
|
- $exists: true,
|
|
|
- },
|
|
|
- })
|
|
|
- .populate({
|
|
|
- path: 'laporan',
|
|
|
- match: {
|
|
|
- 'pt.pembina.nama': e,
|
|
|
- },
|
|
|
- })
|
|
|
- ).filter((e) => e.laporan != null).length,
|
|
|
- },
|
|
|
+ .populate({
|
|
|
+ path: 'laporan',
|
|
|
+ match: {
|
|
|
+ 'pt.pembina.id': e.id,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ ).filter((e) => e.laporan != null).length,
|
|
|
}
|
|
|
})
|
|
|
)
|