You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

154 lines
4.7 KiB

const express = require('express');
const multer = require('multer')
const shortid = require('shortid')
const router = express.Router();
const userServeice = require('../services/user')
const fs = require('fs')
const path = require('path');
//------------------------------//
// multer config
//------------------------------//
var imageStorage = multer.diskStorage({
destination: function (req, file, cb) {
//TODO: change address*
cb(null, __dirname + '/../public/images')
},
filename: function (req, file, cb) {
var fileInfo = path.parse(file.originalname)
let fileName = shortid.generate() + Date.now().toString().substring(6) + fileInfo.ext
cb(null, fileName)
}
})
var imageFilter = function (req, file, callback) {
if (!file.originalname.match(/\.(jpg|jpeg|png|PNG|JPEG|)$/i)) {
return callback(new Error('Only image files are allowed!'), false)
}
callback(null, true)
}
var uploadImageConfig = multer({
storage: imageStorage,
fileFilter: imageFilter
})
var uploadImage = uploadImageConfig.single('image')
router.post('/add', uploadImage, function (req, res) {
let flag = false;
let emptyFieldsArray = []
const userInfo = {
firstName: req.body.firstName ? req.body.firstName.trim() : false,
lastName: req.body.lastName ? req.body.lastName.trim() : false,
fatherName: req.body.fatherName ? req.body.fatherName.trim() : false,
codeMelli: req.body.codeMelli ? req.body.codeMelli.trim() : false,
workUnit: req.body.workUnit ? req.body.workUnit.trim() : false,
workUnitCode: req.body.workUnitCode ? req.body.workUnitCode.trim() : false,
address: req.body.address ? req.body.address.trim() : false,
obligationNumber: req.body.obligationNumber ? req.body.obligationNumber.trim() : false,
obligationDate: req.body.obligationDate ? req.body.obligationDate.trim() : false,
requestNumber: req.body.requestNumber ? req.body.requestNumber.trim() : false,
requestDate: req.body.requestDate ? req.body.requestDate.trim() : false,
writtenOrderNumber: req.body.writtenOrderNumber ? req.body.writtenOrderNumber.trim() : false,
writtenOrderDate: req.body.writtenOrderDate ? req.body.writtenOrderDate.trim() : false,
deadline: req.body.deadline ? req.body.deadline.trim() : false,
deadlineUnit: req.body.deadlineUnit ? req.body.deadlineUnit.trim() : 'روز',
healthCenter: req.body.healthCenter ? req.body.healthCenter.trim() : false,
healthCenterCity: req.body.healthCenterCity ? req.body.healthCenterCity.trim() : false,
imageFileName: req.file ? req.file.filename.slice(0 , req.file.filename.indexOf('.')) : false
}
for (const key in userInfo) {
if ((!userInfo[key] || !userInfo[key].trim()) && key !== 'deadlineUnit') {
emptyFieldsArray.push(key)
flag = true
}
}
if (flag) {
if (req.file) {
try {
fs.unlinkSync(__dirname + '/../public/images/' + req.file.filename)
console.log('picture is deleted .....')
console.log('----------------------------')
} catch (err) {
console.log(err);
console.log('picture not deleted .....')
}
}
res.status(412).send({
success: false,
emptyFields: emptyFieldsArray,
error: `پر کردن همه فیلدها الزامی است`
})
} else {
userServeice.addUser(userInfo , req.file.filename)
.then((result) => {
res.status(200).send({
success: true,
user: result
})
})
.catch(err => {
if (err.eText) {
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) {
userServeice.completeForm(req.body.userId)
.then((result) => {
res.status(200).send({
success: true,
link: result
})
})
.catch(err => {
console.log(err);
if (err.eText) {
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.get('/download/:fileName', function (req, res) {
var file = fs.readFileSync(path.join(__dirname + `/../public/files/${req.params.fileName}`), 'binary');
res.setHeader('Content-Length', file.length);
res.write(file, 'binary');
res.end();
});
module.exports = router;