????

Your IP : 3.144.125.201


Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/routes/
Upload File :
Current File : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/routes/baocao.js

var router = require('express').Router();
var path = require('path');
const { toDate } = require('../utils');
const ReportCtrl = require('../controllers/baocao/ReportController').create();
const ExcelCtrl = require('../controllers/baocao/ExcelController.js');
const WordCtrl = require('../controllers/baocao/WordController');
const PDFCtrl = require('../controllers/baocao/PDFController');
var { permit, useLayout } = require('../controllers/middleware');
var { exportPath } = require('../appconfig');

//Báo cáo phông
router.get('/phong', permit(401), useLayout, async function (req, res, _next) {
  res.render('baocao/phong.eta', {
    title: 'Báo cáo phông'
  })
});
router.get('/phong/:type', permit(401), async function (req, res, _next) {
  var group = req.query.group || null;
  var fondCode = req.query.fondCode || null;
  try {
    var data = await ReportCtrl.getFondToReport(group, fondCode);
    if (req.params.type == 'json') { res.json({ data: data }); }
    else if (req.params.type == 'pdf') {
      var pdfName = await PDFCtrl.reportFond(data);
      if (pdfName) res.download(path.join(exportPath, pdfName));
      else res.status(404).end();
    }
    else if (req.params.type == 'docx') {
      var docxName = await WordCtrl.reportFond(data);
      res.download(path.join(exportPath, docxName));
    }
    else if (req.params.type == 'excel') {
      var xlsxName = await ExcelCtrl.reportFond(data);
      res.download(path.join(exportPath, xlsxName));
    } else { res.status(404).end() }
  } catch (err) { console.log(err); res.status(400).send('Không thể truy cập trang'); }

});
//Báo cáo hồ sơ
router.get('/hoso', permit(402), useLayout, function (req, res, _next) {
  res.render('baocao/hoso.eta', {
    title: 'Báo cáo mục lục hồ sơ'
  });
});
router.get('/hoso/:type', permit(402), async function (req, res, _next) {
  try {
    var result = {
      draw: parseInt(req.query.draw) || 0,
      recordsTotal: 0,
      recordsFiltered: 0,
      data: []
    }
    var boxNumber1 = parseInt(req.query.boxNumber1) || null;
    var boxNumber2 = parseInt(req.query.boxNumber2) || null;
    var fileNumber1 = parseInt(req.query.fileNumber1) || null;
    var fileNumber2 = parseInt(req.query.fileNumber2) || null;
    var startDate1 = toDate(req.query.startDate1);
    var startDate2 = toDate(req.query.startDate2);
    var endDate1 = toDate(req.query.endDate1);
    var endDate2 = toDate(req.query.endDate2);
    var obj = {};
    obj['jobState'] = parseInt(req.query.jobState || 1);
    if (req.query.fondCode) obj['fondCode'] = req.query.fondCode;
    if (boxNumber1) obj['boxNumber1'] = boxNumber1;
    if (boxNumber2) obj['boxNumber2'] = boxNumber2;
    if (fileNumber1) obj['fileNumber1'] = fileNumber1;
    if (fileNumber2) obj['fileNumber2'] = fileNumber2;
    if (startDate1) obj['startDate1'] = startDate1;
    if (startDate2) obj['startDate2'] = startDate2;
    if (endDate1) obj['endDate1'] = endDate1;
    if (endDate2) obj['endDate2'] = endDate2;
    if (req.params.type == 'json') {
      if (req.query.length) {
        obj['start'] = parseInt(req.query.start) || 0;
        obj['length'] = parseInt(req.query.length);
      }
      let [data, [{ recordsTotal }]] = await ReportCtrl.reportFiles(obj);
      result.data = data;
      result['recordsTotal'] = result['recordsFiltered'] = recordsTotal;
      res.json(result);
    } else if (req.params.type == 'pdf') {
      let [data] = await ReportCtrl.reportFiles(obj);
      var pdfName = await PDFCtrl.reportFile(data);
      if (pdfName) res.download(path.join(exportPath, pdfName));
      else res.status(404).end();
    } else if (req.params.type == 'excel') {
      let [data] = await ReportCtrl.reportFiles(obj);
      var xlsxName = await ExcelCtrl.reportFile(data);
      res.download(path.join(exportPath, xlsxName));
    } else if (req.params.type == 'docx') {
      let [data] = await ReportCtrl.reportFiles(obj);
      var docxName = await WordCtrl.reportFile(data);
      res.download(path.join(exportPath, docxName));
    } else { res.status(404).end() }
  } catch (err) { console.log(err.stack); res.status(400).send(err.message || err) }
});
//Báo cáo văn bản
router.get('/vanban', permit(403), useLayout, function (req, res, _next) {
  res.render('baocao/vanban.eta', {
    title: 'Báo cáo mục lục văn bản'
  });
});
router.get('/vanban/:type', permit(403), async function (req, res, _next) {
  try {
    var result = {
      draw: parseInt(req.query.draw) || 0,
      recordsTotal: 0,
      recordsFiltered: 0,
      data: []
    }
    var boxNumber1 = parseInt(req.query.boxNumber1) || null;
    var boxNumber2 = parseInt(req.query.boxNumber2) || null;
    var fileNumber1 = parseInt(req.query.fileNumber1) || null;
    var fileNumber2 = parseInt(req.query.fileNumber2) || null;
    var issuedDate1 = toDate(req.query.issuedDate1);
    var issuedDate2 = toDate(req.query.issuedDate2);
    var obj = {};
    if (req.query.state) obj['state'] = parseInt(req.query.state) || null;
    if (req.query.fondCode) obj['fondCode'] = req.query.fondCode || null;
    if (boxNumber1) obj['boxNumber1'] = boxNumber1;
    if (boxNumber2) obj['boxNumber2'] = boxNumber2;
    if (fileNumber1) obj['fileNumber1'] = fileNumber1;
    if (fileNumber2) obj['fileNumber2'] = fileNumber2;
    if (issuedDate1) obj['issuedDate1'] = issuedDate1;
    if (issuedDate2) obj['issuedDate2'] = issuedDate2;
    if (req.params.type == 'json') {
      if (req.query.length) {
        obj['start'] = parseInt(req.query.start) || 0;
        obj['length'] = parseInt(req.query.length);
      }
      let recordset = await ReportCtrl.reportDocuments(obj);
      if (recordset.length) result['recordsTotal'] = result['recordsFiltered'] = recordset[0]['recordsTotal'];
      result.data = recordset;
      res.json(result);
    } else if (req.params.type == 'pdf') {
      let docs = await ReportCtrl.reportDocuments(obj);
      let pdfName = await PDFCtrl.reportDoc(docs);
      if (pdfName) res.download(path.join(exportPath, pdfName));
      else res.status(404).end();
    } else if (req.params.type == 'excel') {
      let docs = await ReportCtrl.reportDocuments(obj);
      let xlsxName = await ExcelCtrl.reportDocument(docs);
      res.download(path.join(exportPath, xlsxName));
    } else if (req.params.type == 'docx') {
      let docs = await ReportCtrl.reportDocuments(obj);
      let docxName = await WordCtrl.reportDoc(docs);
      res.download(path.join(exportPath, docxName));
    } else { res.status(404).end() }
  } catch (err) { console.log(err.stack); res.status(400).send(err.message || err) }
});
module.exports = router;