andi 3 жил өмнө
parent
commit
4ca0170ff7

+ 2 - 1
controller/log.controller.js

@@ -5,7 +5,7 @@ const { validate } = require('../utils/validation')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
-  const { aktivitas, os, ipv4 } = req.body
+  const { aktivitas, os, ipv4, menu } = req.body
 
   const isValid = validate(res, req.body, {
     aktivitas: 'string',
@@ -19,6 +19,7 @@ exports.create = handleError(async (req, res) => {
     aktivitas,
     os,
     ipv4,
+    menu,
   })
 
   return response.success(res, {

+ 68 - 0
controller/pengunjung.controller.js

@@ -0,0 +1,68 @@
+const pengunjungModel = require('../model/pengunjung.model')
+const handleError = require('../utils/handleError')
+const response = require('../utils/responseHandler')
+const { validate } = require('../utils/validation')
+
+exports.create = handleError(async (req, res) => {
+  const { os, ipv4, location } = req.body
+  const isValid = validate(res, req.body, {
+    os: 'string',
+    ipv4: 'string',
+    location: {
+      $$type: 'object',
+      country: 'string',
+      region: 'string',
+      city: 'string',
+      lat: 'number',
+      lon: 'number',
+      timezone: 'string',
+    },
+  })
+  if (!isValid) return
+
+  await pengunjungModel.create({ os, ipv4, location })
+
+  return response.success(res, {
+    message: 'data pengunjung berhasil dibuat',
+  })
+})
+
+exports.getPengunjung = handleError(async (req, res) => {
+  const { tahun } = req.query
+
+  let date = {}
+  if (tahun) {
+    date = {
+      $expr: {
+        $eq: [
+          { $year: '$createdAt' },
+          parseInt(tahun) || new Date().getFullYear(),
+        ],
+      },
+    }
+  }
+
+  const pengunjung = await pengunjungModel.aggregate([
+    { $match: date },
+    {
+      $group: {
+        _id: {
+          bulan: {
+            $month: '$createdAt',
+          },
+          tahun: {
+            $year: '$createdAt',
+          },
+        },
+        jumlah_pengunjung: {
+          $sum: 1,
+        },
+      },
+    },
+  ])
+
+  return response.success(res, {
+    message: 'data pengunjung',
+    data: pengunjung,
+  })
+})

+ 4 - 6
controller/sanksi.controller.js

@@ -99,15 +99,13 @@ exports.getAll = handleError(async (req, res) => {
       where['jawaban.banding'] = { $exists: true, $ne: null }
     }
   } else if (cabutSanksi === 'true') {
-    where['pengajuan.cabut_sanksi'] = { $exists: true, $ne: null }
+    where.perbaikan = { $exists: true, $ne: [] }
     if (jawaban === 'true') {
-      where['jawaban.cabut_sanksi'] = { $exists: true, $ne: null }
+      where['pengajuan.cabut_sanksi'] = { $exists: true, $ne: null }
+      // where['jawaban.cabut_sanksi'] = { $exists: true, $ne: null }
     }
   } else if (perbaikan === 'true') {
-    where.$or = [
-      { 'jawaban.cabut_sanksi': { $exists: true, $ne: null } },
-      { 'jawaban.banding': { $exists: true, $ne: null } },
-    ]
+    where['jawaban.banding'] = { $exists: true, $ne: null }
   }
   const data = await cekBanyakDataSanksi(user, where)
   return response.success(res, {

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

@@ -5,9 +5,6 @@ const { validate } = require('../../utils/validation')
 const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
 const pemantauanModel = require('../../model/pemantauan.model')
-const logModel = require('../../model/log.model')
-const ip = require('ip')
-const osValue = require('../../utils/osValue')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -29,6 +26,7 @@ exports.create = handleError(async (req, res) => {
     {
       laporan: sanksi.laporan._id,
       _id: sanksi._id,
+      perbaikan: { $exists: true, $ne: [] },
       ['pengajuan.cabut_sanksi']: { $exists: false, $eq: null },
     },
     {

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

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

+ 21 - 16
controller/user.controller.js

@@ -15,15 +15,12 @@ exports.addUserPublic = handleError(async (req, res) => {
     pt_id: 'string',
     // nama: 'string',
     // email: 'email',
-    no_hp: 'string',
+    // no_hp: 'string',
     // 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}`
   )
@@ -38,7 +35,12 @@ exports.addUserPublic = handleError(async (req, res) => {
     foto_id = await addDokumen(foto)
   }
 
-  const no_verifikasi = Math.floor(Math.random() * 1000000)
+  let no_hp2 = null
+  let no_verifikasi = null
+  if (no_hp) {
+    no_hp2 = no_hp.substring(0, 1) === '0' ? '62' + no_hp.substring(1) : no_hp
+    no_verifikasi = Math.floor(Math.random() * 1000000)
+  }
 
   let level = 1
   if (
@@ -66,15 +68,18 @@ exports.addUserPublic = handleError(async (req, res) => {
     verified: false,
   })
 
-  const notif = await notifWA2(
-    TEMPLATE_VERIFIKASI,
-    { 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 },
-    ]
-  )
+  let notif = null
+  if (no_hp) {
+    notif = await notifWA2(
+      TEMPLATE_VERIFIKASI,
+      { 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(
     {
@@ -90,11 +95,11 @@ exports.addUserPublic = handleError(async (req, res) => {
 
   data = {
     token: `Bearer ${accessToken}`,
-    no_hp_aktif: notif[0].status == 'success' ? true : false,
+    no_hp_aktif: no_hp && notif[0].status == 'success' ? true : false,
   }
 
   return response.success(res, {
-    data: data,
+    data,
     message: 'Berhasil menambah user',
   })
 })

+ 1 - 0
model/log.model.js

@@ -10,6 +10,7 @@ module.exports = mongoose.model(
         type: Types.ObjectId,
         ref: user,
       },
+      menu: {type:String},
       aktivitas: { type: String },
       os: { type: String },
       ipv4: { type: String },

+ 23 - 0
model/pengunjung.model.js

@@ -0,0 +1,23 @@
+const mongoose = require('mongoose')
+const user = require('./user.model')
+const { Schema, Types } = mongoose
+
+module.exports = mongoose.model(
+  'Pengunjung',
+  new Schema(
+    {
+      os: { type: String },
+      ipv4: { type: String },
+      location: {
+        country: { type: String },
+        region: { type: String },
+        city: { type: String },
+        lat: { type: Number },
+        lon: { type: Number },
+        timezone: { type: String },
+      },
+    },
+    { timestamps: true }
+  ),
+  'pengunjung'
+)

+ 1 - 0
routes/v1/index.js

@@ -22,5 +22,6 @@ router.use('/lembaga', auth, roleId([2020, 2023]), require('./lembaga.routes'))
 router.use('/graph', require('./graph.routes'))
 router.use('/log', require('./log.routes'))
 router.use('/auto', verify, require('./auto.routes'))
+router.use('/pengunjung', require('./pengunjung.routes'))
 
 module.exports = router

+ 2 - 2
routes/v1/log.routes.js

@@ -3,7 +3,7 @@ const log = require('../../controller/log.controller')
 const auth = require('../../middleware/verifyToken')
 const roleId = require('../../middleware/role')
 
-router.post('/', auth, roleId([2020, 2021, 2023]), log.create)
-router.get('/', auth, roleId(2023), log.all)
+router.post('/', auth, log.create)
+router.get('/', auth, roleId([2020, 2021, 2023]), log.all)
 
 module.exports = router

+ 8 - 0
routes/v1/pengunjung.routes.js

@@ -0,0 +1,8 @@
+const router = require('express').Router()
+const pengunjung = require('../../controller/pengunjung.controller')
+const auth = require('../../middleware/verifyToken')
+
+router.post('/create', pengunjung.create)
+router.get('/', auth, pengunjung.getPengunjung)
+
+module.exports = router

+ 1 - 1
routes/v1/pt.routes.js

@@ -2,7 +2,7 @@ const router = require('express').Router()
 const pt = require('../../controller/pt.controller')
 const roleId = require('../../middleware/role')
 
-router.get('/', roleId([2020, 2021, 2022, 2023]), pt.getAll)
+router.get('/', pt.getAll)
 router.get('/:id', roleId([2020, 2021, 2023]), pt.getOne)
 
 module.exports = router

+ 3 - 3
routes/v1/sanksi/index.js

@@ -5,12 +5,12 @@ const roleId = require('../../../middleware/role')
 
 router.post(
   '/create/:laporan_id',
-  roleId([2020, 2021]),
+  roleId([2020, 2021, 2023]),
   handleDokumen.array('dokumen'),
   sanksi.create
 )
-router.get('/', roleId([2020, 2021, 2022, 2023]), sanksi.getAll)
-router.get('/:sanksi_id', roleId([2020, 2021, 2022, 2023]), sanksi.getOne)
+router.get('/', sanksi.getAll)
+router.get('/:sanksi_id', sanksi.getOne)
 
 router.use('/keberatan', require('./keberatan.routes'))
 router.use('/banding', require('./banding.routes'))