|  | @@ -0,0 +1,63 @@
 | 
	
		
			
				|  |  | +const handleError = require('../../utils/handleError')
 | 
	
		
			
				|  |  | +const sanksiModel = require('../../model/sanksi.model')
 | 
	
		
			
				|  |  | +const { addManyDokumen } = require('../../utils/dokumenFunction')
 | 
	
		
			
				|  |  | +const { validate } = require('../../utils/validation')
 | 
	
		
			
				|  |  | +const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/cekData')
 | 
	
		
			
				|  |  | +const response = require('../../utils/responseHandler')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +exports.add = handleError(async (req, res) => {
 | 
	
		
			
				|  |  | +  const user = req.user
 | 
	
		
			
				|  |  | +  const { laporan_id, sanksi_id } = req.query
 | 
	
		
			
				|  |  | +  if (!laporan_id || !sanksi_id) {
 | 
	
		
			
				|  |  | +    return response.error(res, {
 | 
	
		
			
				|  |  | +      message: 'query laporan_id atau sanksi_id harus ada',
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const laporan = await cekSatuDataLaporan(res, user, laporan_id)
 | 
	
		
			
				|  |  | +  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
 | 
	
		
			
				|  |  | +  if (!laporan || !sanksi) return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const isValid = validate(res, req.body, {
 | 
	
		
			
				|  |  | +    keterangan: 'string',
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +  if (!isValid) return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const files = req.files
 | 
	
		
			
				|  |  | +  if (!files?.length) {
 | 
	
		
			
				|  |  | +    return response.error(res, {
 | 
	
		
			
				|  |  | +      message: 'dokumen harus ada',
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  const dokumen = await addManyDokumen(files)
 | 
	
		
			
				|  |  | +  const dokumen_id = dokumen.map((e) => e._id)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const { keterangan } = req.body
 | 
	
		
			
				|  |  | +  const data = await sanksiModel.findOneAndUpdate(
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      laporan: laporan._id,
 | 
	
		
			
				|  |  | +      _id: sanksi._id,
 | 
	
		
			
				|  |  | +      $or: [
 | 
	
		
			
				|  |  | +        { ['pengajuan.banding']: { $exists: true, $ne: null } },
 | 
	
		
			
				|  |  | +        { ['pengajuan.cabut_sanksi']: { $exists: true, $ne: null } },
 | 
	
		
			
				|  |  | +      ],
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +      $push: {
 | 
	
		
			
				|  |  | +        perbaikan: {
 | 
	
		
			
				|  |  | +          keterangan,
 | 
	
		
			
				|  |  | +          dokumen: dokumen_id,
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  )
 | 
	
		
			
				|  |  | +  if (!data) {
 | 
	
		
			
				|  |  | +    return response.error(res, {
 | 
	
		
			
				|  |  | +      message: 'Pengajuan banding atau cabut sanksi tidak ada',
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  return response.success(res, {
 | 
	
		
			
				|  |  | +    data,
 | 
	
		
			
				|  |  | +    message: 'Berhasil menambah Perbaikan',
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +})
 |