andi 3 anni fa
parent
commit
b024401d74

+ 0 - 9
.env.bak

@@ -1,9 +0,0 @@
-BASE_URL=http://localhost:5000
-PORT=5000
-SECRET=3d3eb3d842f4e595048f1806ca815f8092e29fb6b98a30dff0b8241ad0e6c273
-
-MONGO_URL=mongodb://localhost:27017/ptb-db
-TOKEN_DEVELOPMENT=77aecfec-10ac-3b4f-ab59-3fbfbeed6324
-TOKEN_PRODUCTION=5b62f743-eef2-3370-8c66-6951b2e9c2c5
-
-ENV=production

+ 31 - 0
controller/laporan.controller.js

@@ -367,3 +367,34 @@ exports.update = handleError(async (req, res) => {
     data: update,
   })
 })
+
+exports.jumlahLaporan = handleError(async (req, res) => {
+  const laporan = await laporanModel.aggregate([
+    {
+      $match: {
+        aktif: true,
+      },
+    },
+    {
+      $group: {
+        _id: '$pt.pembina.nama',
+        jumlah_laporan: {
+          $sum: 1,
+        },
+        propinsi: {
+          $addToSet: '$pt.propinsi.nama',
+        },
+      },
+    },
+    {
+      $sort: {
+        _id: 1,
+      },
+    },
+  ])
+
+  return response.success(res, {
+    message: 'Jumlah Laporan',
+    data: laporan,
+  })
+})

+ 78 - 0
controller/pengunjung.controller.js

@@ -59,6 +59,84 @@ exports.getPengunjung = handleError(async (req, res) => {
         },
       },
     },
+    {
+      $sort: {
+        ['_id.bulan']: 1,
+      },
+    },
+  ])
+
+  return response.success(res, {
+    message: 'data pengunjung',
+    data: pengunjung,
+  })
+})
+
+exports.getPengunjungPublic = handleError(async (req, res) => {
+  const { tahun, bulan } = req.query
+
+  let date = {}
+  if (tahun || bulan) {
+    date = {
+      $expr: {
+        $and: [
+          {
+            $eq: [
+              { $year: '$createdAt' },
+              parseInt(tahun) || new Date().getFullYear(),
+            ],
+          },
+          {
+            $eq: [
+              { $month: '$createdAt' },
+              parseInt(bulan) || new Date().getMonth() + 1,
+            ],
+          },
+        ],
+      },
+    }
+  }
+
+  const pengunjung = await pengunjungModel.aggregate([
+    { $match: date },
+    {
+      $group: {
+        _id: {
+          tanggal: {
+            $dayOfMonth: '$createdAt',
+          },
+          bulan: {
+            $month: '$createdAt',
+          },
+          tahun: {
+            $year: '$createdAt',
+          },
+        },
+        jumlah_pengunjung: {
+          $sum: 1,
+        },
+        data_ip: {
+          $addToSet: '$ipv4',
+        },
+      },
+    },
+    {
+      $addFields: {
+        jumlah_pengunjung: {
+          $size: '$data_ip',
+        },
+      },
+    },
+    {
+      $project: {
+        data_ip: 0,
+      },
+    },
+    {
+      $sort: {
+        ['_id.tanggal']: 1,
+      },
+    },
   ])
 
   return response.success(res, {

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

@@ -35,6 +35,10 @@ exports.add = handleError(async (req, res) => {
       laporan: sanksi.laporan._id,
       _id: sanksi._id,
       ['pengajuan.banding']: { $exists: true, $ne: null },
+      ['jawaban.cabut_sanksi']: {
+        $exists: false,
+        $eq: null,
+      },
     },
     {
       $push: {

+ 1 - 0
routes/v1/laporan/index.js

@@ -3,6 +3,7 @@ const laporan = require('../../../controller/laporan.controller')
 const handleDokumen = require('../../../utils/handleDokumen')
 
 router.get('/', laporan.getAll)
+router.get('/jumlah', laporan.jumlahLaporan)
 router.get('/:id', laporan.getOne)
 router.post('/create', handleDokumen.array('dokumen'), laporan.create)
 router.put('/update/:id', laporan.update)

+ 2 - 0
routes/v1/public.routes.js

@@ -6,6 +6,7 @@ const laporan = require('../../controller/laporan.controller')
 const pemantauan = require('../../controller/pemantauan.controller')
 const handleDokumen = require('../../utils/handleDokumen')
 const auth = require('../../middleware/verifyTokenPublic')
+const pengunjung = require('../../controller/pengunjung.controller')
 
 router.get('/pt', pt.public)
 router.get('/pelanggaran', pelanggaran.public)
@@ -18,5 +19,6 @@ router.post(
   laporan.public
 )
 router.post('/user/create', handleDokumen.single('foto'), user.addUserPublic)
+router.get('/pengunjung', pengunjung.getPengunjungPublic)
 
 module.exports = router

+ 5 - 0
utils/cekData.js

@@ -204,6 +204,11 @@ exports.dataLaporanAggregate = async (user, where, aggregate) => {
   const laporan = await laporanModel.aggregate([
     { $match: w },
     { $group: aggregate },
+    {
+      $sort: {
+        ['_id.bulan']: 1,
+      },
+    },
   ])
 
   return laporan