|  | @@ -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,
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |    )
 |