From f7699115409de4e3594210a017b79cf01de80416 Mon Sep 17 00:00:00 2001 From: shoaibalmasi Date: Wed, 31 Mar 2021 19:02:20 +0430 Subject: [PATCH] add image --- routes/users.js | 101 ++++++++++++++++++++++++++++++++++------------- services/user.js | 10 ++++- 2 files changed, 81 insertions(+), 30 deletions(-) diff --git a/routes/users.js b/routes/users.js index a67a197..35b3536 100644 --- a/routes/users.js +++ b/routes/users.js @@ -1,48 +1,93 @@ -var express = require('express'); -var router = express.Router(); +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') -var path = require('path'); +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', function (req, res) { + +router.post('/add', uploadImage, function (req, res) { let flag = false; - let emptyFieldsArray =[] + let emptyFieldsArray = [] + const userInfo = { - firstName: req.body.firstName.trim(), - lastName: req.body.lastName.trim(), - fatherName: req.body.fatherName.trim(), - codeMelli: req.body.codeMelli.trim(), - workUnit: req.body.workUnit.trim(), - workUnitCode: req.body.workUnitCode.trim(), - address: req.body.address.trim(), - obligationNumber: req.body.obligationNumber.trim(), - obligationDate: req.body.obligationDate.trim(), - requestNumber: req.body.requestNumber.trim(), - requestDate: req.body.requestDate.trim(), - writtenOrderNumber: req.body.writtenOrderNumber.trim(), - writtenOrderDate: req.body.writtenOrderDate.trim(), - deadline: req.body.deadline.trim(), - deadlineUnit: req.body.deadlineUnit.trim(), - healthCenter: req.body.healthCenter.trim(), - healthCenterCity: req.body.healthCenterCity.trim() + 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()) { + if ((!userInfo[key] || !userInfo[key].trim()) && key !== 'deadlineUnit') { emptyFieldsArray.push(key) flag = true - + } } - if(flag){ + 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, + emptyFields: emptyFieldsArray, error: `پر کردن همه فیلدها الزامی است` }) - }else { - userServeice.addUser(userInfo) + + } else { + + userServeice.addUser(userInfo , req.file.filename) .then((result) => { res.status(200).send({ success: true, diff --git a/services/user.js b/services/user.js index e63df25..fc62198 100644 --- a/services/user.js +++ b/services/user.js @@ -2,6 +2,7 @@ const models = require('../models') const jalali = require("jalali-moment"); const persianjs = require('persianjs') const docxTemp = require('../tools/docxtemp') +const imageResizer = require('../tools/imageResizer') let methods = {} @@ -35,10 +36,15 @@ let privates = { } -methods.addUser = (userInfo) => { +methods.addUser = (userInfo,imgOriginalName) => { return new Promise((resolve, reject) => { - models.User.create(userInfo).then((user) => { + imageResizer(imgOriginalName) + .then(()=>{ + + models.User.create(userInfo) + }).then((user) => { + resolve(user) }).catch(err => {