浏览代码

commit lagi

yazid138 3 年之前
父节点
当前提交
f99d7c97d6
共有 5 个文件被更改,包括 86 次插入28 次删除
  1. 1 1
      controller/dokumen.controller.js
  2. 59 24
      controller/graph.controller.js
  3. 1 1
      routes/v1/graph.routes.js
  4. 1 2
      routes/v1/index.js
  5. 24 0
      utils/excel.js

+ 1 - 1
controller/dokumen.controller.js

@@ -5,5 +5,5 @@ exports.getDokumen = handleError(async (req, res) => {
   const { id } = req.params
   const data = await chunkModel.findById(id)
   res.header('Content-Type', data.type)
-  return res.end(new Buffer(data.data, 'base64'))
+  return res.end(Buffer.from(data.data))
 })

+ 59 - 24
controller/graph.controller.js

@@ -1,12 +1,13 @@
 const handleError = require('../utils/handleError')
+const excel = require('../utils/excel')
 const response = require('../utils/responseHandler')
 const {
   cekBanyakDataLaporan,
   dataLaporanAggregate,
 } = require('../utils/cekData')
-const XLSX = require('xlsx')
 const laporanModel = require('../model/laporan.model')
 const moment = require('moment')
+const { addDokumen } = require('../utils/dokumenFunction')
 
 exports.laporan = handleError(async (req, res) => {
   const user = req.user
@@ -227,9 +228,45 @@ exports.laporan = handleError(async (req, res) => {
   })
 })
 
-exports.exel = handleError(async (req, res) => {
-  // const user = req.user
-  const laporan = await laporanModel.find()
+exports.excel = handleError(async (req, res) => {
+  const user = req.user
+  const w = {}
+  const date = new Date()
+  switch (user.role.id) {
+    case 2020:
+      w.role_asal = 'dikti'
+      break
+    case 2021:
+      w.role_asal = 'lldikti'
+      w['pt.pembina.id'] = user.lembaga.id
+      break
+    default:
+      return response.error(res, {
+        message: 'Forbidden',
+        code: 403,
+      })
+  }
+
+  const { tahun } = req.query
+
+  berdasarkan_tahun = {
+    $and: [
+      {
+        createdAt: {
+          $gte: new Date(`${tahun || date.getFullYear()}`),
+        },
+      },
+      {
+        createdAt: {
+          $lt: new Date(`${parseInt(tahun) + 1 || date.getFullYear() + 1}`),
+        },
+      },
+    ],
+  }
+
+  const laporan = await laporanModel
+    .find({ ...w, ...berdasarkan_tahun })
+    .populate('user')
 
   const data = laporan.map((value) => ({
     Tanggal: moment(value.createdAt).format('DD-MMMM-YYYY'),
@@ -241,28 +278,26 @@ exports.exel = handleError(async (req, res) => {
       ? 'Ditutup'
       : (value.role_asal === 'dikti' && value.role_data === 'dikti') ||
         (value.role_asal === 'lldikti' && value.role_data === 'lldikti')
-      ? `Ditindaklanjuti ${value.role_asal}`
-      : `Delegasi Ke ${value.role_data}`,
+      ? `Ditindaklanjuti ${value.role_asal === 'dikti' ? 'DIKTI' : 'LLDIKTI'}`
+      : `Delegasi Ke ${value.role_data === 'dikti' ? 'DIKTI' : 'LLDIKTI'}`,
   }))
 
-  const fileName = 'Laporan'
-  let wb = XLSX.utils.book_new()
-  wb.Props = {
-    Title: fileName,
-    Author: 'RISTEK DIKTI',
-    CreatedDate: new Date(),
-  }
-
-  wb.SheetNames.push('Sheet 1')
-
-  let ws = XLSX.utils.json_to_sheet(data)
-  wb.Sheets['Sheet 1'] = ws
+  const buffer = excel.to_excel([
+    {
+      SheetNames: 'delegasi',
+      data,
+    },
+  ])
 
-  const buffer = XLSX.write(wb, { type: 'buffer' })
+  const dokumen = await addDokumen({
+    originalname: req.params.nama_file,
+    buffer,
+    mimetype:
+      'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+  })
 
-  res.header(
-    'Content-Type',
-    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
-  )
-  return res.end(new Buffer(buffer, 'base64'))
+  return response.success(res, {
+    message: 'berhasil membuat exel',
+    data: dokumen,
+  })
 })

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

@@ -2,6 +2,6 @@ const router = require('express').Router()
 const graph = require('../../controller/graph.controller')
 
 router.get('/', graph.laporan)
-router.get('/exel', graph.exel)
+router.get('/:nama_file', graph.excel)
 
 module.exports = router

+ 1 - 2
routes/v1/index.js

@@ -18,7 +18,6 @@ router.use('/pemantauan', auth, require('./pemantauan.routes'))
 router.use('/pt', auth, require('./pt.routes'))
 router.use('/pelanggaran', auth, require('./pelanggaran.routes'))
 router.use('/lembaga', auth, roleId(2020), require('./lembaga.routes'))
-// router.use('/graph', auth, roleId([2020, 2021]), require('./graph.routes'))
-router.use('/graph', require('./graph.routes'))
+router.use('/graph', auth, roleId([2020, 2021]), require('./graph.routes'))
 
 module.exports = router

+ 24 - 0
utils/excel.js

@@ -0,0 +1,24 @@
+const XLSX = require('xlsx')
+
+module.exports.to_excel = (
+  table = [
+    {
+      SheetNames,
+      data: [],
+    },
+  ]
+) => {
+  let wb = XLSX.utils.book_new()
+  wb.Props = {
+    Title: 'Laporan',
+    Author: 'RISTEK DIKTI',
+    CreatedDate: new Date(),
+  }
+
+  table.forEach((e) => {
+    wb.SheetNames.push(e.SheetNames)
+    wb.Sheets[e.SheetNames] = XLSX.utils.json_to_sheet(e.data)
+  })
+
+  return XLSX.write(wb, { type: 'buffer' })
+}