add validation

master
shoaibalmasi 4 years ago
parent 9a7853dc82
commit 7f54a7f12a
  1. 93
      routes/users.js
  2. 24
      services/user.js
  3. BIN
      template/Hform4.docx
  4. 17
      tools/docxtemp.js

@ -6,46 +6,68 @@ var path = require('path');
router.post('/add', function (req, res) { router.post('/add', function (req, res) {
let flag = false;
let emptyFieldsArray =[]
const userInfo = { const userInfo = {
firstName: req.body.firstName, firstName: req.body.firstName.trim(),
lastName: req.body.lastName, lastName: req.body.lastName.trim(),
fatherName: req.body.fatherName, fatherName: req.body.fatherName.trim(),
codeMelli: req.body.codeMelli, codeMelli: req.body.codeMelli.trim(),
workUnit: req.body.workUnit, workUnit: req.body.workUnit.trim(),
workUnitCode: req.body.workUnitCode, workUnitCode: req.body.workUnitCode.trim(),
address: req.body.address, address: req.body.address.trim(),
obligationNumber: req.body.obligationNumber, obligationNumber: req.body.obligationNumber.trim(),
obligationDate: req.body.obligationDate, obligationDate: req.body.obligationDate.trim(),
requestNumber: req.body.requestNumber, requestNumber: req.body.requestNumber.trim(),
requestDate: req.body.requestDate, requestDate: req.body.requestDate.trim(),
writtenOrderNumber: req.body.writtenOrderNumber, writtenOrderNumber: req.body.writtenOrderNumber.trim(),
writtenOrderDate: req.body.writtenOrderDate, writtenOrderDate: req.body.writtenOrderDate.trim(),
deadline: req.body.deadline deadline: req.body.deadline.trim(),
deadlineUnit: req.body.deadlineUnit.trim(),
healthCenter: req.body.healthCenter.trim(),
healthCenterCity: req.body.healthCenterCity.trim()
} }
userServeice.addUser(userInfo) for (const key in userInfo) {
.then((result) => { if (!userInfo[key] || !userInfo[key].trim()) {
res.status(200).send({ emptyFieldsArray.push(key)
success: true, flag = true
user: result
}) }
}
if(flag){
res.status(406).send({
success: false,
emptyFields : emptyFieldsArray,
error: `پر کردن همه فیلدها الزامی است`
}) })
.catch(err => { }else {
if (err.eText) { userServeice.addUser(userInfo)
if (typeof err.eText !== 'string') { .then((result) => {
err.eText = err.eText.toString() res.status(200).send({
} success: true,
res.status(err.eCode).send({ user: result
success: false,
error: err.eText
}) })
} else { })
res.status(500).send({ .catch(err => {
success: false, if (err.eText) {
error: err.toString() if (typeof err.eText !== 'string') {
}) err.eText = err.eText.toString()
} }
res.status(err.eCode).send({
success: false,
error: err.eText
})
} else {
res.status(500).send({
success: false,
error: err.toString()
})
}
})
}
})
}); });
router.post('/complete/form', function (req, res) { router.post('/complete/form', function (req, res) {
@ -57,6 +79,7 @@ router.post('/complete/form', function (req, res) {
}) })
}) })
.catch(err => { .catch(err => {
console.log(err);
if (err.eText) { if (err.eText) {
if (typeof err.eText !== 'string') { if (typeof err.eText !== 'string') {
err.eText = err.eText.toString() err.eText = err.eText.toString()

@ -1,5 +1,6 @@
const models = require('../models') const models = require('../models')
const jalali = require("jalali-moment"); const jalali = require("jalali-moment");
const persianjs = require('persianjs')
const docxTemp = require('../tools/docxtemp') const docxTemp = require('../tools/docxtemp')
@ -56,11 +57,26 @@ methods.completeForm =(userId)=>{
.then(user=>{ .then(user=>{
let userInfo = user let userInfo = user
userInfo.fullName = user.firstName + ' ' + user.lastName userInfo.fullName = user.firstName + ' ' + user.lastName
userInfo.deadlineAndUnit = user.deadline + ' ' + user.deadlineUnit
userInfo.obligationDate = jalali( user.obligationDate, 'YYYY/MM/DD').locale('fa').format('YYYY/MM/DD') userInfo.codeMelli = persianjs(user.codeMelli).englishNumber().toString();
userInfo.requestDate = jalali( user.requestDate, 'YYYY/MM/DD').locale('fa').format('YYYY/MM/DD') userInfo.workUnitCode = persianJs(user.workUnitCode).englishNumber().toString();
userInfo.writtenOrderDate = jalali( user.writtenOrderDate, 'YYYY/MM/DD').locale('fa').format('YYYY/MM/DD') userInfo.obligationNumber = persianJs(user.obligationNumber).englishNumber().toString();
userInfo.requestNumber = persianJs(user.requestNumber).englishNumber().toString();
userInfo.writtenOrderNumber = persianJs(user.writtenOrderNumber).englishNumber().toString();
userInfo.deadline = persianJs(user.deadline).englishNumber().toString();
userInfo.deadlineAndUnit = userInfo.deadline + ' ' + userInfo.deadlineUnit
userInfo.obligationDate = jalali( user.obligationDate, 'YYYY/MM/DD').locale('fa').format('DD/MM/YYYY')
userInfo.requestDate = jalali( user.requestDate, 'YYYY/MM/DD').locale('fa').format('DD/MM/YYYY')
userInfo.writtenOrderDate = jalali( user.writtenOrderDate, 'YYYY/MM/DD').locale('fa').format('DD/MM/YYYY')
userInfo.obligationDate = persianJs(user.obligationDate).englishNumber().toString();
userInfo.requestDate = persianJs(user.requestDate).englishNumber().toString();
userInfo.writtenOrderDate = persianJs(user.writtenOrderDate).englishNumber().toString();
return docxTemp(userInfo, userInfo.fileName) return docxTemp(userInfo, userInfo.fileName)
}).then(link=>{ }).then(link=>{

Binary file not shown.

@ -30,8 +30,16 @@ function errorHandler(error) {
throw error; throw error;
} }
module.exports = function (userInfo, fileName) { module.exports = function (templateInfo, fileName) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
for (const key in templateInfo) {
if (!templateInfo[key]) {
throw({
eCode: 406,
eText: 'empty fields'
})
}
}
let content = fs.readFileSync(path.resolve(__dirname, `../template/${fileName}`), 'binary'); let content = fs.readFileSync(path.resolve(__dirname, `../template/${fileName}`), 'binary');
let zip = new PizZip(content); let zip = new PizZip(content);
let doc; let doc;
@ -39,10 +47,11 @@ module.exports = function (userInfo, fileName) {
try { try {
doc = new Docxtemplater(zip); doc = new Docxtemplater(zip);
} catch (error) { } catch (error) {
errorHandler(error); errorHandler(error);
} }
doc.setData(userInfo); doc.setData(templateInfo);
try { try {
doc.render() doc.render()
@ -53,8 +62,8 @@ module.exports = function (userInfo, fileName) {
let buf = doc.getZip().generate({ let buf = doc.getZip().generate({
type: 'nodebuffer' type: 'nodebuffer'
}); });
fs.writeFileSync(path.resolve(__dirname, `../public/files/${userInfo.firstName}-${userInfo.lastName}-${fileName}`), buf); fs.writeFileSync(path.resolve(__dirname, `../public/files/${templateInfo.firstName}-${templateInfo.lastName}-${fileName}`), buf);
resolve(`http://localhost:3000/users/download/${userInfo.firstName}-${userInfo.lastName}-${fileName}`) resolve(`http://localhost:3000/users/download/${templateInfo.firstName}-${templateInfo.lastName}-${fileName}`)
.catch(err => { .catch(err => {
reject({ reject({

Loading…
Cancel
Save