????

Your IP : 3.145.180.18


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.old.js

var router = require('express').Router();
var path = require('path');
// var multer = require('multer');
var moment = require('moment');
// var fs = require('fs');
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 { /*excelPath,*/ 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,
      pagesTotal: 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 = moment.utc(req.query.startDate1, 'DD/MM/YYYY').isValid() 
      ? moment.utc(req.query.startDate1, 'DD/MM/YYYY').toDate() : null;
    var startDate2 = moment.utc(req.query.startDate2, 'DD/MM/YYYY').isValid() 
      ? moment.utc(req.query.startDate2, 'DD/MM/YYYY').toDate() : null;
    var endDate1 = moment.utc(req.query.endDate1, 'DD/MM/YYYY').isValid() 
      ? moment.utc(req.query.endDate1, 'DD/MM/YYYY').toDate() : null;
    var endDate2 = moment.utc(req.query.endDate2, 'DD/MM/YYYY').isValid() 
      ? moment.utc(req.query.endDate2, 'DD/MM/YYYY').toDate() : null;
    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 recordset = await ReportCtrl.reportFiles(obj);
      if (recordset.length) result['recordsTotal'] = result['recordsFiltered'] = recordset[0]['recordsTotal'];
      result.data = recordset;
      res.json(result);
    } else if (req.params.type == 'pdf') {
      let recordset = await ReportCtrl.reportFiles(obj);
      var pdfName = await PDFCtrl.reportFile(recordset);
      if (pdfName) res.download(path.join(exportPath, pdfName));
      else res.status(404).end();
    } else if (req.params.type == 'excel') {
      let recordset = await ReportCtrl.reportFiles(obj);
      var xlsxName = await ExcelCtrl.reportFile(recordset);
      res.download(path.join(exportPath, xlsxName));
    } else if (req.params.type == 'docx') {
      let recordset = await ReportCtrl.reportFiles(obj);
      var docxName = await WordCtrl.reportFile(recordset);
      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 = moment.utc(req.query.issuedDate1, 'DD/MM/YYYY').isValid() 
      ? moment.utc(req.query.issuedDate1, 'DD/MM/YYYY').toDate() : null;
    var issuedDate2 = moment.utc(req.query.issuedDate2, 'DD/MM/YYYY').isValid() 
      ? moment.utc(req.query.issuedDate2, 'DD/MM/YYYY').toDate() : null;
    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;