|
|
@@ -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,
|
|
|
+ })
|
|
|
})
|