|  | @@ -0,0 +1,104 @@
 | 
	
		
			
				|  |  | +const handleError = require('../utils/handleError')
 | 
	
		
			
				|  |  | +const response = require('../utils/responseHandler')
 | 
	
		
			
				|  |  | +const { notifWA } = require('../utils/notifFunction')
 | 
	
		
			
				|  |  | +const sanksiModel = require('../model/sanksi.model')
 | 
	
		
			
				|  |  | +const { TEMPLATE_KEBERATAN, TEMPLATE_BANDING } = require('../utils/constanta')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +exports.keberatan = handleError(async (req, res) => {
 | 
	
		
			
				|  |  | +  const dataSanksi = await sanksiModel
 | 
	
		
			
				|  |  | +    .find({
 | 
	
		
			
				|  |  | +      'batas_waktu.keberatan': {
 | 
	
		
			
				|  |  | +        $lt: new Date().toISOString(),
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      'batas_waktu.jawaban_keberatan': {
 | 
	
		
			
				|  |  | +        $exists: false,
 | 
	
		
			
				|  |  | +        $eq: null,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +    .populate('user')
 | 
	
		
			
				|  |  | +    .populate('laporan')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (!dataSanksi.length) {
 | 
	
		
			
				|  |  | +    return response.success(res, {
 | 
	
		
			
				|  |  | +      message: 'Tidak ada notifikasi yg dikirim',
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Promise.all(
 | 
	
		
			
				|  |  | +    dataSanksi.map(
 | 
	
		
			
				|  |  | +      async (sanksi) =>
 | 
	
		
			
				|  |  | +        await notifWA(TEMPLATE_KEBERATAN, [
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            key: '1',
 | 
	
		
			
				|  |  | +            value: 'nama_pt',
 | 
	
		
			
				|  |  | +            value_text: sanksi.laporan.pt.nama,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            key: '2',
 | 
	
		
			
				|  |  | +            value: 'pemberi_sanksi',
 | 
	
		
			
				|  |  | +            value_text: sanksi.user.lembaga.nama,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            key: '3',
 | 
	
		
			
				|  |  | +            value: 'no_sanksi',
 | 
	
		
			
				|  |  | +            value_text: sanksi.no_sanksi,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +        ])
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +  )
 | 
	
		
			
				|  |  | +  return response.success(res, {
 | 
	
		
			
				|  |  | +    message: 'Notifikasi berhasil terkirim',
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +exports.banding = handleError(async (req, res) => {
 | 
	
		
			
				|  |  | +  const dataSanksi = await sanksiModel
 | 
	
		
			
				|  |  | +    .find({
 | 
	
		
			
				|  |  | +      'batas_waktu.banding': {
 | 
	
		
			
				|  |  | +        $lt: new Date().toISOString(),
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      'batas_waktu.jawaban_banding': {
 | 
	
		
			
				|  |  | +        $exists: false,
 | 
	
		
			
				|  |  | +        $eq: null,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      'batas_waktu.jawaban_keberatan': {
 | 
	
		
			
				|  |  | +        $exists: true,
 | 
	
		
			
				|  |  | +        $ne: null,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +    .populate('user')
 | 
	
		
			
				|  |  | +    .populate('laporan')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if (!dataSanksi.length) {
 | 
	
		
			
				|  |  | +    return response.success(res, {
 | 
	
		
			
				|  |  | +      message: 'Tidak ada notifikasi yg dikirim',
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Promise.all(
 | 
	
		
			
				|  |  | +    dataSanksi.map(
 | 
	
		
			
				|  |  | +      async (sanksi) =>
 | 
	
		
			
				|  |  | +        await notifWA(TEMPLATE_BANDING, [
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            key: '1',
 | 
	
		
			
				|  |  | +            value: 'nama_pt',
 | 
	
		
			
				|  |  | +            value_text: sanksi.laporan.pt.nama,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            key: '2',
 | 
	
		
			
				|  |  | +            value: 'pemberi_sanksi',
 | 
	
		
			
				|  |  | +            value_text: sanksi.user.lembaga.nama,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            key: '3',
 | 
	
		
			
				|  |  | +            value: 'no_sanksi',
 | 
	
		
			
				|  |  | +            value_text: sanksi.no_sanksi,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +        ])
 | 
	
		
			
				|  |  | +    )
 | 
	
		
			
				|  |  | +  )
 | 
	
		
			
				|  |  | +  return response.success(res, {
 | 
	
		
			
				|  |  | +    message: 'Notifikasi berhasil terkirim',
 | 
	
		
			
				|  |  | +    data: dataSanksi,
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +})
 |