andifebri 3 years ago
parent
commit
e7c26ccd40

+ 8 - 5
.env.example

@@ -1,7 +1,10 @@
+BASE_URL=
 PORT=
+SECRET=
 
-DB_NAME=
-DB_USER=
-DB_PASSWORD=
-DB_HOST=
-DB_ENGINE=
+MONGO_URL=
+TOKEN=
+
+ROLE_DIKTI_ID=
+ROLE_LLDIKTI_ID=
+ROLE_PT_ID=

+ 148 - 44
controller/laporan.controller.js

@@ -5,11 +5,15 @@ const laporanModel = require('../model/laporan.model')
 const pelanggaranModel = require('../model/pelanggaran.model')
 const pemantauanModel = require('../model/pemantauan.model')
 const { validate } = require('../utils/validation')
+const { notifWA } = require('../utils/notifFunction')
 const { addDokumen, addManyDokumen } = require('../utils/dokumenFunction')
 const userModel = require('../model/user.model')
 const { cekSatuDataLaporan, cekBanyakDataLaporan } = require('../utils/cekData')
 
 exports.create = handleError(async (req, res) => {
+  const user = req.user
+  const files = req.files
+
   const isValid = validate(res, req.body, {
     no_laporan: 'string',
     pt_id: 'string',
@@ -23,12 +27,11 @@ exports.create = handleError(async (req, res) => {
   const pt = await axios.get(
     `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
   )
-  if (!pt)
+  if (pt.length === 0)
     return response.error(res, {
       message: 'pt_id tidak ditemukan',
     })
 
-  const files = req.files
   let dokumen_id = []
   if (files.length) {
     const dokumen = await addManyDokumen(files)
@@ -44,7 +47,6 @@ exports.create = handleError(async (req, res) => {
   if (!pelanggaran.length)
     return response.error(res, { message: 'pelanggaran_id tidak ada' })
 
-  const user = req.user
   let data = {
     no_laporan,
     user: user._id,
@@ -53,6 +55,7 @@ exports.create = handleError(async (req, res) => {
     pelanggaran: pelanggaran_id,
     keterangan,
     role_data: user.role.id === 2020 ? 'dikti' : 'lldikti',
+    level: 2,
   }
 
   data = await laporanModel.create(data)
@@ -71,61 +74,140 @@ exports.create = handleError(async (req, res) => {
   })
 })
 
+// exports.public = handleError(async (req, res) => {
+//   const isValid = validate(res, req.body, {
+//     nama: 'string',
+//     email: 'email',
+//     alamat: 'string',
+//     no_hp: 'string',
+//     no_laporan: 'string',
+//     pt_id: 'string',
+//     pelanggaran_id: 'string',
+//     keterangan: 'string',
+//     is_private: { type: 'string', enum: ['true', 'false'] },
+//   })
+//   if (!isValid) return
+
+//   const {
+//     no_laporan,
+//     pt_id,
+//     keterangan,
+//     nama,
+//     email,
+//     alamat,
+//     no_hp,
+//     is_private,
+//   } = req.body
+//   let { pelanggaran_id } = req.body
+
+//   const pt = await axios.get(
+//     `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
+//   )
+//   if (!pt) {
+//     return response.error(res, {
+//       message: 'pt_id tidak ditemukan',
+//     })
+//   }
+
+//   const { dokumen, foto } = req.files
+//   if (!foto.length) {
+//     return response.error(res, {
+//       message: 'foto harus ada',
+//     })
+//   }
+//   const foto_id = await addDokumen(foto[0])
+//   const user = await userModel.create({
+//     nama,
+//     email,
+//     no_hp,
+//     alamat,
+//     isPublic: true,
+//     isPrivate: is_private === 'true',
+//     foto: foto_id,
+//   })
+//   let dokumen_id = []
+//   if (dokumen?.length) {
+//     const dataDokumen = await addManyDokumen(dokumen)
+//     dokumen_id = dataDokumen.map((e) => e._id)
+//   }
+
+//   pelanggaran_id = pelanggaran_id.split(',')
+//   const pelanggaran = await pelanggaranModel.find({
+//     _id: {
+//       $in: pelanggaran_id,
+//     },
+//   })
+//   if (!pelanggaran.length)
+//     return response.error(res, { message: 'pelanggaran_id tidak ada' })
+
+//   let data = {
+//     no_laporan,
+//     user: user._id,
+//     dokumen: dokumen_id,
+//     pt: pt[0],
+//     pelanggaran: pelanggaran_id,
+//     keterangan,
+//     role_data: 'dikti',
+//   }
+
+//   data = await laporanModel.create(data)
+//   await pemantauanModel.create({
+//     laporan: data._id,
+//     pt_id: pt[0].id,
+//     user: user._id,
+//     keterangan: 'Mengajukan Laporan',
+//     dokumen: dokumen_id,
+//     for_pt: false,
+//   })
+//   await notifWA('d5609c3c-e9e9-4dbe-9a4e-e8fa772d6770', [
+//     { key: '1', value: 'nama', value_text: nama },
+//     { key: '2', value: 'pt', value_text: pt[0].nama },
+//     { key: '3', value: 'keterangan', value_text: keterangan },
+//     { key: '4', value: 'no_laporan', value_text: no_laporan },
+//   ])
+//   return response.success(res, {
+//     message: 'Berhasil menambah laporan',
+//     data,
+//   })
+// })
+
 exports.public = handleError(async (req, res) => {
+  const user = req.user
+  const no_laporan = req.no_laporan
+  let level = req.level
+  const files = req.files
+
   const isValid = validate(res, req.body, {
-    nama: 'string',
-    email: 'email',
-    alamat: 'string',
-    no_hp: 'string',
-    no_laporan: 'string',
     pt_id: 'string',
     pelanggaran_id: 'string',
     keterangan: 'string',
-    is_private: { type: 'string', enum: ['true', 'false'] },
+    // no_verifikasi: 'string',
   })
   if (!isValid) return
 
-  const {
-    no_laporan,
-    pt_id,
-    keterangan,
-    nama,
-    email,
-    alamat,
-    no_hp,
-    is_private,
-  } = req.body
+  const { pt_id, keterangan, no_verifikasi } = req.body
   let { pelanggaran_id } = req.body
+  if (no_verifikasi && user.no_verifikasi !== no_verifikasi) {
+    return response.error(res, {
+      message: 'no_verifikasi tidak sesuai',
+      error: { no_verifikasi: 'No. Verifikasi tidak sesuai' },
+    })
+  } else if (no_verifikasi && user.no_verifikasi === no_verifikasi) {
+    level = 3
+  }
 
   const pt = await axios.get(
     `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
   )
-  if (!pt) {
+  if (pt.length === 0)
     return response.error(res, {
       message: 'pt_id tidak ditemukan',
     })
-  }
 
-  const { dokumen, foto } = req.files
-  if (!foto.length) {
-    return response.error(res, {
-      message: 'foto harus ada',
-    })
-  }
-  const foto_id = await addDokumen(foto[0])
-  const user = await userModel.create({
-    nama,
-    email,
-    no_hp,
-    alamat,
-    isPublic: true,
-    isPrivate: is_private === 'true',
-    foto: foto_id,
-  })
   let dokumen_id = []
-  if (dokumen?.length) {
-    const dataDokumen = await addManyDokumen(dokumen)
-    dokumen_id = dataDokumen.map((e) => e._id)
+  if (files.length) {
+    const dokumen = await addManyDokumen(files)
+    dokumen_id = dokumen.map((e) => e._id)
   }
 
   pelanggaran_id = pelanggaran_id.split(',')
@@ -145,6 +227,7 @@ exports.public = handleError(async (req, res) => {
     pelanggaran: pelanggaran_id,
     keterangan,
     role_data: 'dikti',
+    level,
   }
 
   data = await laporanModel.create(data)
@@ -152,11 +235,24 @@ exports.public = handleError(async (req, res) => {
     laporan: data._id,
     pt_id: pt[0].id,
     user: user._id,
-    keterangan: 'Mengajukan Laporan',
+    keterangan: 'Membuat Laporan',
     dokumen: dokumen_id,
     for_pt: false,
   })
 
+  if (no_verifikasi)
+    await userModel.findByIdAndUpdate(user._id, { verified: true })
+  await notifWA('d5609c3c-e9e9-4dbe-9a4e-e8fa772d6770', [
+    {
+      key: '1',
+      value: 'nama',
+      value_text: user.isPrivate || !user.nama ? 'rahasia' : user.nama,
+    },
+    { key: '2', value: 'pt', value_text: pt[0].nama },
+    { key: '3', value: 'keterangan', value_text: keterangan },
+    { key: '4', value: 'no_laporan', value_text: no_laporan },
+  ])
+
   return response.success(res, {
     message: 'Berhasil menambah laporan',
     data,
@@ -195,7 +291,7 @@ exports.getOne = handleError(async (req, res) => {
   const { id } = req.params
   const user = req.user
   const { aktif } = req.query
-  const where = { }
+  const where = {}
   if (aktif) where.aktif = aktif === 'true'
   const data = await cekSatuDataLaporan(res, user, id, where)
   if (!data) return
@@ -214,15 +310,21 @@ exports.update = handleError(async (req, res) => {
   const isValid = validate(res, req.body, {
     change_role: { type: 'string', optional: true, enum: ['true', 'false'] },
     aktif: { type: 'string', optional: true, enum: ['true', 'false'] },
+    keterangan: 'string',
   })
   if (!isValid) return
 
   const data = {}
   let keterangan = ''
+  let alasan = ''
   const { change_role, aktif } = req.body
+  const keterangan2 = req.body.keterangan
   if (change_role === 'true') {
     data.role_data = user.role.id === 2020 ? 'lldikti' : 'dikti'
-    keterangan = `Delegasi ke ${user.role.id === 2020 ? 'LLDIKTI' : 'DIKTI'}`
+    keterangan = `Laporan didelegasi ke ${
+      user.role.id === 2020 ? 'LLDIKTI' : 'DIKTI'
+    }`
+    alasan = keterangan2
     if (laporan.jadwal) {
       await laporanModel.findByIdAndUpdate(laporan._id, {
         $unset: { jadwal: 1 },
@@ -234,7 +336,8 @@ exports.update = handleError(async (req, res) => {
     if (aktif === 'true') {
       keterangan = 'Laporan dibuka'
     } else {
-      keterangan = 'Laporan ditutup'
+      keterangan = `Laporan ditutup`
+      alasan = keterangan2
     }
   }
 
@@ -245,6 +348,7 @@ exports.update = handleError(async (req, res) => {
       pt_id: laporan.pt.id,
       user: user._id,
       keterangan,
+      alasan,
       for_pt: false,
     })
   }

+ 7 - 0
controller/laporan/evaluasi.controller.js

@@ -49,6 +49,12 @@ exports.add = handleError(async (req, res) => {
       new: true,
     }
   )
+
+  let for_public = true
+  if (laporan.evaluasi.length > 0) {
+    for_public = false
+  }
+
   await pemantauanModel.create({
     laporan: laporan._id,
     user: user._id,
@@ -56,6 +62,7 @@ exports.add = handleError(async (req, res) => {
     keterangan: 'Melakukan evaluasi',
     dokumen: dokumen_id,
     for_pt: false,
+    for_public,
   })
 
   return response.success(res, {

+ 9 - 1
controller/laporan/jadwal.controller.js

@@ -36,15 +36,23 @@ exports.update = handleError(async (req, res) => {
     }
   )
 
+  let message = 'Mengatur Jadwal Pemeriksaan'
+  let for_public = true
+  if (laporan.jadwal) {
+    message = 'Mengubah Jadwal Pemeriksaan'
+    for_public = false
+  }
+
   await pemantauanModel.create({
     laporan: laporan._id,
     user: user._id,
     pt_id: laporan.pt.id,
-    keterangan: 'Mengatur Jadwal Pemeriksaan',
+    keterangan: message,
     jadwal: {
       dari_tanggal,
       sampai_tanggal,
     },
+    for_public,
   })
 
   return response.success(res, {

+ 1 - 1
controller/pemantauan.controller.js

@@ -84,7 +84,7 @@ exports.public = handleError(async (req, res) => {
     })
   }
   const data = await pemantauanModel
-    .find({ laporan })
+    .find({ laporan, for_public: true })
     .populate({ path: 'user', select: 'nama isPublic role' })
     .select('user keterangan laporan sanksi')
     .populate({ path: 'laporan', select: 'no_laporan' })

+ 1 - 0
controller/sanksi.controller.js

@@ -53,6 +53,7 @@ exports.create = handleError(async (req, res) => {
   const data = await sanksiModel.create({
     no_sanksi,
     laporan: laporan._id,
+    user: user._id,
     pelanggaran: pelanggaran_id,
     keterangan,
     dokumen: dokumen_id,

+ 22 - 1
controller/sanksi/banding.controller.js

@@ -6,6 +6,7 @@ const { cekSatuDataSanksi } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
 const { hariKerja } = require('../../utils/hariKerja')
 const pemantauanModel = require('../../model/pemantauan.model')
+const { notifWA } = require('../../utils/notifFunction')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -50,6 +51,15 @@ exports.create = handleError(async (req, res) => {
     keterangan: 'Mengajukan Banding',
     dokumen: dokumen_id,
   })
+  await notifWA('2bbc0080-1187-4213-8017-b6d1d6ec3cbb', [
+    { key: '1', value: 'pt', value_text: sanksi.laporan.pt.nama },
+    {
+      key: '2',
+      value: 'pemberi_sanksi',
+      value_text: `${sanksi.user.nama} - ${sanksi.user.role.nama}`,
+    },
+    { key: '3', value: 'no_sanksi', value_text: sanksi.no_sanksi },
+  ])
   return response.success(res, {
     data,
     message: 'Berhasil menambah pengajuan banding',
@@ -78,6 +88,7 @@ exports.createJawaban = handleError(async (req, res) => {
   }
 
   const { status } = req.body
+
   const data = await sanksiModel.findOneAndUpdate(
     {
       laporan: sanksi.laporan._id,
@@ -96,14 +107,24 @@ exports.createJawaban = handleError(async (req, res) => {
       message: 'banding tidak ada',
     })
   }
+
+  let message = 'Menjawab Pengajuan Banding'
+  let for_public = true
+  if (sanksi.jawaban?.banding) {
+    message = 'Mengubah jawaban Pengajuan Banding'
+    for_public = false
+  }
+
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
     pt_id: sanksi.laporan.pt.id,
     user: user._id,
-    keterangan: 'Menjawab Pengajuan Banding',
+    keterangan: message,
     dokumen: dokumen_id,
+    for_public,
   })
+
   return response.success(res, {
     data,
   })

+ 10 - 1
controller/sanksi/cabutSanksi.controller.js

@@ -94,13 +94,22 @@ exports.createJawaban = handleError(async (req, res) => {
       message: 'cabut_sanksi tidak ada',
     })
   }
+
+  let message = 'Menjawab Pengajuan Pencabutan Sanksi'
+  let for_public = true
+  if (sanksi.jawaban?.cabut_sanksi) {
+    message = 'Mengubah jawaban Pengajuan Pencabutan Sanksi'
+    for_public = false
+  }
+
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
     pt_id: sanksi.laporan.pt.id,
     user: user._id,
-    keterangan: 'Menjawab Pengajuan Pencabutan Sanksi',
+    keterangan: message,
     dokumen: dokumen_id,
+    for_public,
   })
   return response.success(res, {
     data,

+ 22 - 2
controller/sanksi/keberatan.controller.js

@@ -2,10 +2,11 @@ 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 { cekSatuDataSanksi } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
 const { hariKerja } = require('../../utils/hariKerja')
 const pemantauanModel = require('../../model/pemantauan.model')
+const { notifWA } = require('../../utils/notifFunction')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -54,6 +55,15 @@ exports.create = handleError(async (req, res) => {
     keterangan: 'Mengajukan Keberatan',
     dokumen: dokumen_id,
   })
+  await notifWA('8d2d8bfd-4100-4f78-b877-caffded2d56a', [
+    { key: '1', value: 'pt', value_text: sanksi.laporan.pt.nama },
+    {
+      key: '2',
+      value: 'pemberi_sanksi',
+      value_text: `${sanksi.user.nama} - ${sanksi.user.role.nama}`,
+    },
+    { key: '3', value: 'no_sanksi', value_text: sanksi.no_sanksi },
+  ])
   return response.success(res, {
     data,
     message: 'Berhasil menambah keberatan',
@@ -106,14 +116,24 @@ exports.createJawaban = handleError(async (req, res) => {
       message: 'keberatan tidak ada',
     })
   }
+
+  let message = 'Menjawab Pengajuan Keberatan'
+  let for_public = true
+  if (sanksi.jawaban?.keberatan) {
+    message = 'Mengubah jawaban Pengajuan Keberatan'
+    for_public = false
+  }
+
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
     user: user._id,
     pt_id: sanksi.laporan.pt.id,
-    keterangan: 'Menjawab Pengajuan Keberatan',
+    keterangan: message,
     dokumen: dokumen_id,
+    for_public,
   })
+
   return response.success(res, {
     data,
   })

+ 10 - 0
controller/sanksi/perbaikan.controller.js

@@ -5,6 +5,7 @@ const { validate } = require('../../utils/validation')
 const { cekSatuDataSanksi } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
 const pemantauanModel = require('../../model/pemantauan.model')
+const { notifWA } = require('../../utils/notifFunction')
 
 exports.add = handleError(async (req, res) => {
   const user = req.user
@@ -59,6 +60,15 @@ exports.add = handleError(async (req, res) => {
     keterangan: 'Melakukan Perbaikan Dokumen',
     dokumen: dokumen_id,
   })
+  await notifWA('891ee9c7-39f8-416e-af5c-6b3a10e9dbec', [
+    { key: '1', value: 'pt', value_text: sanksi.laporan.pt.nama },
+    {
+      key: '2',
+      value: 'pemberi_sanksi',
+      value_text: `${sanksi.user.nama} - ${sanksi.user.role.nama}`,
+    },
+    { key: '3', value: 'no_sanksi', value_text: sanksi.no_sanksi },
+  ])
   return response.success(res, {
     data,
     message: 'Berhasil menambah Perbaikan',

+ 83 - 5
controller/user.controller.js

@@ -2,17 +2,95 @@ const handleError = require('../utils/handleError')
 const response = require('../utils/responseHandler')
 const userModel = require('../model/user.model')
 const { validate } = require('../utils/validation')
+const { notifWA2 } = require('../utils/notifFunction')
+const axios = require('../utils/axios')
+const { addDokumen } = require('../utils/dokumenFunction')
+const jwt = require('jsonwebtoken')
 
 exports.addUserPublic = handleError(async (req, res) => {
-  req.body.dokumen = req.files
+  const { no_laporan, pt_id, nama, email, no_hp, alamat, is_private } = req.body
   const isValid = validate(res, req.body, {
-    nama: 'string',
-    email: 'string',
+    no_laporan: 'string',
+    pt_id: 'string',
+    // nama: 'string',
+    // email: 'email',
     no_hp: 'string',
-    alamat: 'string',
-    dokumen: { type: 'array', items: 'object' },
+    // alamat: 'string',
+    is_private: { type: 'string', enum: ['true', 'false'] },
   })
   if (!isValid) return
+
+  const no_hp2 =
+    no_hp.substring(0, 1) === '0' ? '62' + no_hp.substring(1) : no_hp
+
+  const pt = await axios.get(
+    `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
+  )
+  if (pt.length === 0)
+    return response.error(res, {
+      message: 'pt_id tidak ditemukan',
+    })
+
+  let foto_id = null
+  const foto = req.file
+  if (foto) {
+    foto_id = await addDokumen(foto)
+  }
+
+  const no_verifikasi = Math.floor(Math.random() * 1000000)
+
+  let level = 1
+  if (
+    no_laporan &&
+    pt_id &&
+    nama &&
+    email &&
+    no_hp &&
+    alamat &&
+    is_private &&
+    foto_id
+  ) {
+    level = 3
+  }
+
+  const user = await userModel.create({
+    nama,
+    email,
+    no_hp,
+    alamat,
+    isPublic: true,
+    isPrivate: is_private === 'true',
+    foto: foto_id,
+    no_verifikasi,
+    verified: false,
+  })
+
+  await notifWA2(
+    '37a9ccba-e1bc-4d02-86e0-3be4c718af2a',
+    { nama: nama || 'rahasia', no_hp: no_hp2 },
+    [
+      { key: '1', value: 'pt', value_text: pt[0].nama },
+      { key: '3', value: 'no_verifikasi', value_text: no_verifikasi },
+      { key: '2', value: 'no_laporan', value_text: no_laporan },
+    ]
+  )
+
+  const accessToken = jwt.sign(
+    { _id: user._id, no_laporan, level },
+    process.env.SECRET,
+    {
+      expiresIn: '30m',
+    }
+  )
+
+  data = {
+    token: `Bearer ${accessToken}`,
+  }
+
+  return response.success(res, {
+    data: data,
+    message: 'Berhasil menambah user',
+  })
 })
 
 exports.get = handleError((req, res) => {

+ 1 - 1
model/laporan.model.js

@@ -14,12 +14,12 @@ module.exports = mongoose.model(
       pt: Object,
       keterangan: String,
       pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
+      level: { type: Number, enum: [1, 2, 3] },
       role_data: {
         type: String,
         enum: ['dikti', 'lldikti'],
         default: 'dikti',
       },
-      // status: String,
       aktif: { type: Boolean, default: true },
       dokumen: [
         {

+ 2 - 0
model/pemantauan.model.js

@@ -14,12 +14,14 @@ module.exports = mongoose.model(
       pt_id: String,
       user: { type: Types.ObjectId, ref: user },
       keterangan: String,
+      alasan: String,
       dokumen: [{ type: Types.ObjectId, ref: dokumen }],
       jadwal: {
         dari_tanggal: Date,
         sampai_tanggal: Date,
       },
       for_pt: { type: Boolean, default: true },
+      for_public: { type: Boolean, default: true },
     },
     { timestamps: true }
   ),

+ 1 - 0
model/sanksi.model.js

@@ -11,6 +11,7 @@ module.exports = mongoose.model(
     {
       no_sanksi: String,
       laporan: { type: Types.ObjectId, unique: true, ref: laporan },
+      user: { type: Types.ObjectId, unique: true, ref: user },
       pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
       keterangan: String,
       aktif: { type: Boolean, default: true },

+ 2 - 0
model/user.model.js

@@ -18,6 +18,8 @@ module.exports = mongoose.model(
     role: Object,
     isPublic: Boolean,
     isPrivate: Boolean,
+    no_verifikasi: String,
+    verified: Boolean,
   }),
   'user'
 )

+ 9 - 1
routes/v1/public.routes.js

@@ -5,15 +5,23 @@ const pelanggaran = require('../../controller/pelanggaran.controller')
 const laporan = require('../../controller/laporan.controller')
 const pemantauan = require('../../controller/pemantauan.controller')
 const handleDokumen = require('../../utils/handleDokumen')
+const auth = require('../../middleware/verifyTokenPublic')
 
 // router.post('/user/add', handleDokumen.array('dokumen'), user.addUserPublic)
 router.get('/pt', pt.public)
 router.get('/pelanggaran', pelanggaran.public)
 router.get('/pemantauan', pemantauan.public)
+// router.post(
+//   '/laporan/create',
+//   handleDokumen.fields([{ name: 'dokumen' }, { name: 'foto', maxCount: 1 }]),
+//   laporan.public
+// )
 router.post(
   '/laporan/create',
-  handleDokumen.fields([{ name: 'dokumen' }, { name: 'foto', maxCount: 1 }]),
+  auth,
+  handleDokumen.array('dokumen'),
   laporan.public
 )
+router.post('/user/create', handleDokumen.single('foto'), user.addUserPublic)
 
 module.exports = router

+ 2 - 0
utils/cekData.js

@@ -88,6 +88,7 @@ exports.cekSatuDataSanksi = async (
     })
     .populate('dokumen')
     .populate('pelanggaran')
+    .populate('user')
     .populate('pengajuan.keberatan.dokumen')
     .populate('jawaban.keberatan.dokumen')
     .populate('pengajuan.banding.dokumen')
@@ -128,6 +129,7 @@ exports.cekBanyakDataSanksi = async (user, where = { banding: false }) => {
       select: 'pt',
       match: w,
     })
+    .populate('user')
     .select('-batas_waktu -aktif -dokumen -pelanggaran')
     .sort({
       createdAt: -1,

+ 1 - 1
utils/handleDokumen.js

@@ -4,6 +4,6 @@ const storage = multer.memoryStorage()
 module.exports = multer({
   storage,
   limits: {
-    fileSize: 10 * 1024 * 1024,
+    fileSize: 15 * 1024 * 1024,
   },
 })